diff --git a/.github/badges/jacoco.svg b/.github/badges/jacoco.svg index cac72e65..691e2087 100644 --- a/.github/badges/jacoco.svg +++ b/.github/badges/jacoco.svg @@ -1 +1 @@ -coverage89% \ No newline at end of file +coverage89% diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index da655e64..5b92e583 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -63,12 +63,12 @@ jobs: echo "coverage = ${{ steps.jacoco.outputs.coverage }}" echo "branch coverage = ${{ steps.jacoco.outputs.branches }}" - - name: Commit the badge (if it changed) - run: | - if [[ `git status --porcelain **/jacoco.svg` ]]; then - git config --global user.name 'mattteochen' - git config --global user.email 'kaiximatteo.chen@mail.polimi.it' - git add -A **/jacoco.svg - git commit -m "[Dev] Autogenerated JaCoCo coverage badge" - git push --force https://mattteochen:${{ secrets.BOT_ACTIONS_KEY }}@github.com/mattteochen/IS23-AM10.git - fi + # - name: Commit the badge (if it changed) + # run: | + # if [[ `git status --porcelain **/jacoco.svg` ]]; then + # git config --global user.name 'mattteochen' + # git config --global user.email 'kaiximatteo.chen@mail.polimi.it' + # git add -A **/jacoco.svg + # git commit -m "[Dev] Autogenerated JaCoCo coverage badge" + # git push --force https://mattteochen:${{ secrets.BOT_ACTIONS_KEY }}@github.com/mattteochen/IS23-AM10.git + # fi diff --git a/.gitignore b/.gitignore index 015e08ae..10be2e2a 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,8 @@ .mtj.tmp/ # Package Files # -*.jar +target/*.jar +!deliverables/is23am10-0.0.1-jar-with-dependencies.jar *.war *.nar *.ear @@ -38,4 +39,4 @@ hs_err_pid* .devcontainer/ Dockerfile -.DS_Store \ No newline at end of file +.DS_Store diff --git a/README.md b/README.md index 8a3cf3d4..e64f7839 100644 --- a/README.md +++ b/README.md @@ -63,26 +63,7 @@ Run the app with the following command line arguments: --- ## Development -Project works fine as a stand-alone Maven project. Can be opened in any IDE, but a Docker container with ready-to-code extensions is also provided. If you want to use it follow these instructions: - -- Open the project with VSCode Developer Docker [Container](https://code.visualstudio.com/docs/devcontainers/containers), hence build the container (for MacOS users `cmd+shift+p` and type "Build Container"). -- There are two options to run tests: - - Use `Java Test Runner` extension: Enable Junit testing with `Java Test Runner` extension that you will find in the tool bar, it will ask you to choose the version to download, select `JUnit Jupiter`. - - Use Maven test runner embedded in the available plugin. - -### Code format -Red Hat auto code formatter is available. Please run `cmd+shift+p` + `Format document with` and select `Red Hat` option before committing. -Universal code format is required to maintain an unique format style. - -You can also enable live format compliance check with the `Checkstyle` [extension](https://marketplace.visualstudio.com/items?itemName=shengchen.vscode-checkstyle). -Configuration: -- `cmd+shift+p` + `Set the Checkstyle Version` -> select `built-in` -- `cmd+shift+p` + `Set the Checkstyle Configuration File` -> select `Google's Style` -`Checkstyle` should live check you code format. - -### Live bug checks -Sonar lint extensions is available (auto enabled) to detect [issues](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarlint-vscode) during the development. -Please follow all the best practices. +Project works fine as a stand-alone Maven project. ### Generate Jacoco test coverage report To generate test coverage report launch JaCoCo with the following command from `/is23am10`: diff --git a/deliverables/coverage/coverage_report.png b/deliverables/coverage/coverage_report.png new file mode 100644 index 00000000..d07b89bb Binary files /dev/null and b/deliverables/coverage/coverage_report.png differ diff --git a/deliverables/coverage/jacoco/index.html b/deliverables/coverage/jacoco/index.html new file mode 100644 index 00000000..ad5f0b30 --- /dev/null +++ b/deliverables/coverage/jacoco/index.html @@ -0,0 +1 @@ +is23am10

is23am10

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total1,280 of 11,18488%219 of 1,14080%2571,0703322,310744911077
it.polimi.is23am10.utils31070269%579462%52123672101243411
it.polimi.is23am10.client.userinterface1570%120%19194747131322
it.polimi.is23am10.server.controller14779484%225772%26823825054007
it.polimi.is23am10.client.userinterface.helpers1181,21591%54790%165530248122926
it.polimi.is23am10.client674339%60%71214252715
it.polimi.is23am10.server.model.items.bookshelf6631282%73583%73596031401
it.polimi.is23am10.server.model.factory602,86297%2841293%282613050604104
it.polimi.is23am10.server.model.game5166792%125481%11791115704602
it.polimi.is23am10.server.network.playerconnector508964%11738%1128174951903
it.polimi.is23am10.server.model.score4440590%93981%104338311901
it.polimi.is23am10.utils.config4318180%1083%539168433302
it.polimi.is23am10.server.model.items.board2792197%95585%105559312301
it.polimi.is23am10.server.model.player2514385%1688%53185432201
it.polimi.is23am10.server.network.gamehandler26591%101661%103698202302
it.polimi.is23am10.server.command29693%92573%124578432818
it.polimi.is23am10.server.network.messages29294%562%72758452308
it.polimi.is23am10.server.network.virtualview22993%61266%73535912602
it.polimi.is23am10.server.model.items.card14392%10100%31754331203
it.polimi.is23am10.server12894%4866%4142360802
it.polimi.is23am10.server.model.items.tile9993%990%2132251802
it.polimi.is23am10.server.model.items.scoreblock5989%466%382131501
it.polimi.is23am10.server.model.pattern5993%675%2132180903
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/ANSICodes.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/ANSICodes.html new file mode 100644 index 00000000..963e81ca --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/ANSICodes.html @@ -0,0 +1 @@ +ANSICodes

ANSICodes

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 30%0 of 0n/a111111
ANSICodes()30%n/a111111
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/ANSICodes.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/ANSICodes.java.html new file mode 100644 index 00000000..31414e98 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/ANSICodes.java.html @@ -0,0 +1,78 @@ +ANSICodes.java

ANSICodes.java

package it.polimi.is23am10.client.userinterface.helpers;
+
+public final class ANSICodes {
+
+  // Reset
+  public static final String RESET = "\033[0m";  // Text Reset
+
+  // Regular Colors
+  public static final String BLACK = "\033[0;30m";   // BLACK
+  public static final String RED = "\033[0;31m";     // RED
+  public static final String GREEN = "\033[0;32m";   // GREEN
+  public static final String YELLOW = "\033[0;33m";  // YELLOW
+  public static final String BLUE = "\033[0;34m";    // BLUE
+  public static final String PURPLE = "\033[0;35m";  // PURPLE
+  public static final String CYAN = "\033[0;36m";    // CYAN
+  public static final String WHITE = "\033[0;37m";   // WHITE
+
+  // Bold
+  public static final String BLACK_BOLD = "\033[1;30m";  // BLACK
+  public static final String RED_BOLD = "\033[1;31m";    // RED
+  public static final String GREEN_BOLD = "\033[1;32m";  // GREEN
+  public static final String YELLOW_BOLD = "\033[1;33m"; // YELLOW
+  public static final String BLUE_BOLD = "\033[1;34m";   // BLUE
+  public static final String PURPLE_BOLD = "\033[1;35m"; // PURPLE
+  public static final String CYAN_BOLD = "\033[1;36m";   // CYAN
+  public static final String WHITE_BOLD = "\033[1;37m";  // WHITE
+
+  // Underline
+  public static final String BLACK_UNDERLINED = "\033[4;30m";  // BLACK
+  public static final String RED_UNDERLINED = "\033[4;31m";    // RED
+  public static final String GREEN_UNDERLINED = "\033[4;32m";  // GREEN
+  public static final String YELLOW_UNDERLINED = "\033[4;33m"; // YELLOW
+  public static final String BLUE_UNDERLINED = "\033[4;34m";   // BLUE
+  public static final String PURPLE_UNDERLINED = "\033[4;35m"; // PURPLE
+  public static final String CYAN_UNDERLINED = "\033[4;36m";   // CYAN
+  public static final String WHITE_UNDERLINED = "\033[4;37m";  // WHITE
+
+  // Background
+  public static final String BLACK_BACKGROUND = "\033[40m";  // BLACK
+  public static final String RED_BACKGROUND = "\033[41m";    // RED
+  public static final String GREEN_BACKGROUND = "\033[42m";  // GREEN
+  public static final String YELLOW_BACKGROUND = "\033[43m"; // YELLOW
+  public static final String BLUE_BACKGROUND = "\033[44m";   // BLUE
+  public static final String PURPLE_BACKGROUND = "\033[45m"; // PURPLE
+  public static final String CYAN_BACKGROUND = "\033[46m";   // CYAN
+  public static final String WHITE_BACKGROUND = "\033[47m";  // WHITE
+
+  // High Intensity
+  public static final String BLACK_BRIGHT = "\033[0;90m";  // BLACK
+  public static final String RED_BRIGHT = "\033[0;91m";    // RED
+  public static final String GREEN_BRIGHT = "\033[0;92m";  // GREEN
+  public static final String YELLOW_BRIGHT = "\033[0;93m"; // YELLOW
+  public static final String BLUE_BRIGHT = "\033[0;94m";   // BLUE
+  public static final String PURPLE_BRIGHT = "\033[0;95m"; // PURPLE
+  public static final String CYAN_BRIGHT = "\033[0;96m";   // CYAN
+  public static final String WHITE_BRIGHT = "\033[0;97m";  // WHITE
+
+  // Bold High Intensity
+  public static final String BLACK_BOLD_BRIGHT = "\033[1;90m"; // BLACK
+  public static final String RED_BOLD_BRIGHT = "\033[1;91m";   // RED
+  public static final String GREEN_BOLD_BRIGHT = "\033[1;92m"; // GREEN
+  public static final String YELLOW_BOLD_BRIGHT = "\033[1;93m";// YELLOW
+  public static final String BLUE_BOLD_BRIGHT = "\033[1;94m";  // BLUE
+  public static final String PURPLE_BOLD_BRIGHT = "\033[1;95m";// PURPLE
+  public static final String CYAN_BOLD_BRIGHT = "\033[1;96m";  // CYAN
+  public static final String WHITE_BOLD_BRIGHT = "\033[1;97m"; // WHITE
+
+  // High Intensity backgrounds
+  public static final String BLACK_BACKGROUND_BRIGHT = "\033[0;100m";// BLACK
+  public static final String RED_BACKGROUND_BRIGHT = "\033[0;101m";// RED
+  public static final String GREEN_BACKGROUND_BRIGHT = "\033[0;102m";// GREEN
+  public static final String YELLOW_BACKGROUND_BRIGHT = "\033[0;103m";// YELLOW
+  public static final String BLUE_BACKGROUND_BRIGHT = "\033[0;104m";// BLUE
+  public static final String PURPLE_BACKGROUND_BRIGHT = "\033[0;105m"; // PURPLE
+  public static final String CYAN_BACKGROUND_BRIGHT = "\033[0;106m";  // CYAN
+  public static final String WHITE_BACKGROUND_BRIGHT = "\033[0;107m";   // WHITE
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CLIStrings.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CLIStrings.html new file mode 100644 index 00000000..e825a256 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CLIStrings.html @@ -0,0 +1 @@ +CLIStrings

CLIStrings

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 13397%0 of 0n/a1212212
CLIStrings()30%n/a111111
static {...}130100%n/a0102101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CLIStrings.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CLIStrings.java.html new file mode 100644 index 00000000..960cb054 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CLIStrings.java.html @@ -0,0 +1,110 @@ +CLIStrings.java

CLIStrings.java

package it.polimi.is23am10.client.userinterface.helpers;
+
+import java.util.Map;
+
+/**
+ * An helper class containing all the strings to display
+ * to the user through UserInterface.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class CLIStrings {
+  public final static String welcomeString = 
+    """
+      ███    ███ ██    ██     ███████ ██   ██ ███████ ██      ███████ ██ ███████ 
+      ████  ████  ██  ██      ██      ██   ██ ██      ██      ██      ██ ██      
+      ██ ████ ██   ████       ███████ ███████ █████   ██      █████   ██ █████   
+      ██  ██  ██    ██             ██ ██   ██ ██      ██      ██      ██ ██      
+      ██      ██    ██        ███████ ██   ██ ███████ ███████ ██      ██ ███████
+      
+      Politecnico di Milano - Software Engineering Project - Group IS23AM10
+      
+    """;
+  public final static String joinOrCreateString = "Great! Please choose how to proceed. You can create a new game or join an existing one.";
+  public final static String joinExisting = " - To join an existing game run the command `j [idx]` specifying by the index of the game.";
+  public final static String createGame = " - To create a new game run the command `c [2-4]` specifying the number of players.";
+  public final static String noGamesString = "No available game to join at the moment. Please create one.";
+  public final static String insertPlayerNameString = "Insert your player name here:";
+  public final static String listGamesString = "Here a list of the available games. Join one by typing the relative index.";
+  public final static String disconnectedPlayers = " (%d disconnected)";
+  public final static String availableGameString = "[%d] - %d/%d joined%s - GameId: %s";
+  public final static String currentStateString = "Current state of the game:";
+  public final static String gameOverString = "Game is over. Here the leaderboard:";
+  public final static String playerScoreString = "%s - Score: %d";
+  public final static String winnerString = "WINNER: %s";
+  public final static String lastRoundString = "Attention! Someone already completed their Bookshelf: this is last round";
+  public final static String nowPlaying = "Now playing: %s";
+  public final static String moveTilesInviteString =  "Now make your move specifying the `XY` of the tile you want to pick from board (max 3) followed by the column index of the bookshelf you want to put the tile in.";
+  public final static String moveTilesExampleString =  "E.g. `move 12 22 25 A` moves the tiles with coordinates (1,2),(2,5) and (5,7) to the bookshelf first three available spots in your bookshelf column 'A' in that order.";
+  public final static String messageStringReceiver =  "(%s -> You): %s";
+  public final static String messageStringSender =  "(You -> %s): %s";
+  public final static String broadcastMessageString = "(%s -> All): %s";
+  public final static String errorMessage = "(Server -> You): %s";
+  public final static String broadcastErrorString = "(Server -> All): %s";
+  public final static String bottomPaddingBoard = "\t⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛\n\n";
+  public final static String topPaddingBoard = "\t⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛⬛" + ANSICodes.RED_BOLD + "\sY\t" + ANSICodes.RESET;
+  public final static String paddingBookshelf = "\t⬛⬛⬛⬛⬛⬛⬛\t";
+  public final static String indexBoard = ANSICodes.RED_BOLD + "\t\sX" + ANSICodes.RESET + " 0 1 2 3 4 5 6 7 8\t";
+  public final static String verticalBoardIndex = "⬛\s%d\t";
+  public final static String indexBookshelf = "\t\s\sA B C D E\s\t";
+  public final static String boardStatus = "\n\tGame board status:\t\n";
+  public final static String playerIdx = "\tPlayer #%d\t";
+  public final static String blackLargeSquare = "";
+  public final static String tabBlackSquare = "\t⬛";
+  public final static String blackSquareTab = "⬛\t";
+  public final static String tab = "\t";
+  public final static String newLine = "\n";
+  public final static String doubleNewLine = "\n\n";
+  public final static String tableHeader1 = "\t%-" + OutputWrapper.XXS_PADDING + "s | %-" + OutputWrapper.XS_PADDING + "s | %-";
+  public final static String tableHeader2 = "s | %-" + OutputWrapper.M_PADDING + "s | %-" + OutputWrapper.XL_PADDING
+      + "s | %-" + OutputWrapper.XXL_PADDING + "s | %-" + 14 + "s | %-" + OutputWrapper.M_PADDING + "s | %-"
+      + OutputWrapper.S_PADDING + "s ";
+  public final static String N = "No.";
+  public final static String status = "Status";
+  public final static String player = "Player";
+  public final static String role = "Role";
+  public final static String scoreBlockPoints = "Score Block Points";
+  public final static String bookshelfPoints = "Bookshelf Points";
+  public final static String extraPoints = "Extra Points";
+  public final static String totalScore = "Total Score";
+  public final static String privatePoints = "Private Points";
+  public final static String tableLines1 = "\t%-" + OutputWrapper.XXS_PADDING + "s | %-" + OutputWrapper.XS_PADDING + "s | %-";
+  public final static String tableLines2 = "s | %-" + OutputWrapper.M_PADDING + "s | %-" + OutputWrapper.XL_PADDING
+      + "s | %-" + OutputWrapper.XXL_PADDING + "s | %-" + OutputWrapper.L_PADDING + "s | %-" + OutputWrapper.M_PADDING
+      + "s | %-" + OutputWrapper.S_PADDING + "s";
+  public final static String firstPlayer = "First Player";
+  public final static String yourTurn = "Your turn";
+  public final static String tableBody1 = "\t#%-" + OutputWrapper.XXS_PADDING + "d| %-" + OutputWrapper.XS_PADDING + "s | %-";
+  public final static String tableBody2 = "s | %-" + OutputWrapper.M_PADDING + "s | %-" + OutputWrapper.XL_PADDING
+      + "d | %-" + OutputWrapper.XXL_PADDING + "d | %-" + OutputWrapper.L_PADDING + "s | %-" + OutputWrapper.M_PADDING
+      + "d | %-" + OutputWrapper.S_PADDING + "s";
+  public final static String line = "-";
+  public final static String bookshelfError = "Wrong bookshelf coordinates!";
+  public final static String inputError = "Can't read your commands. Please re-join.";
+  public final static String sharedCardsHeader = "\t%-" + OutputWrapper.XL_PADDING + "s | %-";
+  public final static String sharedCardHeaderDescription = "s ";
+  public final static String sharedCardsBody = "\t#%-" + OutputWrapper.XL_PADDING + "d| %-";
+  public final static String sharedCardsBodyDescription = "s ";
+  public final static String idx = "Shared Card Idx.";
+  public final static String description = "Card Description";
+  public final static String privateCardIdx = "\tPrivate Card #%d\t";
+  public final static Map<Integer, String> sharedPatternsDesc = Map.ofEntries(
+    Map.entry(1, "Two groups of four tiles of the same type forming a 2x2 square shape. The tile type of the two squares has to be the same."),
+    Map.entry(2,  "At least two full columns (filled with six tiles), having tiles of all different types."),
+    Map.entry(3, "Four separated groups made of four adjacent tiles of the same type. The tile's type of different groups can be different."),
+    Map.entry(4, "Six separated groups made of two adjacent tiles of the same type. The tile type of different groups can be different."),
+    Map.entry(5, "At least three full columns (filled with six tiles), having maximum three different tile types per column."),
+    Map.entry(6,  "At least two full rows (filled with five tiles), having tiles of all different types."),
+    Map.entry(7, "At least four full rows (filled with five tiles), having maximum three different tile types per row."),
+    Map.entry(8, "The four tiles at the corners of the bookshelf are of the same type."),
+    Map.entry(9, "At least eight tiles of the same type. There are no restrictions concerning their positions."),
+    Map.entry(10,  "Five tiles of the same type, forming an X shape."),
+    Map.entry(11, "Five tiles of the same type forming a diagonal."),
+    Map.entry(12, "Five columns with ascending or descending height. Starting from the first or the last column, the next column has to have one tile more. The tile types are not considered.")
+  );
+  public final static String waitingForPlayers = "Waiting for game to be full before starting, %d/%d joined. GameID: %s"; 
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CommandsBuilder.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CommandsBuilder.html new file mode 100644 index 00000000..ab24df2b --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CommandsBuilder.html @@ -0,0 +1 @@ +CommandsBuilder

CommandsBuilder

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total47 of 470%2 of 20%66101055
sendChatMessageCmd(String)350%20%226611
CommandsBuilder()30%n/a111111
buildCreateGameCmd(String)30%n/a111111
buildJoinGameCmd(String)30%n/a111111
moveTileCmd(String)30%n/a111111
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CommandsBuilder.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CommandsBuilder.java.html new file mode 100644 index 00000000..230e6bc0 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/CommandsBuilder.java.html @@ -0,0 +1,83 @@ +CommandsBuilder.java

CommandsBuilder.java

package it.polimi.is23am10.client.userinterface.helpers;
+
+/**
+ * Game mode string constants.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class CommandsBuilder {
+
+  /**
+   * The command string for creating a game.
+   */
+  public final static String CREATE_GAME = "c";
+
+  /**
+   * The command string for joining a game.
+   */
+  public final static String JOIN_GAME = "j";
+
+  /**
+   * The command string for moving a tile.
+   */
+  public final static String MOVE_TILE = "move";
+
+  /**
+   * The command string for sending a message
+   */
+  public final static String SEND_MESSAGE = "chat";
+
+  /**
+   * Builds a create game command with the specified player name.
+   *
+   * @param pn The player name.
+   * @return The create game command string.
+   */
+  public final static String buildCreateGameCmd(String pn) {
+    return CREATE_GAME + " " + pn;
+  }
+
+  /**
+   * Builds a join game command with the specified game ID.
+   *
+   * @param id The game ID.
+   * @return The join game command string.
+   */
+  public final static String buildJoinGameCmd(String id) {
+    return JOIN_GAME + " " + id;
+  }
+
+  /**
+   * Builds a move tile command with the specified move.
+   *
+   * @param move The move to be performed.
+   * @return The move tile command string.
+   */
+  public final static String moveTileCmd(String move) {
+    return MOVE_TILE + " " + move;
+  }
+
+  /**
+   * Builds a chat message and sends it.
+   * The syntax for the chat messages is the following:
+   * Broadcast: "textContent"
+   * To player: "> playerName textContent"
+   *
+   * @param msg The msg to be sent.
+   * @return The send message command string.
+   */
+  public final static String sendChatMessageCmd(String msg) {
+    if(msg.startsWith(">")){
+      String receiverName = msg.stripLeading().split(" ")[1];
+      int indexToTrim = msg.stripLeading().indexOf(" ", msg.stripLeading().indexOf(" ") + 1);
+      String msgTextTrimmed = msg.stripLeading().trim().substring(indexToTrim);
+      return SEND_MESSAGE + " " + receiverName + " \"" + msgTextTrimmed + "\" ";  
+    }
+    return SEND_MESSAGE + " \"" + msg + "\" ";
+  }
+
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/OutputWrapper$OutputLevel.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/OutputWrapper$OutputLevel.html new file mode 100644 index 00000000..338f48ef --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/OutputWrapper$OutputLevel.html @@ -0,0 +1 @@ +OutputWrapper.OutputLevel

OutputWrapper.OutputLevel

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 39100%0 of 0n/a010701
static {...}39100%n/a010701
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/OutputWrapper.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/OutputWrapper.html new file mode 100644 index 00000000..970c05f6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/OutputWrapper.html @@ -0,0 +1 @@ +OutputWrapper

OutputWrapper

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total57 of 1,00694%3 of 5094%74215191417
getString(OutputWrapper.OutputLevel, String)141856%1150%121401
show(VirtualView, boolean)1279098%14197%122414201
getTimestamp()100%n/a113311
error(String, boolean)0%n/a112211
critical(String, boolean)0%n/a112211
debug(String, boolean)44%1150%121301
setDebug(boolean)0%n/a112211
static {...}52100%n/a0101301
OutputWrapper(boolean)28100%n/a010601
clean()12100%2100%020301
printString(OutputWrapper.OutputLevel, String, boolean)11100%2100%020401
info(String, boolean)100%n/a010201
repeatString(String, int)100%n/a010101
chat(String, boolean)100%n/a010201
warning(String, boolean)100%n/a010201
lambda$show$1(Integer)100%n/a010101
lambda$show$0(VirtualPlayer)100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/OutputWrapper.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/OutputWrapper.java.html new file mode 100644 index 00000000..5587b0e4 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/OutputWrapper.java.html @@ -0,0 +1,466 @@ +OutputWrapper.java

OutputWrapper.java

package it.polimi.is23am10.client.userinterface.helpers;
+
+import java.io.Serializable;
+import java.time.ZoneId;
+import java.time.ZonedDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+
+import it.polimi.is23am10.server.model.items.board.Board;
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.tile.Tile;
+import it.polimi.is23am10.server.model.items.tile.Tile.TileType;
+import it.polimi.is23am10.server.network.virtualview.VirtualPlayer;
+import it.polimi.is23am10.server.network.virtualview.VirtualView;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+
+/**
+ * An helper class with all the methods needed to properly print
+ * CLI messages for client. It wraps System.out enriching it with colors.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class OutputWrapper implements Serializable {
+
+  /**
+   * Enum containing the output types.
+   */
+  public enum OutputLevel {
+    DEBUG,
+    INFO,
+    CHAT,
+    WARNING,
+    ERROR,
+    CRITICAL
+  }
+
+  private final Integer CLEAN_SCREEN_REPS = 100;
+
+  // Variable padding sizes for string formatting.
+  public static final Integer XXS_PADDING = 4;
+  public static final Integer XS_PADDING = 6;
+  public static final Integer S_PADDING = 11;
+  public static final Integer M_PADDING = 12;
+  public static final Integer L_PADDING = 14;
+  public static final Integer XL_PADDING = 16;
+  public static final Integer XXL_PADDING = 18;
+  public static final Integer HUNDRED_PADDING = 100;
+  public static final Integer MIN_PADDING_FOR_NAMES = 15;
+
+  /**
+   * A flag relative to the instance of {@link OutputWrapper}
+   * set with constructor, used for showing or hiding debug lines.
+   */
+  private boolean showDebug = false;
+
+  /**
+   * A map that associates output levels to their string
+   * template. A template uses ANSI codes to display colors.
+   */
+  private final Map<OutputLevel, String> debugTemplates = Map.of(
+      OutputLevel.DEBUG, ANSICodes.BLUE + "🔎 %s" + ANSICodes.RESET,
+      OutputLevel.INFO, "%s",
+      OutputLevel.CHAT, ANSICodes.GREEN + "💬 %s" + ANSICodes.RESET,
+      OutputLevel.WARNING, ANSICodes.YELLOW + "🔶 %s" + ANSICodes.RESET,
+      OutputLevel.ERROR, ANSICodes.RED + "🔴 %s" + ANSICodes.RESET,
+      OutputLevel.CRITICAL, ANSICodes.PURPLE_BACKGROUND + "⚫️ %s" + ANSICodes.RESET);
+
+  /**
+   * A map that associates TileType to their Java source code encoding.
+   * 
+   */
+  private static final Map<TileType, String> emojiMap = Map.of(
+      TileType.BOOK, "📔", // NOTEBOOK WITH DECORATIVE COVER
+      TileType.CAT, "🐈", // CAT
+      TileType.FRAME, "🟧", // ORANGE SQUARE ,
+      TileType.GAME, "🎮", // VIDEO GAME,
+      TileType.PLANT, "🍀", // FOUR LEAF CLOVER
+      TileType.TROPHY, "🏆", // TROPHY
+      TileType.EMPTY, "⬜" // WHITE LARGE SQUARE
+  );
+
+  /**
+   * A map that associates a boolean referring to the online/offline player status
+   * to green/red emoticon. *
+   */
+  private static final Map<Boolean, String> onlineOffline = Map.of(
+      true, "🟢", // ONLINE
+      false, "🔴" // OFFLINE
+  );
+
+  /**
+   * Public constructor for OutputWrapper.
+   *
+   * @param showDebug instance-specific debug flag.
+   */
+  public OutputWrapper(boolean showDebug) {
+    this.showDebug = showDebug;
+  }
+
+  /**
+   * Prints a debug line on console.
+   *
+   * @param string     Debug string to display.
+   * @param cleanFirst Flag to set if message should be preceded by a console
+   *                   clean.
+   */
+  public void debug(String string, boolean cleanFirst) {
+    if (showDebug) {
+      printString(OutputLevel.DEBUG, string, cleanFirst);
+    }
+  }
+
+  /**
+   * Prints a info line on console.
+   *
+   * @param string     Info string to display.
+   * @param cleanFirst Flag to set if message should be preceded by a console
+   *                   clean.
+   */
+  public void info(String string, boolean cleanFirst) {
+    printString(OutputLevel.INFO, string, cleanFirst);
+  }
+
+  /**
+   * Private method to print repeated sequence of char.
+   */
+  private static String repeatString(String str, int count) {
+    return String.join("", Collections.nCopies(count, str));
+  }
+
+  /**
+   * Print the current game status on console.
+   *
+   * @param vw         The virtualView.
+   * @param cleanFirst Flag to set if message should be preceded by a console
+   *                   clean.
+   */
+  public void show(VirtualView vw, boolean cleanFirst) {
+
+    // Print game board.
+    Board gameBoard = vw.getGameBoard();
+
+    // Header.
+    info(CLIStrings.boardStatus, false);
+
+    // Index.
+    info(CLIStrings.indexBoard, false);
+
+    // Top padding.
+    info(CLIStrings.topPaddingBoard, false);
+
+    // Body.
+    for (int i = 0; i < Board.BOARD_GRID_ROWS; i++) {
+      StringBuilder row = new StringBuilder();
+      row.append(CLIStrings.tabBlackSquare);
+      for (int j = 0; j < Board.BOARD_GRID_COLS; j++) {
+        Tile tile = gameBoard.getBoardGrid()[i][j];
+        row.append(emojiMap.get(tile.getType()));
+      }
+      row.append(String.format(CLIStrings.verticalBoardIndex, (i)));
+      info(row.toString(), false);
+    }
+
+    // Bottom padding.
+    info(CLIStrings.bottomPaddingBoard, false);
+
+    List<VirtualPlayer> players = vw.getPlayers();
+
+    int maxLength = Math.max(
+      players.stream()
+        .mapToInt(p -> p.getPlayerName().length())
+        .max().getAsInt(), 
+        MIN_PADDING_FOR_NAMES);
+
+    // Print Player Status.
+    StringBuilder playersStatus = new StringBuilder();
+    // Header.
+    playersStatus
+        .append(String.format(CLIStrings.tableHeader1 + maxLength + CLIStrings.tableHeader2,
+            CLIStrings.N, CLIStrings.status, CLIStrings.player, CLIStrings.role,
+            CLIStrings.bookshelfPoints, CLIStrings.scoreBlockPoints, CLIStrings.privatePoints, CLIStrings.extraPoints,
+            CLIStrings.totalScore))
+        .append(CLIStrings.newLine)
+        .append(
+            String.format(CLIStrings.tableLines1 + maxLength + CLIStrings.tableLines2,
+                repeatString(CLIStrings.line, XXS_PADDING), repeatString(CLIStrings.line, XS_PADDING),
+                repeatString(CLIStrings.line, maxLength), repeatString(CLIStrings.line, M_PADDING),
+                repeatString(CLIStrings.line, XL_PADDING), repeatString(CLIStrings.line, XXL_PADDING),
+                repeatString(CLIStrings.line, L_PADDING), repeatString(CLIStrings.line, M_PADDING),
+                repeatString(CLIStrings.line, S_PADDING)))
+        .append(CLIStrings.newLine);
+
+    // Body.
+    int pos = 1;
+    for (VirtualPlayer vp : players) {
+
+      String status = onlineOffline.get(vp.getIsConnected());
+      String player = vp.getPlayerName();
+      String role = "";
+      String totalScoreString = vp.getScore().getStringTotalScore();
+      int extraPoints = vp.getScore().getExtraPoint();
+      int bookshelfPoints = vp.getScore().getBookshelfPoints();
+      int scoreBlocksPoint = vp.getScore().getScoreBlockPoints();
+      String privatePointsString = (vp.getScore().getPrivatePoints() == -1) ? "?" : vp.getScore().getPrivatePoints().toString();
+
+      if (vw.getFirstPlayer().equals(vp)) {
+        role = CLIStrings.firstPlayer;
+      }
+      if (vw.getActivePlayer().equals(vp)) {
+        role = CLIStrings.yourTurn;
+      }
+
+      playersStatus
+          .append(String.format(CLIStrings.tableBody1 + maxLength + CLIStrings.tableBody2,
+              pos++, status, player, role, bookshelfPoints, scoreBlocksPoint, privatePointsString, extraPoints, totalScoreString))
+          .append(CLIStrings.newLine);
+    }
+    info(playersStatus.toString(), false);
+
+    // Print Bookshelfs.
+    // Name.
+    StringBuilder name = new StringBuilder();
+    name.append(CLIStrings.newLine); // New Line for aesthetic purpose.
+    for (int i = 1; i < players.size() + 1; i++) {
+      name.append(String.format(CLIStrings.playerIdx, pos));
+    }
+    info(name.toString(), false);
+
+    // Index.
+    StringBuilder playerIndex = new StringBuilder();
+    playerIndex.append(CLIStrings.newLine); // New Line for aesthetic purpose.
+    for (VirtualPlayer vp : players) {
+      playerIndex.append(CLIStrings.indexBookshelf);
+    }
+    info(playerIndex.toString(), false);
+
+    // Top padding.
+    StringBuilder topPadding = new StringBuilder();
+    for (VirtualPlayer vp : players) {
+      topPadding.append(CLIStrings.paddingBookshelf);
+    }
+    info(topPadding.toString(), false);
+
+    // Body.
+    for (int i = 0; i < Bookshelf.BOOKSHELF_ROWS; i++) {
+      StringBuilder row = new StringBuilder();
+      for (VirtualPlayer vp : players) {
+        Bookshelf b = vp.getBookshelf();
+        row.append(CLIStrings.tabBlackSquare);
+        for (int j = 0; j < Bookshelf.BOOKSHELF_COLS; j++) {
+          try {
+            row.append(emojiMap.get(b.getBookshelfGridAt(i, j).getType()));
+          } catch (BookshelfGridColIndexOutOfBoundsException
+              | BookshelfGridRowIndexOutOfBoundsException
+              | NullIndexValueException e) {
+            error(CLIStrings.bookshelfError, true);
+          }
+        }
+        row.append(CLIStrings.blackSquareTab);
+      }
+      info(row.toString(), false);
+    }
+
+    // Bottom padding.
+    StringBuilder bottomPadding = new StringBuilder();
+    for (VirtualPlayer vp : players) {
+      bottomPadding.append(CLIStrings.paddingBookshelf);
+    }
+    bottomPadding.append(CLIStrings.doubleNewLine); // New Line for aesthetic purpose.
+    info(bottomPadding.toString(), false);
+
+    // Print Shared Cards descriptions.
+    StringBuilder sharedCards = new StringBuilder();
+
+    maxLength = Math.max(vw.getSharedCards().stream()
+        .mapToInt(p -> CLIStrings.sharedPatternsDesc.get(p).length())
+        .max().getAsInt(),HUNDRED_PADDING);
+
+    // Header.
+    sharedCards
+        .append(String.format(CLIStrings.sharedCardsHeader + maxLength + CLIStrings.sharedCardHeaderDescription ,
+            CLIStrings.idx, CLIStrings.description))
+        .append(CLIStrings.newLine)
+        .append(
+            String
+                .format(String.format(CLIStrings.sharedCardsHeader + maxLength + CLIStrings.sharedCardHeaderDescription,
+                    repeatString(CLIStrings.line, XL_PADDING), repeatString(CLIStrings.line, maxLength))))
+        .append(CLIStrings.newLine);
+
+    // Body.
+    for (Integer sc : vw.getSharedCards()) {
+      sharedCards
+          .append(String.format(CLIStrings.sharedCardsBody + maxLength + CLIStrings.sharedCardsBodyDescription, sc,
+              CLIStrings.sharedPatternsDesc.get(sc)))
+          .append(CLIStrings.newLine);
+    }
+    info(sharedCards.toString(), false);
+
+    // Print Private Cards.
+    StringBuilder privateCards = new StringBuilder();
+    privateCards.append(CLIStrings.newLine); // New Line for esthetic purpose.
+    pos = 1;
+    // Header
+    for (VirtualPlayer vp : players) { 
+      privateCards.append(String.format(CLIStrings.privateCardIdx, pos++));
+    }
+    info(privateCards.toString(), false);
+
+    // Index.
+    StringBuilder bsIndex = new StringBuilder();
+    bsIndex.append(CLIStrings.newLine); // New Line for esthetic purpose.
+    for (VirtualPlayer vp : players) {
+      bsIndex.append(CLIStrings.indexBookshelf);
+    }
+    info(bsIndex.toString(), false); 
+
+    // Top padding.
+    topPadding = new StringBuilder();
+    for (VirtualPlayer vp : players) {
+      topPadding.append(CLIStrings.paddingBookshelf);
+    }
+    info(topPadding.toString(), false);
+
+    // Body.
+    for (int i = 0; i < Bookshelf.BOOKSHELF_ROWS; i++) {
+      StringBuilder row = new StringBuilder();
+      for (VirtualPlayer vp : players) {
+        Bookshelf b = PrivatePatternsHelper.getBookshelf(vp.getPrivateCardIndex());
+        row.append(CLIStrings.tabBlackSquare);
+        for (int j = 0; j < Bookshelf.BOOKSHELF_COLS; j++) {
+          try {
+            row.append(emojiMap.get(b.getBookshelfGridAt(i, j).getType()));
+          } catch (BookshelfGridColIndexOutOfBoundsException
+              | BookshelfGridRowIndexOutOfBoundsException
+              | NullIndexValueException e) {
+            error(CLIStrings.bookshelfError, true);
+          }
+        }
+        row.append(CLIStrings.blackSquareTab);
+      }
+      info(row.toString(), false);
+    }
+
+    // Bottom padding.
+    bottomPadding = new StringBuilder();
+    for (VirtualPlayer vp : players) {
+      bottomPadding.append(CLIStrings.paddingBookshelf);
+    }
+    bottomPadding.append(CLIStrings.doubleNewLine); // New Line for esthetic purpose.
+    info(bottomPadding.toString(), false);
+  }
+
+  /**
+   * Prints a chat message on console.
+   *
+   * @param string     Message string to display.
+   * @param cleanFirst Flag to set if message should be preceded by a console
+   *                   clean.
+   */
+  public void chat(String string, boolean cleanFirst) {
+    printString(OutputLevel.CHAT, string, cleanFirst);
+  }
+
+  /**
+   * Prints a warning line on console.
+   *
+   * @param string     Warning string to display.
+   * @param cleanFirst Flag to set if message should be preceded by a console
+   *                   clean.
+   */
+  public void warning(String string, boolean cleanFirst) {
+    printString(OutputLevel.WARNING, string, cleanFirst);
+  }
+
+  /**
+   * Prints a error line on console.
+   *
+   * @param string     Error string to display.
+   * @param cleanFirst Flag to set if message should be preceded by a console
+   *                   clean.
+   */
+  public void error(String string, boolean cleanFirst) {
+    printString(OutputLevel.ERROR, string, cleanFirst);
+  }
+
+  /**
+   * Prints a critical error line on console.
+   *
+   * @param string     Critical error string to display.
+   * @param cleanFirst Flag to set if message should be preceded by a console
+   *                   clean.
+   */
+  public void critical(String string, boolean cleanFirst) {
+    printString(OutputLevel.CRITICAL, string, cleanFirst);
+  }
+
+  /**
+   * Helper method to call to clean the console.
+   * 
+   */
+  public void clean() {
+    for (int i = 0; i < CLEAN_SCREEN_REPS; i++) {
+      System.out.println();
+    }
+  }
+
+  /**
+   * Helper method to get current timestamp to show when in debug mode.
+   *
+   * @return Formatted timestamp as string.
+   */
+  private String getTimestamp() {
+    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
+    ZonedDateTime now = ZonedDateTime.now(ZoneId.systemDefault());
+    return dtf.format(now);
+  }
+
+  /**
+   * Helper method used by tests to retrieve the string to be printed
+   * before actually printing it.
+   *
+   * @param level  {@link OutputLevel} of the message.
+   * @param string The string of the message to display.
+   * @return The formatted string ready to be printed.
+   */
+  public String getString(OutputLevel level, String string) {
+    String template = debugTemplates.get(level);
+    if (showDebug) {
+      template = String.format("[%s] %s", getTimestamp(), template);
+    }
+    return String.format(template, string);
+  }
+
+  /**
+   * Public method to print a string. Used from CLI.
+   *
+   * @param level      {@link OutputLevel} of the message.
+   * @param string     The string of the message to display.
+   * @param cleanFirst Flag that resets the console before print if true.
+   */
+  public void printString(OutputLevel level, String string, boolean cleanFirst) {
+    if (cleanFirst) {
+      clean();
+    }
+    System.out.println(getString(level, string));
+  }
+
+  /**
+   * Setter for the debug flag.
+   *
+   * @param toSet Debug flag.
+   */
+  public void setDebug(boolean toSet) {
+    showDebug = toSet;
+  }
+
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/PrivatePatternsHelper.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/PrivatePatternsHelper.html new file mode 100644 index 00000000..8f3280f9 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/PrivatePatternsHelper.html @@ -0,0 +1 @@ +PrivatePatternsHelper

PrivatePatternsHelper

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total8 of 10592%0 of 0n/a1331713
getBookshelf(Integer)5861%n/a012301
PrivatePatternsHelper()30%n/a111111
static {...}89100%n/a0101301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/PrivatePatternsHelper.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/PrivatePatternsHelper.java.html new file mode 100644 index 00000000..630c50ca --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/PrivatePatternsHelper.java.html @@ -0,0 +1,47 @@ +PrivatePatternsHelper.java

PrivatePatternsHelper.java

package it.polimi.is23am10.client.userinterface.helpers;
+
+import java.util.Map;
+
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongCharBookshelfStringException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongLengthBookshelfStringException;
+
+/**
+ * Map containing the private bookshelf patterns associated with an index.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class PrivatePatternsHelper {
+  private final static Map<Integer, String> privatePatternBS = Map.ofEntries(
+      Map.entry(1, "PXFXXXXXXCXXXBXXGXXXXXXXXXXTXX"),
+      Map.entry(2, "XXXXXXPXXXCXGXXXXXXBXXXTXXXXXF"),
+      Map.entry(3, "XXXXXFXXGXXXPXXXCXXTXXXXXBXXXX"),
+      Map.entry(4, "XXXXGXXXXXTXFXXXXXPXXBCXXXXXXX"),
+      Map.entry(5, "XXXXXXTXXXXXXXXXFBXXXXXXPGXXCX"),
+      Map.entry(6, "XXTXCXXXXXXXXBXXXXXXXGXFXPXXXX"),
+      Map.entry(7, "CXXXXXXXFXXPXXXTXXXXXXXXGXXBXX"),
+      Map.entry(8, "XXXXFXCXXXXXTXXPXXXXXXXBXXXXGX"),
+      Map.entry(9, "XXGXXXXXXXXXCXXXXXXBXTXXPFXXXX"),
+      Map.entry(10, "XXXXTXGXXXBXXXXXXXCXXFXXXXXXPX"),
+      Map.entry(11, "XXPXXXBXXXGXXXXXXFXXXXXXCXXXTX"),
+      Map.entry(12, "XXBXXXPXXXXXFXXXXXTXXXXXGCXXXX"));
+
+  /**
+   * Public function used to retrieve a bookshelf from its
+   * private card.
+   * 
+   * @param idx index of bookshelf.
+   * @return relative bookshelf.
+   */
+  public static Bookshelf getBookshelf(Integer idx) {
+    try {
+      return new Bookshelf(privatePatternBS.get(idx));
+    } catch (NullPointerException | WrongLengthBookshelfStringException | WrongCharBookshelfStringException e) {
+      return new Bookshelf();
+    }
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/index.html new file mode 100644 index 00000000..bf806d38 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.client.userinterface.helpers

it.polimi.is23am10.client.userinterface.helpers

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total118 of 1,33391%5 of 5290%165530248122926
OutputWrapper5794994%34794%7421519141701
CommandsBuilder470%20%6610105511
PrivatePatternsHelper9792%n/a133171301
CLIStrings13097%n/a121221201
ANSICodes0%n/a11111111
OutputWrapper.OutputLevel39100%n/a01070101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/index.source.html new file mode 100644 index 00000000..f5baab7d --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface.helpers/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.client.userinterface.helpers

it.polimi.is23am10.client.userinterface.helpers

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total118 of 1,33391%5 of 5290%165530248122926
OutputWrapper.java5798894%34794%7431519841802
CommandsBuilder.java470%20%6610105511
PrivatePatternsHelper.java9792%n/a133171301
CLIStrings.java13097%n/a121221201
ANSICodes.java0%n/a11111111
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/GraphicUserInterface.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/GraphicUserInterface.java.html new file mode 100644 index 00000000..5fbc8113 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/GraphicUserInterface.java.html @@ -0,0 +1,322 @@ +GraphicUserInterface.java

GraphicUserInterface.java

package it.polimi.is23am10.client.userinterface;
+
+import it.polimi.is23am10.client.Client;
+import it.polimi.is23am10.client.userinterface.guifactory.GuiFactory;
+import it.polimi.is23am10.client.userinterface.guifactory.GuiFactory.SCENE;
+import it.polimi.is23am10.server.model.game.Game.GameStatus;
+
+import java.io.Serializable;
+import java.util.List;
+
+import it.polimi.is23am10.server.network.messages.ChatMessage;
+import it.polimi.is23am10.server.network.messages.ErrorMessage;
+import it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity;
+import it.polimi.is23am10.server.network.virtualview.VirtualView;
+import java.util.Map;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+import javafx.application.Application;
+import javafx.application.Platform;
+import javafx.scene.Scene;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+
+/**
+ * A VirtualView pair class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+class VirtualViewPair {
+  /**
+   * The new {@link VirtualView}.
+   */
+  VirtualView newVw;
+
+  /**
+   * The old {@link VirtualView}.
+   */
+  VirtualView oldVw;
+
+  /**
+   * Notify the receiver that this pair is intended to be treated as null.
+   */
+  boolean isNull;
+
+  /**
+   * Constructor.
+   *
+   * @param o The old {@link VirtualView} instance.
+   * @param n The new {@link VirtualView} instance.
+   * @param in The isNull flag.
+   *
+   */
+  public VirtualViewPair(VirtualView o, VirtualView n, boolean in) {
+    newVw = n;
+    oldVw = o;
+    isNull = in;
+  }
+}
+
+class VirtualViewSceneHandler {
+
+  /**
+   * Custom lock object.
+   */
+  private static final Object stopGameSnapshotHandlerLock = new Object();
+
+  /**
+   * A list {@link VirtualViewPair} to be shown.
+   */
+  private static final BlockingQueue<VirtualViewPair> gameSnapshots = new LinkedBlockingQueue<VirtualViewPair>();
+
+  /**
+   * Boolean flag to stop the game scene handler thread.
+   */
+  private static boolean stopGameSnapshotHandler = false;
+
+  /**
+   * Setter for {@link VirtualViewSceneHandler#stopGameSnapshotHandler}
+   *
+   * @param flag The flag to be set.
+   */
+  protected static void setStopGameSnapshotHandler(boolean flag) {
+    synchronized(stopGameSnapshotHandlerLock) {
+      stopGameSnapshotHandler = flag;
+    }
+  }
+
+  /**
+   * Getter for {@link VirtualViewSceneHandler#stopGameSnapshotHandler}
+   *
+   * @return The flag status.
+   */
+  protected static boolean getStopGameSnapshotHandler() {
+    synchronized(stopGameSnapshotHandlerLock) {
+      return stopGameSnapshotHandler;
+    }
+  }
+
+  /**
+   * Add a new {@link VirtualViewPair} object to the {@link VirtualViewSceneHandler#gameSnapshots}.
+   *
+   * @param vwp The {@link VirtualViewPair}.
+   */
+  protected static void addVirtualViewPair(VirtualViewPair vwp) {
+    gameSnapshots.add(vwp);
+  }
+
+  protected static void notifyVirtualViewPairQueue() {
+    gameSnapshots.notifyAll();
+  }
+
+  /**
+   * Run the game scene handler thread.
+   *
+   */
+  protected static void runGameSnapShotHandler() {
+    new Thread(() -> {
+      while(!getStopGameSnapshotHandler()) {
+        VirtualViewPair vwp = null;
+        try {
+          vwp = gameSnapshots.take();
+          if (vwp != null) {
+            if (vwp.isNull) {
+              break;
+            }
+            if (vwp.newVw.getStatus() == GameStatus.ENDED) {
+              GuiFactory.stages.put(SCENE.END_GAME, GuiFactory.getEndGameScene(vwp.newVw));
+              GuiFactory.executeOnJavaFX(
+                  () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.END_GAME)));
+            } else {
+              if (vwp.newVw.getStatus() == GameStatus.WAITING_FOR_PLAYERS) {
+                GuiFactory.executeOnJavaFX(
+                    () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.WAIT_GAME)));
+              } else {
+                if (GuiFactory.stages.get(SCENE.GAME_SNAPSHOT) == null) {
+                  GuiFactory.stages.put(SCENE.GAME_SNAPSHOT, GuiFactory.getGameSnapshotScene(vwp.newVw));
+                  GuiFactory.executeOnJavaFX(
+                      () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.GAME_SNAPSHOT)));
+                } else {
+                  StackPane root = (StackPane) GuiFactory.mainStage.getScene().getRoot();
+                  final VirtualView oldVw = vwp.oldVw;
+                  final VirtualView newVw = vwp.newVw;
+                  GuiFactory.executeOnJavaFX(() -> GuiFactory.GameSnapshotFactory.updateGameWidget(root, oldVw, newVw));
+                }
+              }
+            }
+          }
+        } catch(InterruptedException e) {
+
+        } catch(NullPointerException e) {
+
+        }
+      }
+    }).start();
+  }
+}
+
+/**
+ * A client interface using a graphic UI as I/O.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class GraphicUserInterface extends Application implements UserInterface, Serializable {
+
+  /**
+   * Queue containing all the inputs the user sent trough readline. Content to be
+   * consumed by client
+   * controller on premise.
+   */
+  private static final BlockingQueue<String> userInputQueue = new LinkedBlockingQueue<>();
+
+  /**
+   * Constructor.
+   */
+  public GraphicUserInterface() {
+    VirtualViewSceneHandler.runGameSnapShotHandler();
+  }
+
+  /**
+   * Add a new message to the input list queue.
+   *
+   * @param msg The message to be added.
+   */
+  public static void addMsgQueue(String msg) {
+    userInputQueue.add(msg);
+  }
+
+  /**
+   * Retrirve the head of the message queue.
+   *
+   * @return The oldest message.
+   */
+  public static String takeMsgQueue() {
+    try {
+      return userInputQueue.isEmpty() ? null : userInputQueue.take();
+    } catch (InterruptedException e) {
+      return null;
+    }
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  public void start(Stage stage) {
+    GuiFactory.mainStage = stage;
+    stage.setResizable(false);
+    Map<SCENE, Scene> m = Map.of(
+        SCENE.SPLASH_SCREEN, GuiFactory.getSplashScreenScene(),
+        SCENE.ENTER_GAME_SELECTION, GuiFactory.getEnterGameSelectionScene(),
+        SCENE.CREATE_GAME, GuiFactory.getCreateNewGameSelectionScene(),
+        SCENE.WAIT_GAME, GuiFactory.getWaitGameScene()
+    // some scenes require the {@link VirtualView}, they are built later
+    );
+    GuiFactory.stages.putAll(m);
+
+    stage.setTitle("MyShelfie - IS23AM10");
+    stage.setScene(GuiFactory.stages.get(SCENE.SPLASH_SCREEN));
+    stage.setOnCloseRequest(e -> {
+      Client.setForceCloseApplication(true);
+      VirtualViewSceneHandler.addVirtualViewPair(new VirtualViewPair(null, null, true));
+      VirtualViewSceneHandler.setStopGameSnapshotHandler(true);
+    });
+    stage.show();
+  }
+
+  /** {@inheritDoc} */
+  public String getUserInput() {
+    return takeMsgQueue();
+  }
+
+  /** {@inheritDoc} */
+  public void displaySplashScreen() {
+    // this will perform javaFX init process and show the first scene
+    new Thread(() -> {
+      launch();
+    }).start();
+  }
+
+  /** {@inheritDoc} */
+  public void displayAvailableGames(List<VirtualView> availableGames) {
+    GuiFactory.stages.put(
+        SCENE.JOIN_GAME, GuiFactory.getCreateJoinScene(Client.getActiveGameServers()));
+  }
+
+  //For RMI: This was the original implementation (with GUI update from remote calls), but it does have some functional issues.
+  //We are aware that the turnaround that we have chosen (to save the data and trigger the scene from another thread) does not reflect the RMI paradigm at 100%
+  //
+  // /** {@inheritDoc} */
+  // public void displayVirtualView(VirtualView old, VirtualView vw) {
+  //   if (vw.getStatus() == GameStatus.ENDED) {
+  //     GuiFactory.stages.put(SCENE.END_GAME, GuiFactory.getEndGameScene(vw));
+  //     GuiFactory.executeOnJavaFX(
+  //         () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.END_GAME)));
+  //   } else {
+  //     if (vw.getStatus() == GameStatus.WAITING_FOR_PLAYERS) {
+  //       GuiFactory.executeOnJavaFX(
+  //           () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.WAIT_GAME)));
+  //     } else {
+  //       if (GuiFactory.stages.get(SCENE.GAME_SNAPSHOT) == null) {
+  //         GuiFactory.stages.put(SCENE.GAME_SNAPSHOT, GuiFactory.getGameSnapshotScene(vw));
+  //         GuiFactory.executeOnJavaFX(
+  //             () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.GAME_SNAPSHOT)));
+  //       } else {
+  //         StackPane root = (StackPane) GuiFactory.mainStage.getScene().getRoot();
+  //         GuiFactory.executeOnJavaFX(() -> GuiFactory.GameSnapshotFactory.updateGameWidget(root, old, vw));
+  //       }
+  //     }
+  //   }
+  // }
+
+  /** {@inheritDoc} */
+  public void displayVirtualView(VirtualView old, VirtualView vw) {
+    VirtualViewSceneHandler.addVirtualViewPair(new VirtualViewPair(old, vw, false));
+  }
+
+  /** {@inheritDoc} */
+  public void displayChatMessage(ChatMessage message) {
+    StackPane root = (StackPane) GuiFactory.mainStage.getScene().getRoot();
+    GuiFactory.executeOnJavaFX(
+        () -> GuiFactory.GameSnapshotFactory.updateChatHistory(root, message));
+  }
+
+  /** {@inheritDoc}} */
+  public void displayError(ErrorMessage errorMessage) {
+    StackPane root = (StackPane) GuiFactory.mainStage.getScene().getRoot();
+    if(errorMessage.getErrorSeverity() != ErrorSeverity.INFO){
+      GuiFactory.executeOnJavaFX(
+        () -> GuiFactory.getErrorMessage(root, errorMessage)
+      );
+      if (errorMessage.getMessage().contains("You have been disconnected")) {
+        try {
+          Thread.sleep(2000);
+        } catch (InterruptedException e) {
+          e.printStackTrace();
+        }
+        Client.setForceCloseApplication(true); 
+      }
+    } else {
+      GuiFactory.executeOnJavaFX(
+        () -> GuiFactory.GameSnapshotFactory.updateChatHistory(root, errorMessage)
+      );
+    }
+  }
+
+  /** {@inheritDoc} */
+  public void terminateUserInterface() {
+    Platform.exit();
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  public void displayGameJoinGuide() {
+    GuiFactory.executeOnJavaFX(
+        () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.ENTER_GAME_SELECTION)));
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/VirtualViewPair.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/VirtualViewPair.html new file mode 100644 index 00000000..bc7610fc --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/VirtualViewPair.html @@ -0,0 +1 @@ +VirtualViewPair

VirtualViewPair

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total12 of 120%0 of 0n/a115511
VirtualViewPair(VirtualView, VirtualView, boolean)120%n/a115511
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/VirtualViewSceneHandler.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/VirtualViewSceneHandler.html new file mode 100644 index 00000000..616e928a --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/VirtualViewSceneHandler.html @@ -0,0 +1 @@ +VirtualViewSceneHandler

VirtualViewSceneHandler

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total145 of 1450%12 of 120%181842421212
lambda$runGameSnapShotHandler$4()730%120%77232311
static {...}110%n/a113311
setStopGameSnapshotHandler(boolean)100%n/a114411
getStopGameSnapshotHandler()80%n/a112211
lambda$runGameSnapShotHandler$2()70%n/a111111
lambda$runGameSnapShotHandler$1()70%n/a111111
lambda$runGameSnapShotHandler$0()70%n/a111111
runGameSnapShotHandler()60%n/a113311
addVirtualViewPair(VirtualViewPair)50%n/a112211
lambda$runGameSnapShotHandler$3(StackPane, VirtualView, VirtualView)50%n/a111111
VirtualViewSceneHandler()30%n/a111111
notifyVirtualViewPairQueue()30%n/a112211
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/index.html new file mode 100644 index 00000000..d2b26c83 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.client.userinterface

it.polimi.is23am10.client.userinterface

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total157 of 1570%12 of 120%19194747131322
VirtualViewSceneHandler1450%120%18184242121211
VirtualViewPair120%n/a11551111
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/index.source.html new file mode 100644 index 00000000..8e3d5ca6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client.userinterface/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.client.userinterface

it.polimi.is23am10.client.userinterface

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total157 of 1570%12 of 120%19194747131322
GraphicUserInterface.java1570%120%19194747131322
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$1.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$1.html new file mode 100644 index 00000000..012bb5de --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$1.html @@ -0,0 +1 @@ +Client.new TypeToken() {...}

Client.new TypeToken() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total6 of 60%0 of 0n/a111111
{...}60%n/a111111
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$AlarmTask.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$AlarmTask.html new file mode 100644 index 00000000..4e311f10 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$AlarmTask.html @@ -0,0 +1 @@ +Client.AlarmTask

Client.AlarmTask

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 13100%0 of 0n/a020502
Client.AlarmTask(Client, AlarmConsumer)9100%n/a010301
run()4100%n/a010201
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$ClientGameStatus.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$ClientGameStatus.html new file mode 100644 index 00000000..c12a80aa --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$ClientGameStatus.html @@ -0,0 +1 @@ +Client.ClientGameStatus

Client.ClientGameStatus

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 21100%0 of 0n/a010401
static {...}21100%n/a010401
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$MessageDeserializer.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$MessageDeserializer.html new file mode 100644 index 00000000..4e2f56a0 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client$MessageDeserializer.html @@ -0,0 +1 @@ +Client.MessageDeserializer

Client.MessageDeserializer

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total61 of 678%6 of 60%67131412
deserialize(JsonElement, Type, JsonDeserializationContext)610%60%66131311
Client.MessageDeserializer(Client)6100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client.java.html new file mode 100644 index 00000000..1df90679 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client/Client.java.html @@ -0,0 +1,834 @@ +Client.java

Client.java

package it.polimi.is23am10.client;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.reflect.TypeToken;
+
+import it.polimi.is23am10.client.exceptions.ForceCloseApplicationException;
+import it.polimi.is23am10.client.interfaces.AlarmConsumer;
+import it.polimi.is23am10.client.userinterface.UserInterface;
+import it.polimi.is23am10.server.model.game.Game.GameStatus;
+import it.polimi.is23am10.server.model.items.board.exceptions.BoardGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.board.exceptions.BoardGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.player.Player;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException;
+import it.polimi.is23am10.server.network.messages.AbstractMessage;
+import it.polimi.is23am10.server.network.messages.AvailableGamesMessage;
+import it.polimi.is23am10.server.network.messages.ChatMessage;
+import it.polimi.is23am10.server.network.messages.ErrorMessage;
+import it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity;
+import it.polimi.is23am10.server.network.messages.GameMessage;
+import it.polimi.is23am10.server.network.messages.SnoozeACKMessage;
+import it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector;
+import it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector;
+import it.polimi.is23am10.server.network.virtualview.VirtualView;
+import it.polimi.is23am10.utils.CommandSyntaxValidator;
+import it.polimi.is23am10.utils.Coordinates;
+import it.polimi.is23am10.utils.ErrorTypeString;
+import it.polimi.is23am10.utils.MoveCommandHelper;
+import it.polimi.is23am10.utils.MovesValidator;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+import it.polimi.is23am10.utils.exceptions.WrongBookShelfPicksException;
+import it.polimi.is23am10.utils.exceptions.WrongGameBoardPicksException;
+import it.polimi.is23am10.utils.exceptions.WrongMovesNumberException;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.lang.reflect.Type;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.rmi.NoSuchObjectException;
+import java.rmi.RemoteException;
+import java.rmi.server.UnicastRemoteObject;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
+import java.util.UUID;
+
+/** Custom lock object. */
+class LockObject implements Serializable {}
+
+/**
+ * An abstract class representing the app running in client mode. Holds the three elements needed
+ * for proper functioning:
+ *
+ * <ul>
+ *   <li>Networking: Player Connector
+ *   <li>Game state: VirtualView
+ *   <li>UI/UX: UserInterface
+ * </ul>
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public abstract class Client extends UnicastRemoteObject implements IClient {
+  /** Custom lock object. */
+  protected LockObject gameRefLock = new LockObject();
+
+  /** Custom lock object. */
+  protected LockObject hasDuplicateLock = new LockObject();
+
+  /** Custom lock object. */
+  protected LockObject virtualViewLock = new LockObject();
+
+  /** Custom lock object. */
+  protected static Object availableServersLock = new Object();
+
+  /** Custom lock object. */
+  protected static Object playerConnectorLock = new Object();
+
+  /**
+   * Protected constructor for client using Socket as communication method.
+   *
+   * @param pc Player connector.
+   * @param ui User interface.
+   * @throws UnknownHostException On localhost retrieval failure.
+   */
+  protected Client(IPlayerConnector pc, UserInterface ui)
+      throws UnknownHostException, RemoteException {
+    playerConnector = pc;
+    userInterface = ui;
+    serverAddress = InetAddress.getLocalHost();
+    gson =
+        new GsonBuilder()
+            .registerTypeAdapter(AbstractMessage.class, new MessageDeserializer())
+            .create();
+    requestedDisconnection = false;
+    alarm = new Timer();
+    clientStatus = ClientGameStatus.INIT;
+    forceCloseApplication = false;
+  }
+
+  /**
+   * Check if the current client has joined a game or not.
+   *
+   * @return The requested flag.
+   */
+  protected abstract boolean hasJoined();
+
+  /** Client alarm interval in milliseconds. */
+  protected final int ALARM_INTERVAL_MS = 5000;
+
+  /** Client alarm initial delay in milliseconds. */
+  protected final int ALARM_INITIAL_DELAY_MS = 0;
+
+  /** Clean disconnection request. */
+  protected boolean requestedDisconnection;
+
+  /** Force application close request, for example when gui is closed. */
+  protected static boolean forceCloseApplication;
+
+  /** Duplicate name error flag. */
+  private boolean hasDuplicateName;
+
+  /** A {@link Gson} instance to serialize and deserialize commands. */
+  protected transient Gson gson;
+
+  /** The server host IP address. */
+  protected transient InetAddress serverAddress;
+
+  /** The three possible states in which the client can be. */
+  public enum ClientGameStatus {
+    /** Starting state. Player hasn't selected name yet. */
+    INIT,
+    /** Player selected name but not yet the game. */
+    GAME_SELECTION,
+    /** Player is in the game. */
+    PLAYING
+  }
+
+  /** Current status of the client. */
+  protected ClientGameStatus clientStatus;
+
+  /**
+   * Player connector. Allows the client to communicate with the server and receive updates (game
+   * snapshots, chat messages)
+   */
+  protected static IPlayerConnector playerConnector;
+
+  /**
+   * Maximum player name length.
+   */
+  private final Integer MAX_PLAYER_NAME_LENGTH = 15;
+
+  /**
+   * Retrieve the player connector intance.
+   *
+   * @return The {@link IPlayerConnector}.
+   */
+  public static IPlayerConnector getPlayerConnector() {
+    synchronized (playerConnectorLock) {
+      return playerConnector;
+    }
+  }
+
+  /**
+   * Instance of the game currently played on client. Initially null, filled when joining games,
+   * updated constantly at each turn with the updated instance arriving in playerConnector's queue
+   * Completely replaced when starting new games.
+   */
+  protected VirtualView virtualView;
+
+  /**
+   * Interface used for communicating with the user. Can be either graphical or textual. Only output
+   * methods are exposed by interface.
+   */
+  public UserInterface userInterface;
+
+  /** List of available games set when a message from getAvailableGames is received. */
+  protected static List<VirtualView> availableGames;
+
+  /** Game id reference. */
+  protected UUID gameIdRef;
+
+  /*
+   * Application timer.
+   */
+  protected transient Timer alarm;
+
+  /**
+   * Detected if the use has requested a clean disconnection.
+   *
+   * @return The disconnection flag.
+   */
+  protected boolean hasRequestedDisconnection() {
+    return requestedDisconnection;
+  }
+
+  /**
+   * Set a force close application request.
+   * This method is defined as static as JavaFX thread must have access.
+   *
+   * @param flag The request flag.
+   *
+   */
+  public static void setForceCloseApplication(boolean flag) {
+    forceCloseApplication = flag;
+  }
+
+  /**
+   * Show the received message to the client.
+   *
+   * @param msg The message. Its dynamic type is inferred by {@link Gson}.
+   * @throws RemoteException
+   */
+  public void showServerMessage(AbstractMessage msg) throws RemoteException {
+    if (gson == null) {
+      gson =
+          new GsonBuilder()
+              .registerTypeAdapter(AbstractMessage.class, new MessageDeserializer())
+              .create();
+    }
+    switch (msg.getMessageType()) {
+      case CHAT_MESSAGE:
+        userInterface.displayChatMessage((ChatMessage) msg);
+        break;
+      case GAME_SNAPSHOT:
+        VirtualView old = virtualView;
+        VirtualView v = gson.fromJson(msg.getMessage(), VirtualView.class);
+        setVirtualView(v);
+        // do not overwrite game id
+        if (getGameIdRef() == null) {
+          setGameIdRef(v.getGameId());
+        }
+        userInterface.displayVirtualView(old, v);
+        break;
+      case ERROR_MESSAGE:
+        userInterface.displayError((ErrorMessage) msg);
+        if (msg.getMessage().equals(ErrorTypeString.ERROR_ADDING_PLAYERS)) {
+          setHasDuplicateName(true);
+        }
+        break;
+      case AVAILABLE_GAMES:
+        Type listOfMyClassObject = new TypeToken<ArrayList<VirtualView>>() {}.getType();
+        List<VirtualView> availableGamesList = gson.fromJson(msg.getMessage(), listOfMyClassObject);
+        setActiveGameServers(availableGamesList);
+        userInterface.displayAvailableGames(availableGamesList);
+        break;
+      default:
+        break;
+    }
+  }
+
+  /** Abstract method that run the client into the game. */
+  public abstract void run();
+
+  /**
+   * Available games param setter.
+   *
+   * @param ag list of available games
+   */
+  protected void setActiveGameServers(List<VirtualView> ag) {
+    synchronized (availableServersLock) {
+      availableGames = ag;
+    }
+  }
+
+  /**
+   * Available games param getter.
+   *
+   * @return The list of available games
+   */
+  public static List<VirtualView> getActiveGameServers() {
+    synchronized (availableServersLock) {
+      return availableGames;
+    }
+  }
+
+  /**
+   * GameIdRef setter.
+   *
+   * @param id game id ref
+   */
+  protected void setGameIdRef(UUID id) {
+    synchronized (gameRefLock) {
+      this.gameIdRef = id;
+    }
+  }
+
+  /** GameIdRef getter. */
+  protected UUID getGameIdRef() {
+    synchronized (gameRefLock) {
+      return gameIdRef;
+    }
+  }
+
+  /**
+   * Duplicate name flag setter.
+   *
+   * @param b flag
+   */
+  protected void setHasDuplicateName(boolean b) {
+    synchronized (hasDuplicateLock) {
+      this.hasDuplicateName = b;
+    }
+  }
+
+  /**
+   * Duplicate name flag getter.
+   *
+   * @return flag
+   */
+  protected boolean getHasDuplicateName() {
+    synchronized (hasDuplicateLock) {
+      return hasDuplicateName;
+    }
+  }
+
+  /**
+   * User interface setter.
+   *
+   * @param ui user interface.
+   */
+  protected void setUserInterface(UserInterface ui) {
+    this.userInterface = ui;
+  }
+
+  /**
+   * User interface getter.
+   *
+   * @return user interface.
+   */
+  protected UserInterface getUserInterface() {
+    return userInterface;
+  }
+
+  /**
+   * Virtual view getter.
+   *
+   * @return virtual view
+   */
+  protected VirtualView getVirtualView() {
+    synchronized (virtualViewLock) {
+      return virtualView;
+    }
+  }
+
+  /** Virtual view setter. */
+  protected void setVirtualView(VirtualView vv) {
+    synchronized (virtualViewLock) {
+      this.virtualView = vv;
+    }
+  }
+
+  /**
+   * Client status getter.
+   *
+   * @return status.
+   */
+  public ClientGameStatus getClientStatus() {
+    return clientStatus;
+  }
+
+  /**
+   * Client status setter.
+   *
+   * @param clientStatus new status of client.
+   */
+  public void setClientStatus(ClientGameStatus clientStatus) {
+    this.clientStatus = clientStatus;
+  }
+
+  /**
+   * Abstract method that send command to get all available games.
+   *
+   * @throws IOException
+   * @throws InterruptedException
+   */
+  abstract void getAvailableGames() throws IOException, InterruptedException;
+
+  /**
+   * Abstract method that send command to start a new game.
+   *
+   * @param playerName selected player name
+   * @param maxPlayerNum max number of players selected
+   * @throws IOException
+   */
+  abstract void startGame(String playerName, int maxPlayerNum) throws IOException;
+
+  /**
+   * Abstract method that send command to add a new player.
+   *
+   * @param playerName selected player name
+   * @param gameId selected game id
+   * @throws IOException
+   */
+  abstract void addPlayer(String playerName, UUID gameId) throws IOException;
+
+  /**
+   * Abstract method that send command to move tiles.
+   *
+   * @param moves map of moves
+   * @throws IOException
+   */
+  abstract void moveTiles(Map<Coordinates, Coordinates> moves) throws IOException;
+
+  /**
+   * Abstract function that send chat message
+   *
+   * @param msg chat message
+   * @throws IOException
+   */
+  abstract void sendChatMessage(ChatMessage msg) throws IOException;
+
+  /**
+   * Abstract function that snoozes virtual alarm.
+   *
+   * @param apc abstract player connector
+   * @param msg chat message
+   * @throws IOException
+   */
+  abstract void snoozeAlarm() throws IOException;
+
+  /**
+   * Set the game id to the {@link IPlayerConnector}. The value source is {@link
+   * Client#getGameIdRef()}.
+   *
+   * @param reset A flag stating if this files has to be reset.
+   */
+  protected void setConnectorGameId(boolean reset) {
+    synchronized (playerConnectorLock) {
+      ((AbstractPlayerConnector) playerConnector).setGameId(reset ? null : getGameIdRef());
+    }
+  }
+
+  /**
+   * Set the {@link Player} to the {@link IPlayerConnector}.
+   *
+   * @param name The player name.
+   * @throws NullPlayerIdException
+   * @throws NullPlayerIdException
+   */
+  protected void setConnectorPlayer(String name)
+      throws NullPlayerNameException, NullPlayerIdException {
+    synchronized (playerConnectorLock) {
+      Player p = new Player();
+      if (name != null) {
+        p.setPlayerName(name);
+        p.setPlayerID(UUID.nameUUIDFromBytes(name.getBytes()));
+      }
+      ((AbstractPlayerConnector) playerConnector).setPlayer(p);
+    }
+  }
+
+  /**
+   * Handling function for move tiles command.
+   *
+   * @throws IOException
+   */
+  protected void handleCommands() throws IOException {
+
+    Player connectorPlayer;
+    synchronized (playerConnectorLock) {
+      AbstractPlayerConnector pc = (AbstractPlayerConnector) playerConnector;
+      connectorPlayer = pc.getPlayer();
+    }
+
+    if (clientStatus == ClientGameStatus.GAME_SELECTION) {
+      clientStatus = ClientGameStatus.PLAYING;
+    }
+
+    String fullCommand = userInterface.getUserInput();
+
+    if (fullCommand != null) {
+      String command = fullCommand.stripLeading().split(" ")[0];
+
+      switch (command) {
+        case "chat":
+          if (fullCommand.stripLeading().split(" ").length > 1) {
+            if (fullCommand.stripLeading().split("\"").length > 1) {
+              // This selects only the part between double quotes which is gonna be the
+              // message sent.
+              String msg = fullCommand.split("\"")[1];
+              // If the second string begins with double quotes,
+              // there's no receiver and the message is broadcast
+              if (fullCommand.stripLeading().split(" ")[1].startsWith("\"")) {
+                sendChatMessage(new ChatMessage(connectorPlayer, msg));
+              } else {
+                String receiverName = fullCommand.split(" ")[1];
+                sendChatMessage(new ChatMessage(connectorPlayer, msg, receiverName));
+              }
+            }
+          }
+          break;
+        case "logout":
+          setForceCloseApplication(true);
+          break;
+        case "move":
+          if (getVirtualView() == null) {
+            userInterface.displayError(
+                new ErrorMessage("Wait the game to be loaded", ErrorSeverity.ERROR));
+            break;
+          }
+          if (connectorPlayer
+                  .getPlayerName()
+                  .equals(getVirtualView().getActivePlayer().getPlayerName())
+              && getVirtualView().getStatus() != GameStatus.WAITING_FOR_PLAYERS) {
+
+            Map<Coordinates, Coordinates> moves = new HashMap<Coordinates, Coordinates>();
+            List<Coordinates> boardCoords = new ArrayList<Coordinates>();
+            List<Coordinates> bsCoords = new ArrayList<Coordinates>();
+
+            // Reads a string containing coordinates of a tile and the column index
+            String[] moveArgs = fullCommand.stripLeading().split(" ");
+            for (int maxArgs = 0; maxArgs < 4 && moveArgs.length - (maxArgs + 1) > 0; maxArgs++) {
+
+              /*
+               * If we receive a board coordinate input add it to the list, otherwise if it is
+               * a
+               * column index we are at the end of the move command and we convert that idx
+               * to the right bookshelf coordinates. Then we add the mapping between board
+               * coordinates
+               * and bookshelf coordinates.
+               */
+              if (CommandSyntaxValidator.validateCoord(moveArgs[maxArgs + 1])) {
+                String coordBoard = moveArgs[maxArgs + 1];
+                Integer colBoardCoord = coordBoard.charAt(0) - '0';
+                Integer rowBoardCoord = coordBoard.charAt(1) - '0';
+                boardCoords.add(new Coordinates(rowBoardCoord, colBoardCoord));
+              } else if (CommandSyntaxValidator.validateColIdx(moveArgs[maxArgs + 1])) {
+                String idx = moveArgs[maxArgs + 1];
+                try {
+                  // Transform idx to list of coords
+                  // NB: boardCoords.size() is the number of moves done
+                  bsCoords =
+                      MoveCommandHelper.fromColIdxToCoord(
+                          idx,
+                          getVirtualView().getActivePlayer().getBookshelf(),
+                          boardCoords.size());
+                  // I put the coords into the map
+                  for (int i = 0; i < boardCoords.size(); i++) {
+                    moves.put(boardCoords.get(i), bsCoords.get(i));
+                  }
+                  break;
+                } catch (BookshelfGridColIndexOutOfBoundsException
+                    | BookshelfGridRowIndexOutOfBoundsException
+                    | NullIndexValueException
+                    | WrongBookShelfPicksException e) {
+                  userInterface.displayError(new ErrorMessage(e.getMessage(), ErrorSeverity.ERROR));
+                  break;
+                }
+              } else {
+                break;
+              }
+            }
+            // Checks if no valid moves were added
+            if (moves.isEmpty()) {
+              userInterface.displayError(
+                  new ErrorMessage("No valid moves found.", ErrorSeverity.ERROR));
+            } else {
+              try {
+                MovesValidator.validateGameMoves(
+                    moves,
+                    virtualView.getActivePlayer().getBookshelf(),
+                    virtualView.getGameBoard());
+                moveTiles(moves);
+              } catch (BoardGridRowIndexOutOfBoundsException
+                  | BoardGridColIndexOutOfBoundsException
+                  | BookshelfGridColIndexOutOfBoundsException
+                  | BookshelfGridRowIndexOutOfBoundsException
+                  | WrongMovesNumberException
+                  | WrongGameBoardPicksException
+                  | NullIndexValueException
+                  | WrongBookShelfPicksException e) {
+                userInterface.displayError(
+                    new ErrorMessage("Invalid move:" + e.getMessage(), ErrorSeverity.ERROR));
+                break;
+              }
+            }
+            break;
+          } else {
+            userInterface.displayError(new ErrorMessage("Not your turn.", ErrorSeverity.WARNING));
+          }
+          break;
+        default:
+          break;
+      }
+    }
+  }
+
+  /**
+   * Handling function for name selection.
+   *
+   * @return The operation result.
+   * @throws IOException
+   */
+  protected boolean handlePlayerNameSelection() throws IOException {
+    // Select only the string before the space if the client writes more words
+    String selectedPlayerName = userInterface.getUserInput();
+    if (selectedPlayerName != null) {
+      selectedPlayerName = selectedPlayerName.stripLeading().split(" ")[0];
+      if (selectedPlayerName.length() > MAX_PLAYER_NAME_LENGTH){
+        selectedPlayerName = selectedPlayerName.substring(0, MAX_PLAYER_NAME_LENGTH);
+      }
+      try {
+        setConnectorPlayer(selectedPlayerName);
+      } catch (NullPlayerNameException | NullPlayerIdException e) {
+        userInterface.displayError(new ErrorMessage("Invalid player name", ErrorSeverity.ERROR));
+        return false;
+      }
+      return true;
+    } else {
+      return false;
+    }
+  }
+
+  /**
+   * Handling function for game selection.
+   *
+   * @throws IOException
+   * @throws InterruptedException
+   */
+  protected void handleGameSelection() throws IOException, InterruptedException {
+
+    Player connectorPlayer;
+    UUID connectorGameId;
+    synchronized (playerConnectorLock) {
+      AbstractPlayerConnector pc = (AbstractPlayerConnector) playerConnector;
+      connectorPlayer = pc.getPlayer();
+      connectorGameId = pc.getGameId();
+    }
+
+    // Executed if I still haven't selected a game
+    if (connectorGameId == null) {
+
+      // We use the check over client status to perform one-time actions
+      // like displaying stuff and sending
+      if (clientStatus == ClientGameStatus.INIT) {
+        userInterface.displayGameJoinGuide();
+        clientStatus = ClientGameStatus.GAME_SELECTION;
+        getAvailableGames();
+      }
+
+      String fullCommand = userInterface.getUserInput();
+      if (fullCommand != null) {
+        String command = fullCommand.stripLeading().split(" ")[0];
+        Integer maxPlayers = null;
+        switch (command) {
+          case "j":
+            if (fullCommand.split(" ").length > 1) {
+              String idx = fullCommand.split(" ")[1];
+              if (CommandSyntaxValidator.validateGameIdx(idx, availableGames.size())) {
+                UUID selectedGameId = availableGames.get(Integer.parseInt(idx)).getGameId();
+                addPlayer(connectorPlayer.getPlayerName(), selectedGameId);
+                /*
+                 * Since the gameId ref is set when the message handler receives a GAME_SNAPSHOT
+                 * message
+                 * and since that GAME_SNAPSHOT message is received only when the player is
+                 * added correctly to the game (so there's not duplicate name exception),
+                 * here we know that even if the duplicateName flag is set after a few seconds,
+                 * the player will not be added by mistake because it exits the while loop
+                 * because of the gameId flag.
+                 */
+                while (getGameIdRef() == null && !getHasDuplicateName()) {}
+                if (getHasDuplicateName()) {
+                  userInterface.displayError(
+                      new ErrorMessage("Failed to add player, retry", ErrorSeverity.CRITICAL));
+                  setHasDuplicateName(false);
+                  break;
+                }
+                setConnectorGameId(false);
+              } else {
+                userInterface.displayError(
+                    new ErrorMessage("Failed to select game", ErrorSeverity.CRITICAL));
+              }
+            } else {
+              userInterface.displayError(
+                  new ErrorMessage(
+                      "Insert the index of the game you want to join, if none present please create a new game",
+                      ErrorSeverity.ERROR));
+            }
+            break;
+          case "c":
+            if (fullCommand.split(" ").length > 1) {
+              String numMaxPlayers = fullCommand.split(" ")[1];
+              if (CommandSyntaxValidator.validateMaxPlayer(numMaxPlayers)) {
+                maxPlayers = Integer.parseInt(numMaxPlayers);
+                startGame(connectorPlayer.getPlayerName(), maxPlayers);
+                while (getGameIdRef() == null) {}
+                setConnectorGameId(false);
+              } else {
+                userInterface.displayError(
+                    new ErrorMessage("Failed to create game", ErrorSeverity.CRITICAL));
+              }
+            } else {
+              userInterface.displayError(
+                  new ErrorMessage("Insert value of max players", ErrorSeverity.ERROR));
+            }
+            break;
+          case "q":
+            try {
+              setConnectorPlayer(null);
+            } catch (NullPlayerIdException | NullPlayerNameException e) {
+            }
+            clientStatus = ClientGameStatus.INIT;
+            setConnectorGameId(true);
+            break;
+          default:
+            break;
+        }
+      }
+    }
+  }
+
+  /**
+   * The client game core machine state.
+   *
+   * @throws IOException
+   * @throws NullPlayerIdException
+   * @throws InterruptedException
+   */
+  protected void clientRunnerCore()
+      throws IOException, InterruptedException, NullPlayerIdException, ForceCloseApplicationException {
+
+    //this flag is raised by external threads, as JavaFX
+    if (forceCloseApplication) {
+      throw new ForceCloseApplicationException();
+    }
+
+    Player connectorPlayer;
+    UUID connectorGameId;
+    synchronized (playerConnectorLock) {
+      AbstractPlayerConnector pc = (AbstractPlayerConnector) playerConnector;
+      connectorPlayer = pc.getPlayer();
+      connectorGameId = pc.getGameId();
+    }
+
+    // First I'm gonna ask the player name
+    if (connectorPlayer == null || connectorPlayer.getPlayerName() == null) {
+      userInterface.displaySplashScreen();
+      while (!handlePlayerNameSelection()) {}
+    }
+
+    // Execute if the client is not connected to a game.
+    if (connectorGameId == null) {
+      handleGameSelection();
+    } else {
+      // Executed if the client is connected to a game.
+      handleCommands();
+    }
+  }
+
+  /**
+   * Method to terminate the client and all client's threads.
+   */
+  public void terminateClient() {
+    try {
+      UnicastRemoteObject.unexportObject(this, true);
+    } catch (NoSuchObjectException e) {
+      userInterface.displayError(new ErrorMessage("Unable to close connection safely. Please close client manually", ErrorSeverity.CRITICAL));
+    }
+    requestedDisconnection = true;
+    alarm.cancel();
+    userInterface.terminateUserInterface();
+  }
+
+  /**
+   * Custom deserializer class definition for {@link Gson} usage. This works on polymorphic {@link
+   * AbstractMessage} objects.
+   */
+  class MessageDeserializer implements JsonDeserializer<AbstractMessage> {
+    @Override
+    public AbstractMessage deserialize(
+        JsonElement json, Type typeOfT, JsonDeserializationContext context)
+        throws JsonParseException {
+      JsonObject jsonObject = json.getAsJsonObject();
+
+      String className = "";
+      try {
+        className = jsonObject.get("className").getAsString();
+      } catch (Exception e) {
+        throw new JsonParseException(e);
+      }
+
+      switch (className) {
+        case "it.polimi.is23am10.server.network.messages.GameMessage":
+          return context.deserialize(jsonObject, GameMessage.class);
+        case "it.polimi.is23am10.server.network.messages.ChatMessage":
+          return context.deserialize(jsonObject, ChatMessage.class);
+        case "it.polimi.is23am10.server.network.messages.AvailableGamesMessage":
+          return context.deserialize(jsonObject, AvailableGamesMessage.class);
+        case "it.polimi.is23am10.server.network.messages.ErrorMessage":
+          return context.deserialize(jsonObject, ErrorMessage.class);
+        case "it.polimi.is23am10.server.network.messages.SnoozeACKMessage":
+          return context.deserialize(jsonObject, SnoozeACKMessage.class);
+        default:
+          throw new JsonParseException("Unknown class name: " + className);
+      }
+    }
+  }
+
+  /** The timer schedule execution class. */
+  protected class AlarmTask extends TimerTask {
+    /** The consumer to be executed. */
+    AlarmConsumer task;
+
+    /**
+     * Constructor.
+     *
+     * @param task The consumer to be assigned.
+     */
+    public AlarmTask(AlarmConsumer task) {
+      this.task = task;
+    }
+
+    /** {@inheritDoc} */
+    public void run() {
+      task.start();
+    }
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client/LockObject.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client/LockObject.html new file mode 100644 index 00000000..55ef9935 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client/LockObject.html @@ -0,0 +1 @@ +LockObject

LockObject

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 3100%0 of 0n/a010101
LockObject()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client/index.html new file mode 100644 index 00000000..60ffb249 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.client

it.polimi.is23am10.client

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total67 of 11039%6 of 60%71214252715
Client.MessageDeserializer6168%60%6713141201
Client.new TypeToken() {...}60%n/a11111111
Client.ClientGameStatus21100%n/a01040101
Client.AlarmTask13100%n/a02050201
LockObject3100%n/a01010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.client/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.client/index.source.html new file mode 100644 index 00000000..63dda138 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.client/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.client

it.polimi.is23am10.client

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total67 of 11039%6 of 60%71214252715
Client.java674339%60%71214252715
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AbstractCommand$Opcode.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AbstractCommand$Opcode.html new file mode 100644 index 00000000..61461845 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AbstractCommand$Opcode.html @@ -0,0 +1 @@ +AbstractCommand.Opcode

AbstractCommand.Opcode

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 45100%0 of 0n/a010801
static {...}45100%n/a010801
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AbstractCommand.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AbstractCommand.html new file mode 100644 index 00000000..8bbf4cd6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AbstractCommand.html @@ -0,0 +1 @@ +AbstractCommand

AbstractCommand

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total1 of 1392%1 of 250%130402
AbstractCommand(AbstractCommand.Opcode)1990%1150%120301
getOpcode()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AbstractCommand.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AbstractCommand.java.html new file mode 100644 index 00000000..7e9e19d4 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AbstractCommand.java.html @@ -0,0 +1,76 @@ +AbstractCommand.java

AbstractCommand.java

package it.polimi.is23am10.server.command;
+
+import java.io.Serializable;
+
+/**
+ * The abstract command class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public abstract class AbstractCommand implements Serializable {
+
+  /**
+   * Opcodes to communicate the action taken by a player.
+   * 
+   */
+  public enum Opcode {
+    /**
+     * Start a new game command.
+     */
+    START,
+    /**
+     * Add a new player to existing game command.
+     */
+    ADD_PLAYER,
+    /**
+     * Move tiles from board to user's bookshelf command.
+     */
+    MOVE_TILES,
+    /**
+     * Retrieve existing games to join command.
+     */
+    GET_GAMES,
+    /**
+     * Send chat message command
+     */
+    SEND_CHAT_MESSAGE,
+    /**
+     * Game timer snooze command.
+     */
+    GAME_TIMER,
+    /**
+     * Null command.
+     */
+    NULL
+  }
+
+  /**
+   * The opcode instance for the current command instance.
+   * 
+   */
+  protected Opcode opcode;
+
+  /**
+   * The opcode instance for the current command instance.
+   * 
+   * @param opcode command op code.
+   * 
+   */
+  protected AbstractCommand(Opcode opcode) {
+    this.opcode = opcode != null ? opcode : Opcode.NULL;
+  }
+
+  /**
+   * Opcode getter.
+   *
+   * @return The current command Opcode.
+   * 
+   */
+  public Opcode getOpcode() {
+    return opcode;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AddPlayerCommand.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AddPlayerCommand.html new file mode 100644 index 00000000..f48030e6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AddPlayerCommand.html @@ -0,0 +1 @@ +AddPlayerCommand

AddPlayerCommand

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 58100%2 of 875%2901505
equals(Object)29100%2675%250601
AddPlayerCommand(String, UUID)15100%n/a010601
hashCode()8100%n/a010101
getPlayerName()3100%n/a010101
getGameId()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AddPlayerCommand.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AddPlayerCommand.java.html new file mode 100644 index 00000000..3d717824 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/AddPlayerCommand.java.html @@ -0,0 +1,94 @@ +AddPlayerCommand.java

AddPlayerCommand.java

package it.polimi.is23am10.server.command;
+
+import java.util.UUID;
+
+/**
+ * The add new player to game command class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class AddPlayerCommand extends AbstractCommand {
+
+  /**
+   * The player name to add.
+   * 
+   */
+  private String playerName;
+
+  /**
+   * The game id reference.
+   * 
+   */
+  private UUID gameId;
+
+  /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+
+  /**
+   * Constructor.
+   *
+   * @param playerName The player name to add.
+   * @param gameId The game instance id.
+   * 
+   */
+  public AddPlayerCommand(String playerName, UUID gameId) {
+    super(Opcode.ADD_PLAYER);
+    this.playerName = playerName;
+    this.gameId = gameId;
+  }
+
+  /**
+   * Starting player name getter.
+   *
+   * @return The player name.
+   * 
+   */
+  public String getPlayerName() {
+    return playerName;
+  }
+
+  /**
+   * Game id getter.
+   *
+   * @return The game id reference.
+   * 
+   */
+  public UUID getGameId() {
+    return gameId;
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof AddPlayerCommand)) {
+      return false;
+    }
+
+    AddPlayerCommand casted = (AddPlayerCommand) obj;
+
+    return (opcode == casted.getOpcode()
+        && playerName.equals(casted.getPlayerName())
+        && gameId.equals(casted.getGameId()));
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public int hashCode() {
+    //we can have same player name for multiple games!
+    return playerName.hashCode() * gameId.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/GetAvailableGamesCommand.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/GetAvailableGamesCommand.html new file mode 100644 index 00000000..6b9c0e52 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/GetAvailableGamesCommand.html @@ -0,0 +1 @@ +GetAvailableGamesCommand

GetAvailableGamesCommand

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 12100%0 of 0n/a020502
GetAvailableGamesCommand()9100%n/a010401
equals(Object)3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/GetAvailableGamesCommand.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/GetAvailableGamesCommand.java.html new file mode 100644 index 00000000..2c0afa7d --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/GetAvailableGamesCommand.java.html @@ -0,0 +1,37 @@ +GetAvailableGamesCommand.java

GetAvailableGamesCommand.java

package it.polimi.is23am10.server.command;
+
+/**
+ * The command used by player to get the list of the games they can join.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class GetAvailableGamesCommand extends AbstractCommand {
+
+  /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+
+  /**
+   * Constructor.
+   *
+   */
+  public GetAvailableGamesCommand() {
+    super(Opcode.GET_GAMES);
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public boolean equals(Object obj) {
+    return (obj instanceof GetAvailableGamesCommand);
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/MoveTilesCommand.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/MoveTilesCommand.html new file mode 100644 index 00000000..98245353 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/MoveTilesCommand.html @@ -0,0 +1 @@ +MoveTilesCommand

MoveTilesCommand

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 74100%3 of 1070%31101806
equals(Object)35100%3770%360701
MoveTilesCommand(String, UUID, Map)18100%n/a010701
hashCode()12100%n/a010101
getMovingPlayer()3100%n/a010101
getGameId()3100%n/a010101
getMoves()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/MoveTilesCommand.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/MoveTilesCommand.java.html new file mode 100644 index 00000000..b2dbe6d0 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/MoveTilesCommand.java.html @@ -0,0 +1,110 @@ +MoveTilesCommand.java

MoveTilesCommand.java

package it.polimi.is23am10.server.command;
+
+import it.polimi.is23am10.utils.Coordinates;
+import it.polimi.is23am10.utils.MoveTileCommandTypeAdaptor;
+
+import java.util.Map;
+import java.util.UUID;
+import com.google.gson.annotations.JsonAdapter;
+import it.polimi.is23am10.server.model.items.board.Board;
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+
+/**
+ * The move tiles command class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class MoveTilesCommand extends AbstractCommand {
+
+  /**
+   * The player who calls the operation.
+   */
+  private String movingPlayer;
+
+  /**
+   * Map that associates the position of a picked tile
+   * on the {@link Board} to the destination position to move
+   * that same tile inside user's {@link Bookshelf}.
+   */
+  @JsonAdapter(MoveTileCommandTypeAdaptor.class)
+  private Map<Coordinates, Coordinates> moves;
+
+  /**
+   * Game id to specify in which match this command
+   * is executed. Must match with game currently playing.
+   */
+  private UUID gameId;
+
+  /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+
+  /**
+   * Public constructor.
+   *
+   * @param movingPlayer The player requesting the move action.
+   * @param gameId The game id reference.
+   * @param moves The map of moves. See javadoc above.
+   */
+  public MoveTilesCommand(String movingPlayer, UUID gameId, Map<Coordinates, Coordinates> moves) {
+    super(Opcode.MOVE_TILES);
+    this.movingPlayer = movingPlayer;
+    this.gameId = gameId;
+    this.moves = moves;
+  }
+
+  /**
+   * Moving player getter.
+   */
+  public String getMovingPlayer() {
+    return movingPlayer;
+  }
+
+  /**
+   * GameId getter.
+   */
+  public UUID getGameId() {
+    return gameId;
+  }
+
+  /**
+   * Moves map getter.
+   */
+  public Map<Coordinates, Coordinates> getMoves() {
+    return moves;
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof MoveTilesCommand)) {
+      return false;
+    }
+
+    MoveTilesCommand casted = (MoveTilesCommand) obj;
+
+    return (opcode == casted.getOpcode()
+        && movingPlayer.equals(casted.getMovingPlayer())
+        && gameId.equals(casted.getGameId())
+        && moves.equals(casted.getMoves()));
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public int hashCode() {
+    return movingPlayer.hashCode() * gameId.hashCode() * moves.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SendChatMessageCommand.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SendChatMessageCommand.html new file mode 100644 index 00000000..d7484f79 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SendChatMessageCommand.html @@ -0,0 +1 @@ +SendChatMessageCommand

SendChatMessageCommand

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total18 of 180%0 of 0n/a337733
SendChatMessageCommand(ChatMessage)120%n/a115511
getChatMessage()30%n/a111111
equals(Object)30%n/a111111
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SendChatMessageCommand.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SendChatMessageCommand.java.html new file mode 100644 index 00000000..b46329d6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SendChatMessageCommand.java.html @@ -0,0 +1,56 @@ +SendChatMessageCommand.java

SendChatMessageCommand.java

package it.polimi.is23am10.server.command;
+
+import it.polimi.is23am10.server.network.messages.ChatMessage;
+
+/**
+ * The command used by player to send a chat message.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class SendChatMessageCommand extends AbstractCommand {
+
+  /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+
+  /**
+   * Chat message to be sent
+   */
+  private ChatMessage msg;
+
+  /**
+   * Constructor.
+   *
+   */
+  public SendChatMessageCommand(ChatMessage m) {
+    super(Opcode.SEND_CHAT_MESSAGE);
+    this.msg = m;
+  }
+
+  /**
+   * Chat message getter.
+   *
+   * @return chat message.
+   */
+  public ChatMessage getChatMessage() {
+    return msg;
+  }
+
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public boolean equals(Object obj) {
+    return (obj instanceof SendChatMessageCommand);
+  }
+}
+
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SnoozeGameTimerCommand.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SnoozeGameTimerCommand.html new file mode 100644 index 00000000..e4904913 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SnoozeGameTimerCommand.html @@ -0,0 +1 @@ +SnoozeGameTimerCommand

SnoozeGameTimerCommand

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 42100%1 of 683%1701204
equals(Object)23100%1583%140501
SnoozeGameTimerCommand(String)12100%n/a010501
hashCode()4100%n/a010101
getPlayerName()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SnoozeGameTimerCommand.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SnoozeGameTimerCommand.java.html new file mode 100644 index 00000000..42bea386 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/SnoozeGameTimerCommand.java.html @@ -0,0 +1,72 @@ +SnoozeGameTimerCommand.java

SnoozeGameTimerCommand.java

package it.polimi.is23am10.server.command;
+
+/**
+ * The snooze game timer command class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class SnoozeGameTimerCommand extends AbstractCommand {
+
+  /**
+   * The player name who has snoozed the game timer.
+   * 
+   */
+  private String playerName;
+
+  /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+
+  /**
+   * Constructor.
+   *
+   * @param playerName The player name.
+   * 
+   */
+  public SnoozeGameTimerCommand(String playerName) {
+    super(Opcode.GAME_TIMER);
+    this.playerName = playerName;
+  }
+
+  /**
+   * Player name getter.
+   *
+   * @return The player name.
+   * 
+   */
+  public String getPlayerName() {
+    return playerName;
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof SnoozeGameTimerCommand)) {
+      return false;
+    }
+
+    SnoozeGameTimerCommand casted = (SnoozeGameTimerCommand) obj;
+
+    return (opcode == casted.getOpcode()
+        && playerName.equals(casted.getPlayerName()));
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public int hashCode() {
+    return playerName.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/StartGameCommand.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/StartGameCommand.html new file mode 100644 index 00000000..e700d43f --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/StartGameCommand.html @@ -0,0 +1 @@ +StartGameCommand

StartGameCommand

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 53100%2 of 875%2901505
equals(Object)28100%2675%250601
StartGameCommand(String, Integer)15100%n/a010601
hashCode()4100%n/a010101
getStartingPlayerName()3100%n/a010101
getMaxPlayers()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/StartGameCommand.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/StartGameCommand.java.html new file mode 100644 index 00000000..c7bd7e39 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/StartGameCommand.java.html @@ -0,0 +1,91 @@ +StartGameCommand.java

StartGameCommand.java

package it.polimi.is23am10.server.command;
+
+/**
+ * The start game command class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class StartGameCommand extends AbstractCommand {
+
+  /**
+   * The player name who has started a game.
+   * 
+   */
+  private String startingPlayerName;
+
+  /**
+   * The chosen max player value.
+   * 
+   */
+  private Integer maxPlayers;
+
+  /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+
+  /**
+   * Constructor.
+   *
+   * @param startingPlayerName The chosen player name who has started a game request.
+   * @param maxPlayers The chosen max player value for the game request.
+   * 
+   */
+  public StartGameCommand(String startingPlayerName, Integer maxPlayers) {
+    super(Opcode.START);
+    this.startingPlayerName = startingPlayerName;
+    this.maxPlayers = maxPlayers;
+  }
+
+  /**
+   * Starting player name getter.
+   *
+   * @return The player name.
+   * 
+   */
+  public String getStartingPlayerName() {
+    return startingPlayerName;
+  }
+
+  /**
+   * Max player getter.
+   *
+   * @return The max player value allowed for the requested game.
+   * 
+   */
+  public Integer getMaxPlayers() {
+    return maxPlayers;
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof StartGameCommand)) {
+      return false;
+    }
+
+    StartGameCommand casted = (StartGameCommand) obj;
+
+    return (opcode == casted.getOpcode()
+        && startingPlayerName.equals(casted.getStartingPlayerName())
+        && maxPlayers == (casted.getMaxPlayers()));
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public int hashCode() {
+    return startingPlayerName.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/index.html new file mode 100644 index 00000000..a88f8a52 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.command

it.polimi.is23am10.server.command

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total19 of 31593%9 of 3473%124578432818
SendChatMessageCommand180%n/a33773311
AbstractCommand11292%1150%13040201
MoveTilesCommand74100%3770%3110180601
AddPlayerCommand58100%2675%290150501
StartGameCommand53100%2675%290150501
AbstractCommand.Opcode45100%n/a01080101
SnoozeGameTimerCommand42100%1583%170120401
GetAvailableGamesCommand12100%n/a02050201
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/index.source.html new file mode 100644 index 00000000..8b8ea035 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.command/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.command

it.polimi.is23am10.server.command

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total19 of 31593%9 of 3473%124578432818
SendChatMessageCommand.java180%n/a33773311
AbstractCommand.java15798%1150%140120302
MoveTilesCommand.java74100%3770%3110180601
AddPlayerCommand.java58100%2675%290150501
StartGameCommand.java53100%2675%290150501
SnoozeGameTimerCommand.java42100%1583%170120401
GetAvailableGamesCommand.java12100%n/a02050201
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ClientConnectionChecker.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ClientConnectionChecker.html new file mode 100644 index 00000000..acd1ee97 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ClientConnectionChecker.html @@ -0,0 +1 @@ +ClientConnectionChecker

ClientConnectionChecker

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total68 of 26073%7 of 2470%818206916
checkActivePlayersInactivity()259879%4866%4763101
run()230%n/a118811
checkAllPlayers()155076%1583%1441501
advanceGame(AbstractPlayerConnector)52180%2250%232901
ClientConnectionChecker(long)13100%n/a010501
expired(long, long, long)10100%2100%020101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ClientConnectionChecker.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ClientConnectionChecker.java.html new file mode 100644 index 00000000..d52b151f --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ClientConnectionChecker.java.html @@ -0,0 +1,234 @@ +ClientConnectionChecker.java

ClientConnectionChecker.java

package it.polimi.is23am10.server.controller;
+
+import java.rmi.RemoteException;
+import java.util.Set;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NegativeMatchedBlockCountException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NullMatchedBlockCountException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NullScoreBlockListException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException;
+import it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler;
+import it.polimi.is23am10.server.network.gamehandler.GameHandler;
+import it.polimi.is23am10.server.network.gamehandler.exceptions.GameSnapshotUpdateException;
+import it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity;
+import it.polimi.is23am10.server.network.messages.ErrorMessage;
+import it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector;
+import it.polimi.is23am10.utils.ErrorTypeString;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+
+/**
+ * The server client connection checker class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+@SuppressWarnings({ "checkstyle:nonemptyatclausedescriptioncheck" })
+public final class ClientConnectionChecker implements Runnable {
+
+  /**
+   * The logger, an instance of {@link Logger}.
+   *
+   */
+  protected Logger logger = LogManager.getLogger(ClientConnectionChecker.class);
+  
+  /**
+   * The connected players.
+   *
+   */
+  protected Set<AbstractPlayerConnector> pcs;
+
+  /**
+   * The acive game handlers.
+   *
+   */
+  protected Set<GameHandler> ghs;
+
+  /**
+   * The max connection snoozer miss time: 15 seconds.
+   * This is 3 times the client snooze frequency.
+   *
+   */
+  protected final long MAX_SNOOZE_TIMEOUT_MS = 1000 * 15;
+
+  /**
+   * The max game turn inactivity time.
+   *
+   */
+  protected long MAX_TURN_INACTIVITY_MS;
+
+  /**
+   * Constructor.
+   *
+   * @param maxTurnInactivityTimeMs the max configured game turn inactivity time in ms.
+   *
+   */
+  public ClientConnectionChecker(long maxTurnInactivityTimeMs) {
+    MAX_TURN_INACTIVITY_MS = maxTurnInactivityTimeMs;
+  }
+
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public void run() {
+    while(true) {
+      try {
+        checkAllPlayers();
+        checkActivePlayersInactivity();
+        Thread.sleep(5000);
+      } catch (GameSnapshotUpdateException e) {
+        // Logging as fatal here as it's failing to send a game snapshot. Other
+        // message delivery failures will be considered errors.
+        logger.fatal("{} {} {}",
+            ServerDebugPrefixString.START_COMMAND_PREFIX,
+            ErrorTypeString.ERROR_UPDATING_GAME, e);
+        // Not adding the error here since it will not be possible to be sent
+        // to player if it already failed delivering a game.
+      } catch (InterruptedException e) {
+        logger.error(e.getMessage());
+      }
+    } 
+  }
+
+  /**
+   * Advance the game state if an active player has been disconnected.
+   *
+   * @param pc the disconnected player connector reference.
+   * @throws NullScoreBlockListException If the list of scoreblocks is null.
+   * @throws NullPlayerBookshelfException If bookshelf is null.
+   * @throws NullIndexValueException If the index provided is null.
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds.
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds.
+   * @throws NegativeMatchedBlockCountException If the number of matched blocks to set is negative.
+   * @throws NullMatchedBlockCountException If the number of matched blocks to set is null.
+   * @throws NullPointerException Generic NPE.
+   * @throws InterruptedException Thread interruption exception.
+   * @throws NullGameHandlerInstance If it is not possible to retrieve a game handler referece by id.
+   * @throws GameSnapshotUpdateException If not able to push game update.
+   *
+   */
+  protected void advanceGame(AbstractPlayerConnector pc)
+      throws BookshelfGridColIndexOutOfBoundsException, BookshelfGridRowIndexOutOfBoundsException,
+      NullIndexValueException, NullPlayerBookshelfException, NullScoreBlockListException, NullPointerException,
+      NullMatchedBlockCountException, NegativeMatchedBlockCountException, InterruptedException, NullGameHandlerInstance, GameSnapshotUpdateException {
+    if (pc == null) {
+      logger.error("Can not advance the game state after the active player disconnection, null player connector received");
+      return;
+    }
+    //call next turn if the disconnected player is the active player
+    GameHandler handlerRef = ServerControllerState.getGameHandlerByUUID(pc.getGameId());
+    if (handlerRef.getGame().getActivePlayer().equals(pc.getPlayer())) {
+      handlerRef.getGame().nextTurn();
+      handlerRef.pushGameState();
+      handlerRef.updateCurrentPlayerHandler();
+    }
+  }
+
+  /**
+   * Perform connection check on all connected players.
+   * @throws GameSnapshotUpdateException
+   *
+   */
+  protected void checkAllPlayers() throws GameSnapshotUpdateException {
+    try {
+      pcs = ServerControllerState.getPlayersPool();
+      synchronized(pcs) {
+        for (AbstractPlayerConnector pc : pcs) {
+          if (pc.getPlayer().getIsConnected() && expired(pc.getLastSnoozeMs(), System.currentTimeMillis(), MAX_SNOOZE_TIMEOUT_MS)) {
+            logger.warn("Detected connection loss for {}, disconnecting the player", pc.getPlayer().getPlayerName());
+            pc.getPlayer().setIsConnected(false);
+
+            //call next turn if the disconnected player is the active player
+            advanceGame(pc);
+          }
+        }
+      }
+    } catch(
+      NullGameHandlerInstance | BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+      | NullIndexValueException | NullPlayerBookshelfException | NullScoreBlockListException | NullPointerException
+      | NullMatchedBlockCountException | NegativeMatchedBlockCountException e) {
+      logger.error("{} {}", ErrorTypeString.ERROR_GAME_STATE, e);
+    } catch(InterruptedException e) {
+      logger.error("{} {}", ErrorTypeString.ERROR_MESSAGE_DELIVERY, e);
+    }
+  }
+
+  /**
+   * Perform activity check on all the active players across all games.
+   * @throws GameSnapshotUpdateException
+   *
+   */
+  protected void checkActivePlayersInactivity() throws GameSnapshotUpdateException {
+    try {
+      ghs = ServerControllerState.getGamePools();
+      synchronized(ghs) {
+        for (GameHandler gh : ghs) {
+          CurrentPlayerHandler h = gh.getCurrentPlayerHandler();
+          if (h.getPlayer().getIsConnected()
+            && expired(
+              h.getStartPlayingTimeMs(),
+              System.currentTimeMillis(), MAX_TURN_INACTIVITY_MS)  
+          ) {
+            AbstractPlayerConnector connectorRef = gh.getPlayerConnectorFromPlayer(h.getPlayer());
+            //already notified, perform disconnectoion
+            if (h.getNotified()) {
+              logger.warn("Detected turn inactivity for {}, disconnecting the player", h.getPlayer().getPlayerName());
+              h.getPlayer().setIsConnected(false);
+              if (connectorRef != null) {
+                connectorRef.notify(new ErrorMessage("You have been disconnected due to inactivity", h.getPlayer(), ErrorSeverity.ERROR));
+              } else {
+                logger.error(
+                  "{}: Failed to push warning message, can not find player connector from player", ErrorTypeString.ERROR_GAME_STATE);
+              }
+
+              //call next turn if the disconnected player is the active player
+              advanceGame(connectorRef);
+            //notify disconnection warning
+            } else {
+              h.setNotified(true);
+              h.setStartPlayingTimeMs(System.currentTimeMillis());
+              if (connectorRef != null) {
+                connectorRef.notify(
+                  new ErrorMessage("You will be disconnected for inactivity in " + String.valueOf(MAX_TURN_INACTIVITY_MS/1000) + " seconds",
+                    h.getPlayer(), ErrorSeverity.INFO));
+              } else {
+                logger.error("{}: Failed to push warning message, can not find player connector from player", ErrorTypeString.ERROR_GAME_STATE);
+              }
+            }
+          }
+        }
+      }
+    } catch(
+      NullGameHandlerInstance | BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+      | NullIndexValueException | NullPlayerBookshelfException | NullScoreBlockListException | NullPointerException
+      | NullMatchedBlockCountException | NegativeMatchedBlockCountException e) {
+      logger.error("{} {}", ErrorTypeString.ERROR_GAME_STATE, e);
+    } catch(InterruptedException | RemoteException e) {
+      logger.error("{} {}", ErrorTypeString.ERROR_MESSAGE_DELIVERY, e);
+    }
+  }
+
+  /**
+   * Check if a player activity is expired or not.
+   *
+   * @param lhs The left hand side of the operation.
+   * @param rhs The right hand side of the operation.
+   * @param limit The operation limit value.
+   * @return The requested check result.
+   *
+   */
+  protected boolean expired(long lhs, long rhs, long limit) {
+    return rhs - lhs > limit;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerAction.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerAction.html new file mode 100644 index 00000000..061d839b --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerAction.html @@ -0,0 +1 @@ +ServerControllerAction

ServerControllerAction

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total12 of 5276%3 of 650%3631013
execute(GetAvailableGamesCommand)120%20%223311
ServerControllerAction()22100%n/a010301
execute(AbstractPlayerConnector, AbstractCommand)18100%1375%130401
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerAction.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerAction.java.html new file mode 100644 index 00000000..0b1752d6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerAction.java.html @@ -0,0 +1,67 @@ +ServerControllerAction.java

ServerControllerAction.java

package it.polimi.is23am10.server.controller;
+
+import it.polimi.is23am10.server.command.AbstractCommand;
+import it.polimi.is23am10.server.command.GetAvailableGamesCommand;
+import it.polimi.is23am10.server.command.AbstractCommand.Opcode;
+import it.polimi.is23am10.server.controller.interfaces.ControllerConsumer;
+import it.polimi.is23am10.server.controller.interfaces.IServerControllerAction;
+import it.polimi.is23am10.server.network.messages.AvailableGamesMessage;
+import it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector;
+
+import java.util.Map;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * The server controller action class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class ServerControllerAction implements IServerControllerAction {
+
+  /**
+   * The logger, an instance of {@link Logger}.
+   *
+   */
+  private final Logger logger = LogManager.getLogger(ServerControllerAction.class);
+
+  /**
+   * A helper mapping to link a {@link Opcode} to the relative worker callback.
+   *
+   */
+  private final Map<Opcode, ControllerConsumer<Void, AbstractCommand>> actions = Map.of(
+      Opcode.START, startConsumer,
+      Opcode.ADD_PLAYER, addPlayerConsumer,
+      Opcode.MOVE_TILES, moveTilesConsumer,
+      Opcode.GET_GAMES, getAvailableGamesConsumer,
+      Opcode.SEND_CHAT_MESSAGE, sendChatMessageConsumer,
+      Opcode.GAME_TIMER, snoozeTimerConsumer);
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public void execute(AbstractPlayerConnector connector, AbstractCommand command) {
+    if (command == null || connector == null) {
+      return;
+    }
+    actions.get(command.getOpcode()).accept(logger, connector, command);
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public AvailableGamesMessage execute(GetAvailableGamesCommand command) {
+    if (command == null) {
+      return null;
+    }
+    return getAvailableGamesConsumerRmi.accept(logger, null, command);
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerRmiBindings.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerRmiBindings.html new file mode 100644 index 00000000..4359121e --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerRmiBindings.html @@ -0,0 +1 @@ +ServerControllerRmiBindings

ServerControllerRmiBindings

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total8 of 3878%2 of 450%2821806
setServerControllerActionServer(IServerControllerAction)4555%1150%121401
setServerControllerActionStub(IServerControllerAction)4555%1150%121401
rebindServerControllerAction(IServerControllerAction)13100%n/a010601
setRmiRegistry(Registry)3100%n/a010201
getRmiRegistry()2100%n/a010101
getServerControllerActionRmiStub()2100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerRmiBindings.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerRmiBindings.java.html new file mode 100644 index 00000000..0c27f9c2 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerRmiBindings.java.html @@ -0,0 +1,115 @@ +ServerControllerRmiBindings.java

ServerControllerRmiBindings.java

package it.polimi.is23am10.server.controller;
+
+import java.rmi.RemoteException;
+import java.rmi.registry.Registry;
+import java.rmi.server.UnicastRemoteObject;
+
+import it.polimi.is23am10.server.controller.exceptions.NullRmiServerException;
+import it.polimi.is23am10.server.controller.exceptions.NullRmiStubException;
+import it.polimi.is23am10.server.controller.interfaces.IServerControllerAction;
+
+public final class ServerControllerRmiBindings {
+
+  /**
+   * RMI don't care port flag.
+   *
+   */
+  private static final int DONT_CARE = 0;
+
+  /**
+   * RMI global registry service.
+   *
+   */
+  private static Registry globalRmiRegistry;
+
+  /**
+   * RMI {@link ServerControllerAction} server instance.
+   *
+   */
+  @SuppressWarnings("unused")
+  private static IServerControllerAction serverControllerActionRmiServer;
+
+  /**
+   * RMI {@link ServerControllerAction} stub instance.
+   *
+   */
+  private static IServerControllerAction serverControllerActionRmiStub;
+
+  /**
+   * Private constructor.
+   *
+   */
+  private ServerControllerRmiBindings() {
+  }
+
+  /**
+   * Retrieve the Server rmi registry.
+   *
+   * @return The registry.
+   *
+   */
+  public static Registry getRmiRegistry() {
+    return globalRmiRegistry;
+  }
+
+  /**
+   * Set the rmi registry.
+   *
+   * @param r The registry to be set.
+   *
+   */
+  public static void setRmiRegistry(Registry r) {
+    globalRmiRegistry = r;
+  }
+
+  /**
+   * Retrieve the rmi stub for {@link ServerControllerAction}.
+   *
+   * @return The stub.
+   *
+   */
+  public static IServerControllerAction getServerControllerActionRmiStub() {
+    return serverControllerActionRmiStub;
+  }
+
+  /**
+   * Set the rmi server for {@link ServerControllerAction}.
+   *
+   * @param s The rmi server.
+   *
+   */
+  public static void setServerControllerActionServer(IServerControllerAction s) throws NullRmiServerException {
+    if (s == null) {
+      throw new NullRmiServerException();
+    }
+    serverControllerActionRmiServer = s;
+  }
+
+  /**
+   * Set the rmi stub for {@link ServerControllerAction}.
+   *
+   * @param s The rmi stub.
+   *
+   */
+  public static void setServerControllerActionStub(IServerControllerAction s) throws NullRmiServerException {
+    if (s == null) {
+      throw new NullRmiStubException();
+    }
+    serverControllerActionRmiStub = s;
+  }
+
+  /**
+   * Rebind a {@link ServerControllerAction}.
+   *
+   * @param sca The {@link ServerControllerAction} instance.
+   *
+   */
+  public static void rebindServerControllerAction(IServerControllerAction sca) throws RemoteException {
+    ServerControllerRmiBindings.setServerControllerActionServer(sca);
+    ServerControllerRmiBindings
+        .setServerControllerActionStub((IServerControllerAction) UnicastRemoteObject.exportObject(sca, DONT_CARE));
+    ServerControllerRmiBindings.getRmiRegistry().rebind(IServerControllerAction.class.getName(),
+        ServerControllerRmiBindings.getServerControllerActionRmiStub());
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket$CommandDeserializer.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket$CommandDeserializer.html new file mode 100644 index 00000000..5a040eda --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket$CommandDeserializer.html @@ -0,0 +1 @@ +ServerControllerSocket.CommandDeserializer

ServerControllerSocket.CommandDeserializer

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total12 of 7383%2 of 771%2821502
deserialize(JsonElement, Type, JsonDeserializationContext)125582%2571%2721401
ServerControllerSocket.CommandDeserializer(ServerControllerSocket)6100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket$CoordinatesDeserializer.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket$CoordinatesDeserializer.html new file mode 100644 index 00000000..82a363c5 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket$CoordinatesDeserializer.html @@ -0,0 +1 @@ +ServerControllerSocket.CoordinatesDeserializer

ServerControllerSocket.CoordinatesDeserializer

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total21 of 2722%0 of 0n/a124512
deserialize(JsonElement, Type, JsonDeserializationContext)210%n/a114411
ServerControllerSocket.CoordinatesDeserializer(ServerControllerSocket)6100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket.html new file mode 100644 index 00000000..38928bd4 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket.html @@ -0,0 +1 @@ +ServerControllerSocket

ServerControllerSocket

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total10 of 23295%5 of 1464%51325706
lambda$run$1(AbstractPlayerConnector)71973%n/a012701
update()24395%1375%130801
lambda$run$0(AbstractPlayerConnector)11292%1150%120101
run()75100%1375%1302301
buildCommand()42100%2250%2301001
ServerControllerSocket(PlayerConnectorSocket, ServerControllerAction)31100%n/a010901
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket.java.html new file mode 100644 index 00000000..4523def8 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerSocket.java.html @@ -0,0 +1,242 @@ +ServerControllerSocket.java

ServerControllerSocket.java

package it.polimi.is23am10.server.controller;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonIOException;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonSyntaxException;
+
+import it.polimi.is23am10.server.command.AbstractCommand;
+import it.polimi.is23am10.server.command.AddPlayerCommand;
+import it.polimi.is23am10.server.command.GetAvailableGamesCommand;
+import it.polimi.is23am10.server.command.MoveTilesCommand;
+import it.polimi.is23am10.server.command.SendChatMessageCommand;
+import it.polimi.is23am10.server.command.SnoozeGameTimerCommand;
+import it.polimi.is23am10.server.command.StartGameCommand;
+import it.polimi.is23am10.server.command.AbstractCommand.Opcode;
+import it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance;
+import it.polimi.is23am10.server.network.messages.AbstractMessage;
+import it.polimi.is23am10.server.network.messages.ErrorMessage;
+import it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity;
+import it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket;
+import it.polimi.is23am10.utils.Coordinates;
+import it.polimi.is23am10.utils.ErrorTypeString;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.lang.reflect.Type;
+import java.nio.charset.StandardCharsets;
+import java.rmi.RemoteException;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * The server controller class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+@SuppressWarnings({ "checkstyle:nonemptyatclausedescriptioncheck" })
+public final class ServerControllerSocket implements Runnable {
+
+  /**
+   * The logger, an instance of {@link Logger}.
+   *
+   */
+  protected Logger logger = LogManager.getLogger(ServerControllerSocket.class);
+
+  /**
+   * The single client connection instance of type {@link PlayerConnectorSocket}.
+   * This is the entry and exit point for out responsive application.
+   *
+   */
+  protected PlayerConnectorSocket playerConnector;
+
+  /**
+   * The {@link Gson} serializer and deserializer for game's
+   * {@link AbstractCommand}.
+   * We need a custom {@link Gson} instance as we have to deserialize polymorphic
+   * objects {@link AbstractCommand}.
+   *
+   */
+  protected Gson gson = new GsonBuilder()
+      .registerTypeAdapter(AbstractCommand.class, new CommandDeserializer())
+      .registerTypeAdapter(Coordinates.class, new CoordinatesDeserializer())
+      .create();
+
+  /**
+   * The action taker instance. This works on a given command {@link Opcode}.
+   *
+   */
+  protected ServerControllerAction serverControllerAction;
+
+  /**
+   * Constructor.
+   *
+   * @param playerConnector        The already build player connector instance
+   *                               with the low level socket instance.
+   * @param serverControllerAction The server action taker instance.
+   */
+  public ServerControllerSocket(PlayerConnectorSocket playerConnector,
+      ServerControllerAction serverControllerAction) {
+    this.playerConnector = playerConnector;
+    this.serverControllerAction = serverControllerAction;
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public void run() {
+
+    while (playerConnector != null && !playerConnector.getConnector().isClosed()) {
+      try {
+        AbstractCommand command = buildCommand();
+        serverControllerAction.execute(playerConnector, command);
+        update();
+      } catch (IOException e) {
+        logger.error("Failed to retrieve socket payload", e);
+        break;
+      } catch (JsonIOException | JsonSyntaxException e) {
+        logger.error("Failed to parse socket payload", e);
+      } catch (InterruptedException e) {
+        logger.error("Failed get response message from the queue", e);
+        // note, we are not raising the interrupted flag as we don't want to stop this
+        // thread.
+      }
+    }
+    
+    playerConnector.getPlayer().setIsConnected(false);
+    logger.info("Player {} disconnected", playerConnector.getPlayer().getPlayerName());
+    try {
+      ServerControllerState.getGameHandlerByUUID(
+          playerConnector.getGameId()).getPlayerConnectors()
+          .stream()
+          .filter(pc -> !pc.getPlayer().getPlayerName().equals(playerConnector.getPlayer().getPlayerName()))
+          .forEach(pc -> {
+            try {
+              pc.notify(
+                  new ErrorMessage(String.format(ErrorTypeString.WARNING_PLAYER_DISCONNECT,
+                      playerConnector.getPlayer().getPlayerName()), ErrorSeverity.INFO));
+            } catch (InterruptedException | RemoteException e) {
+              logger.error("{} {}", ErrorTypeString.ERROR_MESSAGE_DELIVERY, e);
+            }
+          });
+    } catch (NullGameHandlerInstance e) {
+      logger.error(" {} {}", ErrorTypeString.ERROR_ADDING_HANDLER, e);
+    }
+  }
+  /**
+   * Build the response message and sent it to the client when any game update is
+   * available.
+   *
+   * @throws IOException          On output stream failure.
+   * @throws InterruptedException On queue message retrieval failure.
+   * 
+   */
+  protected void update() throws InterruptedException, IOException {
+    AbstractMessage msg = playerConnector.getMessageFromQueue();
+    if (msg != null) {
+      PrintWriter printer;
+      synchronized (playerConnector.getConnector()) {
+        printer = new PrintWriter(playerConnector.getConnector().getOutputStream(), true,
+            StandardCharsets.UTF_8);
+        printer.println(gson.toJson(msg));
+      }
+      logger.info("{} sent to client {}", msg.getMessageType(), msg.getMessage() == null ? "": msg.getMessage());
+    }
+  }
+
+  /**
+   * Build the player command deserializing the byte stream.
+   * The gson deserialization returns a base class type but if the byte stream
+   * contained a derived type, this can be casted at runtime on the need.
+   *
+   * @return An instance of the command object.
+   * @throws IOException         On output stream failure.
+   * @throws JsonIOException     On serialization failure due to I/O.
+   * @throws JsonSyntaxException On serialization failure due to malformed JSON.
+   * 
+   */
+  protected AbstractCommand buildCommand()
+      throws IOException, JsonIOException, JsonSyntaxException {
+    BufferedReader reader;
+    String payload = null;
+    synchronized (playerConnector.getConnector()) {
+      reader = new BufferedReader(
+          new InputStreamReader(playerConnector.getConnector().getInputStream()));
+      if (reader.ready()) {
+        payload = reader.readLine();
+      }
+    }
+    if (payload != null) {
+      logger.info("Socket buffer reader received {}", payload);
+    }
+    return gson.fromJson(payload, AbstractCommand.class);
+  }
+
+  /**
+   * Custom deserializer class definition for {@link Gson} usage.
+   * This works on polymorphic {@link AbstractCommand} objects.
+   * 
+   */
+  class CommandDeserializer implements JsonDeserializer<AbstractCommand> {
+    @Override
+    public AbstractCommand deserialize(
+        JsonElement json, Type typeOfT, JsonDeserializationContext context)
+        throws JsonParseException {
+      JsonObject jsonObject = json.getAsJsonObject();
+
+      String className = "";
+      try {
+        className = jsonObject.get("className").getAsString();
+      } catch (Exception e) {
+        throw new JsonParseException(e);
+      }
+
+      switch (className) {
+        case "it.polimi.is23am10.server.command.StartGameCommand":
+          return context.deserialize(jsonObject, StartGameCommand.class);
+        case "it.polimi.is23am10.server.command.AddPlayerCommand":
+          return context.deserialize(jsonObject, AddPlayerCommand.class);
+        case "it.polimi.is23am10.server.command.MoveTilesCommand":
+          return context.deserialize(jsonObject, MoveTilesCommand.class);
+        case "it.polimi.is23am10.server.command.GetAvailableGamesCommand":
+          return context.deserialize(jsonObject, GetAvailableGamesCommand.class);
+        case "it.polimi.is23am10.server.command.SendChatMessageCommand":
+          return context.deserialize(jsonObject, SendChatMessageCommand.class);
+        case "it.polimi.is23am10.server.command.SnoozeGameTimerCommand":
+          return context.deserialize(jsonObject, SnoozeGameTimerCommand.class);
+        default:
+          throw new JsonParseException("Unknown class name: " + className);
+      }
+    }
+  }
+
+  /**
+   * Custom deserializer class definition for {@link Gson} usage.
+   * This works on {@link Coordinates} objects.
+   * 
+   */
+  class CoordinatesDeserializer implements JsonDeserializer<Coordinates> {
+    @Override
+    public Coordinates deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
+        throws JsonParseException {
+      JsonObject obj = json.getAsJsonObject();
+      int row = obj.get("row").getAsInt();
+      int col = obj.get("col").getAsInt();
+      return new Coordinates(row, col);
+    }
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerState.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerState.html new file mode 100644 index 00000000..d069e627 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerState.html @@ -0,0 +1 @@ +ServerControllerState

ServerControllerState

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total16 of 25993%3 of 2487%527576215
addRmiProxyConnector(UUID, AbstractPlayerConnector)60%n/a112211
removePlayerByGame(UUID, Player)55791%2675%2522001
getRmiProxyConnector(UUID)50%n/a111111
removeGameHandlerById(UUID)45100%4100%0301701
addPlayerConnector(AbstractPlayerConnector)36100%4100%0301201
getGameHandlerByUUID(UUID)25100%2100%020801
static {...}19100%n/a010601
addGameHandler(GameHandler)17100%2100%020601
lambda$removePlayerByGame$3(UUID, Player, AbstractPlayerConnector)14100%1375%130101
lambda$addPlayerConnector$2(AbstractPlayerConnector, AbstractPlayerConnector)8100%n/a010101
lambda$getGameHandlerByUUID$4(UUID, GameHandler)6100%n/a010101
lambda$removeGameHandlerById$1(AbstractPlayerConnector)6100%n/a010101
lambda$removeGameHandlerById$0(UUID, GameHandler)6100%n/a010101
getPlayersPool()2100%n/a010101
getGamePools()2100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerState.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerState.java.html new file mode 100644 index 00000000..6a2b247e --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/ServerControllerState.java.html @@ -0,0 +1,248 @@ +ServerControllerState.java

ServerControllerState.java

package it.polimi.is23am10.server.controller;
+
+import it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance;
+import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
+import it.polimi.is23am10.server.model.player.Player;
+import it.polimi.is23am10.server.network.gamehandler.GameHandler;
+import it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector;
+import it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector;
+import it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket;
+
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Set;
+import java.util.UUID;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * The server controller state class definition.
+ * This should be a singleton-like instance owning
+ * the server current state.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+@SuppressWarnings({ "checkstyle:abbreviationaswordinnamecheck" })
+public final class ServerControllerState {
+
+  /**
+   * The logger, an instance of {@link Logger}.
+   *
+   */
+  private static final Logger logger = LogManager.getLogger(ServerControllerState.class);
+
+  /**
+   * Active {@link GameHandler} instances.
+   *
+   */
+  private static Set<GameHandler> gamePool = Collections.synchronizedSet(new HashSet<>());
+
+  /**
+   * Active players connected with their {@link AbstractPlayerConnector}
+   * instances.
+   *
+   */
+  private static Set<AbstractPlayerConnector> playersPool =
+      Collections.synchronizedSet(new HashSet<>());
+
+  /**
+   * References to rmi connectors proxies. The link is made through the unique playerIds.
+   *
+   */
+  private static Map<UUID, AbstractPlayerConnector> rmiConnectorsProxies = 
+    Collections.synchronizedMap(new HashMap<>());
+
+  /**
+   * Private constructor.
+   * 
+   */
+  private ServerControllerState() {
+  }
+
+  /**
+   * Add a new game handler to the pool.
+   *
+   * @param handler The game handler instance to add.
+   * @throws NullGameHandlerInstance If the game handler is null. On null game handler.
+   *
+   */
+  public static final void addGameHandler(
+      GameHandler handler) throws NullGameHandlerInstance {
+    if (handler == null) {
+      throw new NullGameHandlerInstance();
+    }
+    //synch performed by the collection
+    gamePool.add(handler);
+    logger.info(
+        "Added new game handler with id {}", handler.getGame().getGameId());
+  }
+
+  /**
+   * Remove a game handler from the pool.
+   * This performs all the clients disconnections.
+   *
+   * @param id The game id to remove.
+   *
+   */
+  public static final void removeGameHandlerById(UUID id) {
+    if (id == null) {
+      return;
+    }
+
+    Optional<GameHandler> target;
+
+    synchronized (gamePool) {
+      target = gamePool.stream()
+          .filter(game -> game.getGame().getGameId().equals(id))
+          .findFirst();
+    }
+    if (target.isPresent()) {
+      GameHandler targetHandler = target.get();
+      synchronized (targetHandler) {
+        targetHandler.getPlayerConnectors()
+            .stream()
+            // point of optimization, can be parallelized
+            .forEach(connector ->
+                removePlayerByGame(connector.getGameId(), connector.getPlayer()));
+      }
+      gamePool.remove(targetHandler);
+      logger.info("Removed game handler with id {}", id);
+    }
+  }
+
+  /**
+   * Add player link to the pool.
+   *
+   * @param playerConnector The connector object to be linked with a player.
+   * @throws NullPlayerConnector On null Player connector.
+   * @throws DuplicatePlayerNameException On duplicate player name.
+   *
+   */
+  public static final void addPlayerConnector(
+      AbstractPlayerConnector playerConnector) throws NullPlayerConnector, DuplicatePlayerNameException {
+    if (playerConnector == null) {
+      throw new NullPlayerConnector();
+    }
+    Optional<AbstractPlayerConnector> found;
+    synchronized(playersPool) {
+      found = playersPool.stream()
+        .filter(p -> p.getPlayer().getPlayerName().equals(playerConnector.getPlayer().getPlayerName()))
+        .findFirst();
+    }
+    if (found.isPresent()) {
+      throw new DuplicatePlayerNameException("Player name already in use");
+    }
+    //synch is performed by the collection
+    playersPool.add(playerConnector);
+    logger.info("Added new player connector");
+  }
+
+  /**
+   * Remove a player connector from the pool.
+   * This closes the socket connection.
+   *
+   * @param gameId     The game id reference.
+   * @param player The player to remove.
+   *
+   */
+  public static final void removePlayerByGame(UUID gameId, Player player) {
+    if (gameId == null || player == null) {
+      return;
+    }
+
+    Optional<AbstractPlayerConnector> target;
+
+    synchronized (playersPool) {
+      target = playersPool.stream()
+          .filter(connector ->
+              connector.getGameId().equals(gameId) && connector.getPlayer().equals(player))
+          .findFirst();
+    }
+    if (target.isPresent()) {
+      AbstractPlayerConnector targetConnector = target.get();
+      if (targetConnector.getClass() == PlayerConnectorSocket.class) {
+        try {
+          PlayerConnectorSocket ps = (PlayerConnectorSocket) targetConnector;
+          synchronized (ps.getConnector()) {
+            ps.getConnector().close();
+          }
+        } catch (IOException e) {
+          logger.error("Failed to close socket connection", e);
+        }
+      }
+      playersPool.remove(targetConnector);
+      logger.info("Removed player {} connector from game {}", player.getPlayerName(), gameId);
+    }
+  }
+
+  /**
+   * Finds a game handler in the game pool by its game id.
+   *
+   * @param gameId the UUID to search for
+   * @return the GameHandler, if found
+   * @throws NullGameHandlerInstance If the game handler is null. If game handler with that id is not found.
+   */
+  public static GameHandler getGameHandlerByUUID(UUID gameId) throws NullGameHandlerInstance {
+    Optional<GameHandler> target;
+
+    synchronized (gamePool) {
+      target = gamePool.stream()
+          .filter(gh -> gh.getGame().getGameId().equals(gameId))
+          .findFirst();
+    }
+    if (target.isPresent()) {
+      return target.get();
+    } else {
+      throw new NullGameHandlerInstance();
+    }
+  }
+
+  /**
+   * Player pool getter.
+   *
+   * @return The actively connected players.
+   *
+   */
+  public static synchronized Set<AbstractPlayerConnector> getPlayersPool() {
+    return playersPool;
+  }
+
+  /**
+   * Game pool getter.
+   *
+   * @return The actively started games instances.
+   *
+   */
+  public static synchronized Set<GameHandler> getGamePools() {
+    return gamePool;
+  }
+
+  /**
+   * Add a new rmi connector reference.
+   *
+   * @param id The player id.
+   * @param pc The proxy connector.
+   *
+   */
+  public static void addRmiProxyConnector(UUID id, AbstractPlayerConnector pc) {
+    rmiConnectorsProxies.put(id, pc);
+  }
+
+  /**
+   * Retrieve the rmi connector proxy associated to a player id.
+   *
+   * @return The rmi connector proxy.
+   *
+   */
+  public static AbstractPlayerConnector getRmiProxyConnector(UUID id) {
+    return rmiConnectorsProxies.get(id);
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/index.html new file mode 100644 index 00000000..633a46dd --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.controller

it.polimi.is23am10.server.controller

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total147 of 94184%22 of 7972%26823825054007
ClientConnectionChecker6819273%71770%81820691601
ServerControllerSocket.CoordinatesDeserializer21622%n/a12451201
ServerControllerState1624393%32187%52757621501
ServerControllerSocket.CommandDeserializer126183%2571%282150201
ServerControllerAction124076%3350%363101301
ServerControllerSocket1022295%5964%5132570601
ServerControllerRmiBindings83078%2250%282180601
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/index.source.html new file mode 100644 index 00000000..23750cbb --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.controller/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.controller

it.polimi.is23am10.server.controller

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total147 of 94184%22 of 7972%26823825054007
ClientConnectionChecker.java6819273%71770%81820691601
ServerControllerSocket.java4328987%71466%82387711003
ServerControllerState.java1624393%32187%52757621501
ServerControllerAction.java124076%3350%363101301
ServerControllerRmiBindings.java83078%2250%282180601
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/GameFactory.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/GameFactory.html new file mode 100644 index 00000000..1a01b7fe --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/GameFactory.html @@ -0,0 +1 @@ +GameFactory

GameFactory

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 62100%0 of 0n/a0101201
getNewGame(String, Integer)62100%n/a0101201
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/GameFactory.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/GameFactory.java.html new file mode 100644 index 00000000..eec9cc4d --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/GameFactory.java.html @@ -0,0 +1,95 @@ +GameFactory.java

GameFactory.java

package it.polimi.is23am10.server.model.factory;
+
+import java.util.Arrays;
+
+import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
+import it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException;
+import it.polimi.is23am10.server.model.game.Game;
+import it.polimi.is23am10.server.model.game.Game.GameStatus;
+import it.polimi.is23am10.server.model.game.exceptions.FullGameException;
+import it.polimi.is23am10.server.model.game.exceptions.InvalidMaxPlayerException;
+import it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException;
+import it.polimi.is23am10.server.model.game.exceptions.NullMaxPlayerException;
+import it.polimi.is23am10.server.model.game.exceptions.PlayerNotFoundException;
+import it.polimi.is23am10.server.model.items.board.exceptions.InvalidNumOfPlayersException;
+import it.polimi.is23am10.server.model.items.board.exceptions.NullNumOfPlayersException;
+import it.polimi.is23am10.server.model.items.card.SharedCard;
+import it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException;
+import it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
+
+/**
+ * The GameFactory class definition.
+ * This creates a new {@link Game} object.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+@SuppressWarnings({ "checkstyle:nonemptyatclausedescriptioncheck" })
+public final class GameFactory {
+  /**
+   * Private constructor.
+   *
+   */
+  private GameFactory() {
+
+  }
+
+  /**
+   * Create a new {@link Game} instance.
+   *
+   * @param startingPlayerName The starting player name, who has requested the
+   *                           game.
+   * @param maxPlayerNum       The desired maximum player number, specified by the
+   *                           first player.
+   * @throws NullMaxPlayerException If no value for maximum number of players in the game is provided.
+   * @throws InvalidMaxPlayerException If value for maximum number of players in the game is not valid.
+   * @throws NullPlayerNameException If player name is null.
+   * @throws NullPlayerIdException If player id is null.
+   * @throws NullPlayerBookshelfException If bookshelf is null.
+   * @throws NullPlayerScoreException If player's score object is null.
+   * @throws NullPlayerPrivateCardException If player's private card object is null.
+   * @throws NullPlayerScoreBlocksException If player's scoreblocks list is null.
+   * @throws DuplicatePlayerNameException If player with that name already exists.
+   * @throws AlreadyInitiatedPatternException If assigning a pattern to a card that already has one.
+   * @throws NullPlayerNamesException If, while adding multiple players, the list of player names is null.
+   * @throws InvalidNumOfPlayersException If, while adding multiple players, there is an invalid number of them.
+   * @throws NullNumOfPlayersException If the number of players provided when filling the board is null.
+   * @throws NullAssignedPatternException If the pattern assigned to a card is null.
+   * @throws NotValidScoreBlockValueException If the value assigned to a scoreblock is not valid.
+   * @throws PlayerNotFoundException If the player with the name provided is not found.
+   * 
+   */
+  public static Game getNewGame(String startingPlayerName, Integer maxPlayerNum)
+      throws NullMaxPlayerException, InvalidMaxPlayerException, NullPlayerNameException,
+      NullPlayerIdException, NullPlayerBookshelfException, NullPlayerScoreException,
+      NullPlayerPrivateCardException, NullPlayerScoreBlocksException,
+      DuplicatePlayerNameException, AlreadyInitiatedPatternException,
+      NullPlayerNamesException, InvalidNumOfPlayersException, NullNumOfPlayersException,
+      NullAssignedPatternException,FullGameException, NotValidScoreBlockValueException, PlayerNotFoundException {
+
+    Game game = new Game();
+    game.setMaxPlayers(maxPlayerNum);
+    SharedCard firstCard = new SharedCard(game.getAssignedSharedPatterns(), game.getMaxPlayer());
+    game.addAssignedSharedPattern(firstCard.getPattern());
+    SharedCard secondCard = new SharedCard(game.getAssignedSharedPatterns(), game.getMaxPlayer());
+    game.addAssignedSharedPattern(secondCard.getPattern());
+
+    game.addPlayer(startingPlayerName);
+    // For testing purposes, setting active player to the "creator" player. Will be randomized once all players join.
+    game.setActivePlayer(game.getPlayerByName(startingPlayerName));
+    game.setGameBoard();
+    game.setSharedCards(Arrays.asList(firstCard, secondCard));
+    game.setStatus(GameStatus.WAITING_FOR_PLAYERS);
+
+    return game;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PlayerFactory.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PlayerFactory.html new file mode 100644 index 00000000..5d01c685 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PlayerFactory.html @@ -0,0 +1 @@ +PlayerFactory

PlayerFactory

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 83100%0 of 8100%0602002
getNewPlayer(String, Game)64100%4100%0301501
isPlayerNameDuplicate(String, List)19100%4100%030501
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PlayerFactory.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PlayerFactory.java.html new file mode 100644 index 00000000..29f37dea --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PlayerFactory.java.html @@ -0,0 +1,107 @@ +PlayerFactory.java

PlayerFactory.java

package it.polimi.is23am10.server.model.factory;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
+import it.polimi.is23am10.server.model.game.Game;
+import it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException;
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.card.PrivateCard;
+import it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException;
+import it.polimi.is23am10.server.model.player.Player;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
+import it.polimi.is23am10.server.model.score.Score;
+
+/**
+ * The PlayerFactory class definition.
+ * This creates a new {@link Player} object.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+@SuppressWarnings({ "checkstyle:nonemptyatclausedescriptioncheck" })
+public class PlayerFactory {
+
+  /**
+   * Private constructor.
+   * 
+   */
+  private PlayerFactory() {
+  }
+
+  /**
+   * Check if a player name has already been used across the game instance.
+   *
+   * @param playerName  The chosen player name.
+   * @param playerNames Current game instance already available players names.
+   * 
+   */
+  public static boolean isPlayerNameDuplicate(String playerName, List<String> playerNames) {
+    for (String name : playerNames) {
+      if (name.equals(playerName)) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Build a new {@link Player} object.
+   * This method has the ownership to ensure unique player names inside
+   * a game instance.
+   *
+   * @param playerName  The chosen player name.
+   * @param game The game reference instance where the new player will be added.
+   * @throws AlreadyInitiatedPatternException If assigning a pattern to a card that already has one.
+   * @throws DuplicatePlayerNameException If player with that name already exists.
+   * @throws NullPlayerIdException If player id is null.
+   * @throws NullPlayerBookshelfException If bookshelf is null.
+   * @throws NullPlayerNameException If player name is null.
+   * @throws NullPlayerPrivateCardException If player's private card object is null.
+   * @throws NullPlayerScoreBlocksException If player's scoreblocks list is null.
+   * @throws NullPlayerScoreException If player's score object is null.
+   * @throws NullAssignedPatternException If the pattern assigned to a card is null.
+   * 
+   */
+  public static Player getNewPlayer(String playerName, Game game)
+      throws NullPlayerNameException, NullPlayerIdException, NullPlayerBookshelfException,
+      NullPlayerScoreException, NullPlayerPrivateCardException, NullPlayerScoreBlocksException,
+      DuplicatePlayerNameException, AlreadyInitiatedPatternException, NullAssignedPatternException {
+
+    // Consumer must handle this {@link DuplicatePlayerNameException}.
+
+    if (playerName == null) {
+      throw new NullPlayerNameException(
+          "[Class PlayerFactory, method getNewPlayer]: attribute playerName must not be null");
+    }
+
+    if (isPlayerNameDuplicate(playerName, game.getPlayerNames())) {
+      throw new DuplicatePlayerNameException(
+          "[Class PlayerFactory, method getNewPlayer]: The name " + playerName + " already exists");
+    }
+
+    Player instance = new Player();
+    PrivateCard privateCard = new PrivateCard(game.getAssignedPrivatePatterns());
+    game.addAssignedPrivatePattern(privateCard.getPattern());
+
+    instance.setPlayerID(UUID.nameUUIDFromBytes(playerName.getBytes()));
+    instance.setPlayerName(playerName);
+    instance.setScore(new Score());
+    instance.setBookshelf(new Bookshelf());
+    instance.setPrivateCard(privateCard);
+    instance.setScoreBlocks(new ArrayList<>());
+    instance.setIsConnected(true);
+
+    return instance;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PrivatePatternFactory.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PrivatePatternFactory.html new file mode 100644 index 00000000..24570fd2 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PrivatePatternFactory.html @@ -0,0 +1 @@ +PrivatePatternFactory

PrivatePatternFactory

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total48 of 1,00595%0 of 148100%08924224015
lambda$static$11(Bookshelf)46594%12100%0721601
lambda$static$10(Bookshelf)46594%12100%0721601
lambda$static$9(Bookshelf)46594%12100%0721601
lambda$static$8(Bookshelf)46594%12100%0721601
lambda$static$7(Bookshelf)46594%12100%0721601
lambda$static$6(Bookshelf)46594%12100%0721601
lambda$static$5(Bookshelf)46594%12100%0721601
lambda$static$4(Bookshelf)46594%12100%0721601
lambda$static$3(Bookshelf)46594%12100%0721601
lambda$static$2(Bookshelf)46594%12100%0721601
lambda$static$1(Bookshelf)46594%12100%0721601
lambda$static$0(Bookshelf)46594%12100%0721601
static {...}141100%n/a0102601
getNotUsedPattern(List)28100%2100%020601
lambda$getNotUsedPattern$12(List, PrivatePattern)8100%2100%020101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PrivatePatternFactory.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PrivatePatternFactory.java.html new file mode 100644 index 00000000..8a376a2c --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/PrivatePatternFactory.java.html @@ -0,0 +1,472 @@ +PrivatePatternFactory.java

PrivatePatternFactory.java

package it.polimi.is23am10.server.model.factory;
+
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.tile.Tile.TileType;
+import it.polimi.is23am10.server.model.pattern.PrivatePattern;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+import java.util.List;
+import java.util.Random;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+/**
+ * Private pattern factory object.
+ * This creates a new {@link PrivatePattern}
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class PrivatePatternFactory {
+
+  /**
+   * Private constructor.
+   * 
+   */
+  private PrivatePatternFactory() {
+
+  }
+
+  /**
+   * The random generator instance.
+   * 
+   */
+  private static final Random random = new Random();
+
+  /**
+   * PrivatePattern Rule #1.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern1 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(0, 0).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(0, 2).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(1, 4).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 3).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 1).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 2).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #2.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern2 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(1, 1).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 0).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 2).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 4).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 3).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 4).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #3.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern3 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(1, 0).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(1, 3).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 2).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 1).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 4).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 0).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #4.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern4 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(0, 4).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 0).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 2).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 3).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 1).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 2).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #5.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern5 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(1, 1).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 1).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 2).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 4).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 0).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 3).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #6.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern6 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(0, 2).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(0, 4).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 3).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 1).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 3).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 0).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #7.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern7 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(0, 0).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(1, 3).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 1).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 0).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 4).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 2).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #8.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern8 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(0, 4).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(1, 1).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 2).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 0).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 3).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 3).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #9.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern9 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(0, 2).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 2).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 4).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 1).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 4).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 0).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #10.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern10 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(0, 4).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(1, 1).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 0).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 3).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 1).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 3).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #11.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern11 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(0, 2).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(1, 1).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 0).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 2).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 4).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 3).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * PrivatePattern Rule #12.
+   * 
+   */
+  public static final Function<Bookshelf, Integer> checkPattern12 = bs -> {
+    int tilesMatched = 0;
+
+    try {
+      if (bs.getBookshelfGridAt(0, 2).getType() == (TileType.BOOK)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(1, 1).getType() == (TileType.PLANT)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(2, 2).getType() == (TileType.FRAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(3, 3).getType() == (TileType.TROPHY)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(4, 4).getType() == (TileType.GAME)) {
+        tilesMatched++;
+      }
+      if (bs.getBookshelfGridAt(5, 0).getType() == (TileType.CAT)) {
+        tilesMatched++;
+      }
+      return tilesMatched;
+    } catch (BookshelfGridColIndexOutOfBoundsException | BookshelfGridRowIndexOutOfBoundsException
+        | NullIndexValueException e) {
+      return 0;
+    }
+  };
+
+  /**
+   * The list of {@link PrivatePattern} containing all the 12 different patterns.
+   * 
+   */
+  public static final List<PrivatePattern<Function<Bookshelf, Integer>>> patternsArray = List.of(
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern1, 1)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern2, 2)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern3, 3)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern4, 4)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern5, 5)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern6, 6)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern7, 7)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern8, 8)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern9, 9)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern10, 10)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern11, 11)),
+      (new PrivatePattern<Function<Bookshelf, Integer>>(checkPattern12, 12)));
+
+  /**
+   * Method used to get random PrivatePattern between the 12 possible.
+   *
+   * @param usedPatterns a List of {@link PrivatePattern} storing the already used
+   *                     patterns.
+   * @return a random pattern between the 12 possible.
+   */
+  public static PrivatePattern<Function<Bookshelf, Integer>> getNotUsedPattern(
+      List<PrivatePattern<Function<Bookshelf, Integer>>> usedPatterns) {
+    if (usedPatterns.isEmpty()) {
+      return patternsArray.get(random.nextInt(patternsArray.size()));
+    } else {
+      List<PrivatePattern<Function<Bookshelf, Integer>>> unusedPatterns = patternsArray.stream()
+          .filter(pattern -> !usedPatterns.contains(pattern))
+          .collect(Collectors.toList());
+      return unusedPatterns.get(random.nextInt(unusedPatterns.size()));
+    }
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/SharedPatternFactory.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/SharedPatternFactory.html new file mode 100644 index 00000000..a0e1ff88 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/SharedPatternFactory.html @@ -0,0 +1 @@ +SharedPatternFactory

SharedPatternFactory

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total12 of 1,77299%28 of 28490%281656250023
lambda$static$2(Bookshelf)30399%73784%72313201
lambda$static$0(Bookshelf)16998%32589%31512201
checkXShape(int, int, Tile[][])8597%61266%6101601
isValidSquare(int, int, Tile[][])7297%51168%591601
checkDescDiagonal(int, Tile[][])7197%2880%2611001
checkAscDiagonal(int, Tile[][])6096%3975%371901
static {...}141100%n/a0102601
lambda$static$5(Bookshelf)94100%10100%0601201
lambda$static$3(Bookshelf)78100%1990%1601301
lambda$static$7(Bookshelf)77100%16100%0901501
lambda$static$4(Bookshelf)77100%16100%0901501
lambda$static$9(Bookshelf)69100%12100%0701301
lambda$static$1(Bookshelf)68100%1787%150601
lambda$static$8(Bookshelf)67100%12100%0701301
lambda$static$14(Tile[][])60100%12100%070701
lambda$static$13(Tile[][])56100%12100%070701
lambda$static$12(Tile[][])46100%12100%070701
lambda$static$11(Tile[][])44100%12100%070701
lambda$static$10(Bookshelf)34100%6100%040601
lambda$static$15(Bookshelf)31100%8100%050701
getNotUsedPattern(List)28100%2100%020601
lambda$static$6(Bookshelf)22100%6100%040501
lambda$getNotUsedPattern$16(List, SharedPattern)8100%2100%020101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/SharedPatternFactory.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/SharedPatternFactory.java.html new file mode 100644 index 00000000..0d63a289 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/SharedPatternFactory.java.html @@ -0,0 +1,603 @@ +SharedPatternFactory.java

SharedPatternFactory.java

package it.polimi.is23am10.server.model.factory;
+
+import java.util.EnumMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.tile.Tile;
+import it.polimi.is23am10.server.model.items.tile.Tile.TileType;
+import it.polimi.is23am10.server.model.pattern.SharedPattern;
+
+/**
+ * Shared pattern factory object.
+ * 
+ * <p>
+ * NOTE: if not specified, each iteration of the player's bookshelf inside the
+ * functions is gonna be first over rows,then columns
+ * </p>
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+
+public final class SharedPatternFactory {
+
+  /**
+   * Private constructor.
+   * 
+   */
+  private SharedPatternFactory() {
+
+  }
+
+  /**
+   * Number of occurrences need to comply checkTwoAdjacent rule.
+   */
+  private static final int TWO_ADJACENT_OCC = 6;
+
+  /**
+   * Number of occurrences need to comply checkFourAdjacent rule.
+   */
+  private static final int FOUR_ADJACENT_OCC = 4;
+
+  /**
+   * Number of occurrences need to comply checkSquares rule.
+   */
+  private static final int SQUARES_OCC = 2;
+
+  /**
+   * Number of occurrences need to comply checkMaxThreeTypesCol rule.
+   */
+  private static final int MAX_THREE_TYPES_COL_OCC = 3;
+
+  /**
+   * Number of occurrences need to comply checkEightDiff rule.
+   */
+  private static final int EIGHT_DIFF_OCC = 8;
+
+  /**
+   * Number of occurrences need to comply checkMaxThreeTypesRow rule.
+   */
+  private static final int MAX_THREE_TYPES_ROW_OCC = 4;
+
+  /**
+   * Number of occurrences need to comply checkTwoColsAllDiff rule.
+   */
+  private static final int COL_ALL_DIFF_OCC = 2;
+
+  /**
+   * Number of occurrences need to comply checkTwoRowsAllDiff rule.
+   */
+  private static final int ROW_ALL_DIFF_OCC = 2;
+
+  /**
+   * The random generator instance.
+   * 
+   */
+  private static final Random random = new Random();
+
+  /**
+   * #1 in rulebook, #4 in images
+   * Rule that checks if there are at least six couples of the same tile type in
+   * adjacent positions (row or column).
+   *
+   */
+  public static final Predicate<Bookshelf> checkTwoAdjacent = bs -> {
+    int count = 0;
+    Tile[][] grid = bs.getBookshelfGrid();
+    Set<String> coordsAdjAlreadyCounted = new HashSet<>();
+
+    for (int i = 0; i < grid.length; i++) {
+      for (int j = 0; j < grid[i].length; j++) {
+        if (i < grid.length - 1 && grid[i][j].equals(grid[i + 1][j]) && !grid[i][j].isEmpty()
+            && (!coordsAdjAlreadyCounted.contains(String.valueOf(i) + String.valueOf(j))
+                && !coordsAdjAlreadyCounted.contains(String.valueOf(i + 1) + String.valueOf(j)))) {
+          coordsAdjAlreadyCounted.add(String.valueOf(i) + String.valueOf(j));
+          coordsAdjAlreadyCounted.add(String.valueOf(i + 1) + String.valueOf(j));
+          count++;
+          if (count >= TWO_ADJACENT_OCC) {
+            return true;
+          }
+        }
+
+        if (j < grid[i].length - 1 && grid[i][j].equals(grid[i][j + 1]) && !grid[i][j + 1].isEmpty()
+            && (!coordsAdjAlreadyCounted.contains(String.valueOf(i) + String.valueOf(j))
+                && !coordsAdjAlreadyCounted.contains(String.valueOf(i) + String.valueOf(j + 1)))) {
+          coordsAdjAlreadyCounted.add(String.valueOf(i) + String.valueOf(j));
+          coordsAdjAlreadyCounted.add(String.valueOf(i) + String.valueOf(j + 1));
+          count++;
+          if (count >= TWO_ADJACENT_OCC) {
+            return true;
+          }
+        }
+      }
+    }
+    return false;
+  };
+
+  /*
+   * #2 in rulebook, #3 in images
+   * Rule that checks if the elements on all the corners match.
+   *
+   */
+  public static final Predicate<Bookshelf> checkCornersMatch = bs -> {
+    Tile[][] grid = bs.getBookshelfGrid();
+    if (grid[0][0].isEmpty()) {
+      return false;
+    }
+    return (grid[0][0].equals(grid[0][grid[0].length - 1]) &&
+        grid[0][0].equals(grid[grid.length - 1][0]) &&
+        grid[0][0].equals(grid[grid.length - 1][grid[0].length - 1]));
+  };
+
+  /**
+   * #3 in rulebook, #8 in images
+   * Rule that checks if there are at least 4 separate groups of 4 elements of
+   * the same type in adjacent positions(row or column).
+   *
+   */
+  public static final Predicate<Bookshelf> checkFourAdjacent = bs -> {
+    int count = 0;
+    Tile[][] grid = bs.getBookshelfGrid();
+    Set<String> coordsAdjAlreadyCounted = new HashSet<>();
+
+    for (int i = 0; i < grid.length; i++) {
+      for (int j = 0; j < grid[i].length; j++) {
+        if (i < grid.length - 3 && grid[i][j].equals(grid[i + 1][j]) && grid[i][j].equals(grid[i + 2][j])
+            && grid[i][j].equals(grid[i + 3][j]) && !grid[i][j].isEmpty()
+            && (!coordsAdjAlreadyCounted.contains(String.valueOf(i) + String.valueOf(j))
+                && !coordsAdjAlreadyCounted.contains(String.valueOf(i + 1) + String.valueOf(j))
+                && !coordsAdjAlreadyCounted.contains(String.valueOf(i + 2) + String.valueOf(j))
+                && !coordsAdjAlreadyCounted.contains(String.valueOf(i + 3) + String.valueOf(j)))) {
+          coordsAdjAlreadyCounted.add(String.valueOf(i) + String.valueOf(j));
+          coordsAdjAlreadyCounted.add(String.valueOf(i + 1) + String.valueOf(j));
+          coordsAdjAlreadyCounted.add(String.valueOf(i + 2) + String.valueOf(j));
+          coordsAdjAlreadyCounted.add(String.valueOf(i + 3) + String.valueOf(j));
+          count++;
+          if (count >= FOUR_ADJACENT_OCC) {
+            return true;
+          }
+        }
+
+        if (j < grid[i].length - 3 && grid[i][j].equals(grid[i][j + 1]) && grid[i][j].equals(grid[i][j + 2])
+            && grid[i][j].equals(grid[i][j + 3]) && !grid[i][j].isEmpty()
+            && (!coordsAdjAlreadyCounted.contains(String.valueOf(i) + String.valueOf(j))
+                && !coordsAdjAlreadyCounted.contains(String.valueOf(i) + String.valueOf(j + 1))
+                && !coordsAdjAlreadyCounted.contains(String.valueOf(i) + String.valueOf(j + 2))
+                && !coordsAdjAlreadyCounted.contains(String.valueOf(i) + String.valueOf(j + 3)))) {
+          coordsAdjAlreadyCounted.add(String.valueOf(i) + String.valueOf(j));
+          coordsAdjAlreadyCounted.add(String.valueOf(i) + String.valueOf(j + 1));
+          coordsAdjAlreadyCounted.add(String.valueOf(i) + String.valueOf(j + 2));
+          coordsAdjAlreadyCounted.add(String.valueOf(i) + String.valueOf(j + 3));
+          count++;
+          if (count >= FOUR_ADJACENT_OCC) {
+            return true;
+          }
+        }
+      }
+    }
+    return false;
+  };
+
+  /**
+   * Support function that checks if there's a 2x2 square of tiles with the same
+   * type.
+   * 
+   * @param startRow Starting row from where I want to check if it's a valid
+   *                 square.
+   * @param startCol Starting col from where I want to check if it's a valid
+   *                 square.
+   * @param grid     bookshelf grid.
+   * @return True if the square is present.
+   */
+  private static final boolean isValidSquare(int startRow, int startCol, Tile[][] grid) {
+    if (startRow >= grid.length || startCol >= grid[0].length || startRow < 0 || startCol < 0) {
+      return false;
+    }
+    TileType currType = grid[startRow][startCol].getType();
+    return (grid[startRow][startCol].equals(grid[startRow + 1][startCol])
+        && grid[startRow][startCol].equals(grid[startRow][startCol + 1])
+        && grid[startRow][startCol].equals(grid[startRow + 1][startCol + 1]) && currType != TileType.EMPTY);
+  }
+
+  /*
+   * #4 in rulebook, #1 in images
+   * Rule that checks if there are at least two 2x2 squares of tiles of the same
+   * type (the type has to be the same for both the squares).
+   * 
+   */
+  public static final Predicate<Bookshelf> checkSquares = bs -> {
+    Tile[][] grid = bs.getBookshelfGrid();
+    EnumMap<TileType, Integer> checkCount = new EnumMap<>(TileType.class);
+
+    for (int i = 0; i < grid.length - 1; i++) {
+      for (int j = 0; j < grid[i].length - 1; j++) {
+        TileType currType = grid[i][j].getType();
+        if (isValidSquare(i, j, grid)) {
+          if (!checkCount.containsKey(currType)) {
+            checkCount.put(currType, 1);
+          } else {
+            int oldCount = checkCount.get(currType);
+            checkCount.put(currType, oldCount + 1);
+            if (checkCount.get(currType) >= SQUARES_OCC) {
+              return true;
+            }
+          }
+        }
+      }
+    }
+    return false;
+  };
+
+  /**
+   * #5 both in rulebook and images
+   * Rule that checks if there are at least three columns containing maximum 3
+   * different types of tiles.
+   *
+   */
+  public static final Predicate<Bookshelf> checkMaxThreeTypesInColumn = bs -> {
+    int countedColumns = 0;
+    Tile[][] grid = bs.getBookshelfGrid();
+
+    // here we want to check every column so we are iterating first over columns
+    for (int i = 0; i < grid[0].length; i++) {
+      Set<TileType> seenTypes = new HashSet<>();
+      boolean isFull = true;
+      for (int j = 0; j < grid.length; j++) {
+        if (grid[j][i].isEmpty()){
+          isFull = false;
+        }
+        if (!grid[j][i].isEmpty() && !seenTypes.contains(grid[j][i].getType())) {
+          seenTypes.add(grid[j][i].getType());
+        }
+      }
+      if (seenTypes.size() <= 3 && isFull) {
+        countedColumns++;
+        if (countedColumns >= MAX_THREE_TYPES_COL_OCC) {
+          return true;
+        }
+      }
+    }
+    return false;
+  };
+
+  /*
+   * #6 in rulebook, #9 in images 
+   * Rule that checks if there are at least eight different tiles of the same
+   * type.
+   *
+   */
+  public static final Predicate<Bookshelf> checkEightOfSameType = bs -> {
+    Tile[][] grid = bs.getBookshelfGrid();
+    EnumMap<TileType, Integer> checkCount = new EnumMap<>(TileType.class);
+    for (int i = 0; i < grid.length; i++) {
+      for (int j = 0; j < grid[i].length; j++) {
+        if (!grid[i][j].isEmpty()) {
+          if (!checkCount.containsKey(grid[i][j].getType())) {
+            checkCount.put(grid[i][j].getType(), 1);
+          } else {
+            int oldCount = checkCount.get(grid[i][j].getType());
+            checkCount.put(grid[i][j].getType(), oldCount + 1);
+          }
+          if (checkCount.get(grid[i][j].getType()) >= EIGHT_DIFF_OCC) {
+            return true;
+          }
+        }
+      }
+    }
+    return false;
+  };
+
+  /**
+   * Supporting method checking ascendent diagonal in Bookshelf.
+   * 
+   * @param startingRowOffset tells us if the diagonal is shifted vertically.
+   * @param grid              bookshelf grid
+   * @return True if diagonal is present.
+   */
+  private static final boolean checkAscDiagonal(int startingRowOffset, Tile[][] grid) {
+    if (startingRowOffset >= grid.length || startingRowOffset < 0) {
+      return false;
+    }
+    for (int i = 0; i < grid[0].length - 1; i++) {
+      if (!grid[i + startingRowOffset][i].equals(grid[i + 1 + startingRowOffset][i + 1])
+          || grid[i + startingRowOffset][i].isEmpty()) {
+        break;
+      }
+      if (i == grid[0].length - 2) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * Supporting method checking descendent diagonal in Bookshelf.
+   * 
+   * @param startingRowOffset tells us if the diagonal is shifted vertically.
+   * @param grid              bookshelf grid.
+   * @return True if diagonal is present.
+   */
+  private static final boolean checkDescDiagonal(int startingRowOffset, Tile[][] grid) {
+    if (startingRowOffset >= grid.length) {
+      return false;
+    }
+    for (int i = 0; i < grid[0].length - 1; i++) {
+      if (!grid[grid.length - 1 - i - startingRowOffset][i]
+          .equals(grid[grid.length - 2 - i - startingRowOffset][i + 1])
+          || grid[grid.length - 1 - i - startingRowOffset][i].isEmpty()) {
+        break;
+      }
+      if (i == grid[0].length - 2) {
+        return true;
+      }
+    }
+    return false;
+  }
+
+  /**
+   * #7 in rulebook, #11 in images
+   * Rule that checks if the diagonals are filled with tiles of the same type.
+   *
+   */
+  public static final Predicate<Bookshelf> checkDiagonalsSameType = bs -> {
+    Tile[][] grid = bs.getBookshelfGrid();
+
+    // I'm cycling with i=0,1 meaning that I'm checking both the diagonals if the
+    // starting row is the first one(i=0) or the second one (i=1)
+    for (int i = 0; i <= 1; i++) {
+      if (checkAscDiagonal(i, grid) || checkDescDiagonal(i, grid)) {
+        return true;
+      }
+    }
+
+    return false;
+  };
+
+  /**
+   * #8 in rulebook, #7 in images
+   * Rule that checks if there are maximum three different types in at least 4
+   * rows.
+   *
+   */
+  public static final Predicate<Bookshelf> checkMaxThreeTypesInRow = bs -> {
+    int countRows = 0;
+    Tile[][] grid = bs.getBookshelfGrid();
+    for (int i = 0; i < grid.length; i++) {
+      Set<TileType> seenTypes = new HashSet<>();
+      boolean isFull = true;
+      for (int j = 0; j < grid[0].length; j++) {
+        if (grid[i][j].isEmpty()) {
+          isFull = false;
+        }
+        if (!grid[i][j].isEmpty() && !seenTypes.contains(grid[i][j].getType())) {
+          seenTypes.add(grid[i][j].getType());
+        }
+      }
+
+      if (seenTypes.size() <= 3 && isFull) {
+        countRows++;
+        if (countRows >= MAX_THREE_TYPES_ROW_OCC) {
+          return true;
+        }
+      }
+    }
+    return false;
+  };
+
+  /**
+   * #9 in rulebook, #2 in images
+   * Rule that checks if there are at least two columns with all the elements of
+   * different type.
+   *
+   */
+  public static final Predicate<Bookshelf> checkTwoColumnAllDiff = bs -> {
+    int countColumns = 0;
+    Tile[][] grid = bs.getBookshelfGrid();
+    /*
+     * here I am iterating over columns first since I want to check if in a column
+     * there are all different types
+     * 
+     */
+    for (int i = 0; i < grid[0].length; i++) {
+      Set<TileType> seenTypes = new HashSet<>();
+      for (int j = 0; j < grid.length; j++) {
+        if (grid[j][i].isEmpty() || seenTypes.contains(grid[j][i].getType())) {
+          break;
+        }
+        seenTypes.add(grid[j][i].getType());
+        if (j == grid.length - 1) {
+          countColumns++;
+        }
+      }
+      if (countColumns >= COL_ALL_DIFF_OCC) {
+        return true;
+      }
+    }
+    return false;
+
+  };
+
+  /**
+   * #10 in rulebook, #6 in images
+   * Rule that checks if there are at least two rows full of different types of
+   * tiles.
+   *
+   */
+  public static final Predicate<Bookshelf> checkTwoRowsAllDiff = bs -> {
+    int countRows = 0;
+    Tile[][] grid = bs.getBookshelfGrid();
+    for (int i = 0; i < grid.length; i++) {
+      Set<TileType> seenTypes = new HashSet<>();
+      for (int j = 0; j < grid[0].length; j++) {
+        if (grid[i][j].isEmpty() || seenTypes.contains(grid[i][j].getType())) {
+          break;
+        }
+        seenTypes.add(grid[i][j].getType());
+        if (j == grid[0].length - 1) {
+          countRows++;
+        }
+      }
+      if (countRows >= ROW_ALL_DIFF_OCC) {
+        return true;
+      }
+    }
+    return false;
+
+  };
+
+  /**
+   * Support function that checks, starting from a tile in the grid, if it's part
+   * of an X shape of tiles with the same type.
+   * 
+   * @param row  Starting row index from where I start to check.
+   * @param col  Starting col index from where I start to check.
+   * @param grid Bookshelf grid.
+   * @return True if X shape is present.
+   * 
+   */
+  private static final boolean checkXShape(int row, int col, Tile[][] grid) {
+    if (row >= grid.length || col >= grid[0].length || row < 0 || col < 0) {
+      return false;
+    }
+    return (grid[row][col].equals(grid[row + 2][col]) &&
+        grid[row][col].equals(grid[row + 1][col + 1]) &&
+        grid[row][col].equals(grid[row + 2][col + 2]) &&
+        grid[row][col].equals(grid[row][col + 2]) && !grid[row][col].isEmpty());
+  }
+
+  /**
+   * #11 in rulebook, #10 in images
+   * Rule that checks if there are 5 tiles of the same type on a 'X' shape.
+   *
+   */
+  public static final Predicate<Bookshelf> checkTilesXShape = bs -> {
+    Tile[][] grid = bs.getBookshelfGrid();
+
+    for (int i = 0; i < grid.length - 2; i++) {
+      for (int j = 0; j < grid[0].length - 2; j++) {
+        if (checkXShape(i, j, grid)) {
+          return true;
+        }
+      }
+    }
+    return false;
+  };
+
+  /**
+   * #12 both in rulebook and images
+   * Rule that checks if the columns in the bookshelf are ordered (asc o desc) and
+   * the rest of the bookshelf is filled with {@link TileType#EMPTY}.
+   *
+   */
+  public static final Predicate<Bookshelf> checkOrderedBookshelfColumns = bs -> {
+    Tile[][] grid = bs.getBookshelfGrid();
+
+    Predicate<Tile[][]> checkDescOrder = g -> {
+      for (int i = 0; i < g.length; i++) {
+        for (int j = 0; j < g[0].length; j++) {
+          if (j >= i && (!g[i][j].isEmpty())) {
+            return false;
+          }
+          if (j < i && (g[i][j].isEmpty())) {
+            return false;
+          }
+        }
+      }
+      return true;
+    };
+
+    Predicate<Tile[][]> checkDescOrderShifted = g -> {
+      for (int i = 0; i < g.length; i++) {
+        for (int j = 0; j < g[0].length; j++) {
+          if (j > i && (g[i][j].getType() != TileType.EMPTY)) {
+            return false;
+          }
+          if (j <= i && (g[i][j].getType() == TileType.EMPTY)) {
+            return false;
+          }
+        }
+      }
+      return true;
+    };
+
+    Predicate<Tile[][]> checkAscOrder = g -> {
+      for (int i = 0; i < g.length; i++) {
+        for (int j = 0; j < g[0].length; j++) {
+          if (j < g[0].length - i && (g[i][j].getType() != TileType.EMPTY)) {
+            return false;
+          }
+          if (j >= g[0].length - i && (g[i][j].getType() == TileType.EMPTY)) {
+            return false;
+          }
+        }
+      }
+      return true;
+    };
+
+    Predicate<Tile[][]> checkAscOrderShifted = g -> {
+      for (int i = 0; i < g.length; i++) {
+        for (int j = 0; j < g[0].length; j++) {
+          if (j < g[0].length - 1 - i && (g[i][j].getType() != TileType.EMPTY)) {
+            return false;
+          }
+          if (j >= g[0].length - 1 - i && (g[i][j].getType() == TileType.EMPTY)) {
+            return false;
+          }
+        }
+      }
+      return true;
+    };
+
+    return (checkAscOrder.test(grid) || checkDescOrder.test(grid) || checkAscOrderShifted.test(grid)
+        || checkDescOrderShifted.test(grid));
+
+  };
+
+  /**
+   * The list of {@link SharedPattern} containing all the 12 different
+   * patterns.
+   * rules with their lambda functions
+   *
+   */
+  private static final List<SharedPattern<Predicate<Bookshelf>>> patternsArray = List.of(
+      (new SharedPattern<Predicate<Bookshelf>>(checkTwoAdjacent, 4)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkCornersMatch, 8)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkFourAdjacent, 3)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkSquares, 1)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkMaxThreeTypesInColumn,5)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkEightOfSameType,9)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkDiagonalsSameType,11)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkMaxThreeTypesInRow, 7)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkTwoColumnAllDiff,2)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkTwoRowsAllDiff, 6)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkTilesXShape, 10)),
+      (new SharedPattern<Predicate<Bookshelf>>(checkOrderedBookshelfColumns, 12)));
+
+  /**
+   * Method used to get random SharedPattern between the 12 possible.
+   *
+   * @param usedPatterns a List of {@link SharedPattern} storing the already used
+   *                     patterns.
+   * @return a random pattern between the 12 possible.
+   */
+  public static SharedPattern<Predicate<Bookshelf>> getNotUsedPattern(
+      List<SharedPattern<Predicate<Bookshelf>>> usedPatterns) {
+    if (usedPatterns.isEmpty()) {
+      return patternsArray.get(random.nextInt(patternsArray.size()));
+    } else {
+      List<SharedPattern<Predicate<Bookshelf>>> unusedPatterns = patternsArray.stream()
+          .filter(pattern -> !usedPatterns.contains(pattern))
+          .collect(Collectors.toList());
+      return unusedPatterns.get(random.nextInt(unusedPatterns.size()));
+    }
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/index.html new file mode 100644 index 00000000..f1ec8212 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.factory

it.polimi.is23am10.server.model.factory

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total60 of 2,92297%28 of 44093%282613050604104
PrivatePatternFactory4895795%148100%0892422401501
SharedPatternFactory1,76099%2825690%28165625002301
PlayerFactory83100%8100%060200201
GameFactory62100%n/a010120101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/index.source.html new file mode 100644 index 00000000..d9dcdb55 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.factory/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.factory

it.polimi.is23am10.server.model.factory

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total60 of 2,92297%28 of 44093%282613050604104
PrivatePatternFactory.java4895795%148100%0892422401501
SharedPatternFactory.java1,76099%2825690%28165625002301
PlayerFactory.java83100%8100%060200201
GameFactory.java62100%n/a010120101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/Game$GameStatus.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/Game$GameStatus.html new file mode 100644 index 00000000..e93f689e --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/Game$GameStatus.html @@ -0,0 +1 @@ +Game.GameStatus

Game.GameStatus

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 27100%0 of 0n/a010501
static {...}27100%n/a010501
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/Game.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/Game.html new file mode 100644 index 00000000..a60f690d --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/Game.html @@ -0,0 +1 @@ +Game

Game

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total51 of 69192%12 of 6681%117811152045
lambda$assignScoreBlocks$3(SharedCard)181137%3125%232401
addPlayers(List)153570%3562%3541101
getPlayerByName(String)91765%2250%232801
nextTurn()46293%4100%0331601
decideWinner(Player, Player)37996%1990%160901
lambda$getDisconnectedPlayersNum$5(Player)2571%1150%120101
activePlayerMove(Map)38100%2100%020901
checkEndGame()37100%10100%060701
addPlayer(Player)33100%4100%030601
Game()29100%n/a010801
isLastPlayer(Player)28100%1375%130201
addPlayer(String)22100%2100%020501
setSharedCards(List)22100%n/a010401
assignPlayers()22100%n/a010501
validMaxPlayers(Integer)20100%1583%140301
addAssignedSharedPattern(SharedPattern)13100%2100%020401
addAssignedPrivatePattern(PrivatePattern)13100%2100%020401
endGame()13100%n/a010501
setMaxPlayers(Integer)12100%2100%020401
setFirstPlayer(Player)11100%n/a010501
putTileAction(Tile, Coordinates)10100%n/a010201
getPlayerNames()9100%n/a010301
getDisconnectedPlayersNum()9100%n/a010401
setGameBoard()8100%n/a010201
takeTileAction(Coordinates)8100%n/a010101
static {...}7100%n/a010201
assignScoreBlocks()6100%n/a010201
lambda$getPlayerByName$2(String, Player)5100%n/a010101
setStatus(Game.GameStatus)4100%n/a010201
setActivePlayer(Player)4100%n/a010201
setWinnerPlayer(Player)4100%n/a010201
lambda$setFirstPlayer$1(Player)4100%n/a010101
lambda$setFirstPlayer$0(Player, Player)4100%n/a010101
getAssignedSharedPatterns()3100%n/a010101
getAssignedPrivatePatterns()3100%n/a010101
getGameId()3100%n/a010101
getMaxPlayer()3100%n/a010101
getPlayers()3100%n/a010101
getFirstPlayer()3100%n/a010101
getGameBoard()3100%n/a010101
getSharedCard()3100%n/a010101
getStatus()3100%n/a010101
getActivePlayer()3100%n/a010101
getWinnerPlayer()3100%n/a010101
lambda$checkEndGame$4(Player)3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/Game.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/Game.java.html new file mode 100644 index 00000000..2f877604 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/Game.java.html @@ -0,0 +1,754 @@ +Game.java

Game.java

package it.polimi.is23am10.server.model.game;
+
+import it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance;
+import it.polimi.is23am10.server.model.factory.PlayerFactory;
+import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
+import it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException;
+import it.polimi.is23am10.server.model.game.exceptions.FullGameException;
+import it.polimi.is23am10.server.model.game.exceptions.InvalidMaxPlayerException;
+import it.polimi.is23am10.server.model.game.exceptions.InvalidPlayersNumberException;
+import it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException;
+import it.polimi.is23am10.server.model.game.exceptions.NullMaxPlayerException;
+import it.polimi.is23am10.server.model.game.exceptions.NullPlayerException;
+import it.polimi.is23am10.server.model.game.exceptions.PlayerNotFoundException;
+import it.polimi.is23am10.server.model.items.board.Board;
+import it.polimi.is23am10.server.model.items.board.exceptions.BoardGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.board.exceptions.BoardGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.board.exceptions.InvalidNumOfPlayersException;
+import it.polimi.is23am10.server.model.items.board.exceptions.NullNumOfPlayersException;
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.NullTileException;
+import it.polimi.is23am10.server.model.items.card.SharedCard;
+import it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NegativeMatchedBlockCountException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NullMatchedBlockCountException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NullScoreBlockListException;
+import it.polimi.is23am10.server.model.items.tile.Tile;
+import it.polimi.is23am10.server.model.pattern.PrivatePattern;
+import it.polimi.is23am10.server.model.pattern.SharedPattern;
+import it.polimi.is23am10.server.model.player.Player;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
+import it.polimi.is23am10.utils.Coordinates;
+import it.polimi.is23am10.utils.MovesValidator;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+import it.polimi.is23am10.utils.exceptions.WrongBookShelfPicksException;
+import it.polimi.is23am10.utils.exceptions.WrongGameBoardPicksException;
+import it.polimi.is23am10.utils.exceptions.WrongMovesNumberException;
+
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Random;
+import java.util.UUID;
+import java.util.function.Function;
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
+
+/**
+ * The Game class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class Game implements Serializable {
+
+  /**
+   * The minimum number of players in a game instance.
+   * 
+   */
+  private static final Integer MIN_PLAYER_NUM = 2;
+
+  /**
+   * The maximum number of players in a game instance.
+   * 
+   */
+  private static final Integer MAX_PLAYER_NUM = 4;
+
+  /**
+   * A randomly generated {@link UUID} id.
+   * 
+   */
+  private UUID gameId;
+
+  /**
+   * The max number of players.
+   * Setting a default value to avoid undefined behaviors.
+   * 
+   */
+  private Integer maxPlayers = MIN_PLAYER_NUM;
+
+  /**
+   * List of {@link Player} type.
+   * This instance must never be null.
+   * 
+   */
+  private List<Player> players = new ArrayList<>();
+
+  /**
+   * A randomly chosen first player of the game.
+   * 
+   */
+  private Player firstPlayer;
+
+  /**
+   * Player currently playing.
+   */
+  private Player activePlayer;
+
+  /**
+   * Winner player.
+   */
+  private Player winnerPlayer;
+
+  /**
+   * The instance {@link Board} type.
+   * 
+   */
+  private Board gameBoard;
+
+  /**
+   * List of {@link SharedCard} type containing two randomly selected
+   * shared cards for this game.
+   */
+  private List<SharedCard> sharedCards;
+
+  /**
+   * All the possible status the game can be in.
+   * 
+   */
+  public enum GameStatus {
+    WAITING_FOR_PLAYERS,
+    STARTED,
+    LAST_ROUND,
+    ENDED
+  }
+
+  /**
+   * The current status of the game.
+   * 
+   */
+  private GameStatus status;
+
+  /**
+   * A cache to store already used shared patterns.
+   * 
+   */
+  private transient List<SharedPattern<Predicate<Bookshelf>>> assignedSharedPatterns;
+
+  /**
+   * A cache to store already used private patterns.
+   * 
+   */
+  private transient List<PrivatePattern<Function<Bookshelf, Integer>>> assignedPrivatePatterns;
+
+  /**
+   * Random object used to pick starting player and player positions.
+   */
+  private final transient Random random = new Random();
+
+  /**
+   * Constructor that assigns the only value that is
+   * generated, immutable and not set by factory.
+   */
+  public Game() {
+    gameId = UUID.randomUUID();
+    assignedSharedPatterns = new ArrayList<>();
+    assignedPrivatePatterns = new ArrayList<>();
+  }
+
+  /**
+   * Retrieve the already used {@link SharedPattern}s.
+   *
+   * @return The already assigned {@link SharedPattern}s.
+   *
+   */
+  public synchronized List<SharedPattern<Predicate<Bookshelf>>> getAssignedSharedPatterns() {
+    return assignedSharedPatterns;
+  }
+
+  /**
+   * Retrieve the already used {@link PrivatePattern}s.
+   *
+   * @return The already assigned {@link PrivatePattern}s.
+   *
+   */
+  public synchronized List<PrivatePattern<Function<Bookshelf, Integer>>> getAssignedPrivatePatterns() {
+    return assignedPrivatePatterns;
+  }
+
+  /**
+   * Add a new consumed {@link SharedPattern}.
+   *
+   * @param pattern The {@link SharedPattern} to be added.
+   * @throws NullAssignedPatternException If the pattern assigned to a card is null.
+   *
+   */
+  public synchronized void addAssignedSharedPattern(SharedPattern<Predicate<Bookshelf>> pattern)
+      throws NullAssignedPatternException {
+    if (pattern == null) {
+      throw new NullAssignedPatternException("shared");
+    }
+    assignedSharedPatterns.add(pattern);
+  }
+
+  /**
+   * Add a new consumed {@link PrivatePattern}.
+   *
+   * @param pattern The {@link PrivatePattern} to be added.
+   * @throws NullAssignedPatternException If the pattern assigned to a card is null.
+   *
+   */
+  public synchronized void addAssignedPrivatePattern(PrivatePattern<Function<Bookshelf, Integer>> pattern)
+      throws NullAssignedPatternException {
+    if (pattern == null) {
+      throw new NullAssignedPatternException("private");
+    }
+    assignedPrivatePatterns.add(pattern);
+  }
+
+  /**
+   * Check if a maxPlayer value is correct.
+   *
+   * @param maxPlayers The value to be controlled.
+   * @throws NullMaxPlayerException If no value for maximum number of players in the game is provided..
+   *
+   */
+  private boolean validMaxPlayers(Integer maxPlayers) throws NullMaxPlayerException {
+    if (maxPlayers == null) {
+      throw new NullMaxPlayerException();
+    }
+    return maxPlayers >= MIN_PLAYER_NUM && maxPlayers <= MAX_PLAYER_NUM;
+  }
+
+  /**
+   * The maxPlayers setter.
+   *
+   * @param maxPlayers The value to be assigned.
+   * @throws NullMaxPlayerException If no value for maximum number of players in the game is provided.
+   * @throws InvalidMaxPlayerException If value for maximum number of players in the game is not valid.
+   *
+   */
+  public synchronized void setMaxPlayers(Integer maxPlayers)
+      throws NullMaxPlayerException, InvalidMaxPlayerException {
+    if (!validMaxPlayers(maxPlayers)) {
+      throw new InvalidMaxPlayerException();
+    }
+    this.maxPlayers = maxPlayers;
+  }
+
+  /**
+   * The firstPlayer setter.
+   *
+   * @param playerToSet The first player's name.
+   *
+   */
+  public synchronized void setFirstPlayer(Player playerToSet) {
+    players.stream()
+        .filter(player -> player.equals(playerToSet))
+        .findFirst()
+        .ifPresent(player -> firstPlayer = player);
+  }
+
+  /**
+   * Add a new player to the game. Position is randomly determined,
+   * as position in players list is the order in the game.
+   *
+   * @param playerName The player's name.
+   * @throws NullPlayerNamesException If, while adding multiple players, the list of player names is null.
+   * @throws AlreadyInitiatedPatternException If assigning a pattern to a card that already has one.
+   * @throws DuplicatePlayerNameException If player with that name already exists.
+   * @throws NullPlayerScoreBlocksException If player's scoreblocks list is null.
+   * @throws NullPlayerPrivateCardException If player's private card object is null.
+   * @throws NullPlayerScoreException If player's score object is null.
+   * @throws NullPlayerBookshelfException If bookshelf is null.
+   * @throws NullPlayerIdException If player id is null.
+   * @throws NullPlayerNameException If player name is null.
+   * @throws NullAssignedPatternException If the pattern assigned to a card is null.
+   *
+   */
+  private synchronized void addPlayer(Player player) {
+    final Integer position = players.isEmpty() ? 0 : random.nextInt(players.size());
+    players.add(position, player);
+    if (players.size() == maxPlayers) {
+      setStatus(GameStatus.STARTED);
+      assignPlayers();
+    }
+  }
+
+  /**
+   * Creates and adds a new player to the game. Position is randomly determined,
+   * as position in players list is the order in the game.
+   *
+   * @param playerName The player's name.
+   * @return The instance of created player.
+   * @throws NullPlayerNamesException If, while adding multiple players, the list of player names is null.
+   * @throws AlreadyInitiatedPatternException If assigning a pattern to a card that already has one.
+   * @throws DuplicatePlayerNameException If player with that name already exists.
+   * @throws NullPlayerScoreBlocksException If player's scoreblocks list is null.
+   * @throws NullPlayerPrivateCardException If player's private card object is null.
+   * @throws NullPlayerScoreException If player's score object is null.
+   * @throws NullPlayerBookshelfException If bookshelf is null.
+   * @throws NullPlayerIdException If player id is null.
+   * @throws NullPlayerNameException If player name is null.
+   * @throws NullAssignedPatternException If the pattern assigned to a card is null.
+   * @throws FullGameException If game is full, on player trying to join.
+   */
+  public Player addPlayer(String playerName)
+      throws NullPlayerNamesException, NullPlayerNameException, NullPlayerIdException,
+      NullPlayerBookshelfException, NullPlayerScoreException, NullPlayerPrivateCardException,
+      NullPlayerScoreBlocksException, DuplicatePlayerNameException, AlreadyInitiatedPatternException,
+      FullGameException, NullAssignedPatternException {
+    if (getPlayers().size() == getMaxPlayer()) {
+      throw new FullGameException(
+          playerName + "could not be added, because the game reached its maximum number of players");
+    }
+    Player playerToAdd = PlayerFactory.getNewPlayer(playerName, this);
+    addPlayer(playerToAdd);
+    return playerToAdd;
+  }
+
+  /**
+   * Function that adds multiple players to game.
+   *
+   * @param players List of players to add.
+   * @throws NullPlayerException If player object is null.
+   * @throws InvalidPlayersNumberException If number of players to add is invalid.
+   * @throws DuplicatePlayerNameException If player with that name already exists.
+   */
+  public synchronized void addPlayers(List<Player> players)
+      throws NullPlayerException, InvalidPlayersNumberException, DuplicatePlayerNameException {
+
+    if (players == null) {
+      throw new NullPlayerException();
+    }
+    if ((players.size() + this.players.size()) != maxPlayers) {
+      throw new InvalidPlayersNumberException();
+    }
+    for (Player newPlayer : players) {
+      if (PlayerFactory.isPlayerNameDuplicate(newPlayer.getPlayerName(), getPlayerNames())) {
+        throw new DuplicatePlayerNameException(
+            "[Class Game, method addPlayers]: The name " + newPlayer.getPlayerName() + " already exists");
+      }
+    }
+    this.players.addAll(players);
+  }
+
+  /**
+   * GameBoard setter.
+   *
+   * @throws InvalidNumOfPlayersException If, while adding multiple players, there is an invalid number of them.
+   * @throws NullNumOfPlayersException If the number of players provided when filling the board is null.
+   *
+   */
+  public synchronized void setGameBoard() throws InvalidNumOfPlayersException, NullNumOfPlayersException {
+    this.gameBoard = new Board(maxPlayers);
+  }
+
+  /**
+   * The sharedCards setter.
+   *
+   */
+  public synchronized void setSharedCards(List<SharedCard> cards) {
+    this.sharedCards = new ArrayList<>();
+    sharedCards.add(cards.get(0));
+    sharedCards.add(cards.get(1));
+  }
+
+  /**
+   * The status setter.
+   *
+   * @param status The status to set.
+   *
+   */
+  public synchronized void setStatus(GameStatus status) {
+    this.status = status;
+  }
+
+  /**
+   * The gameId getter.
+   *
+   * @return The game id.
+   *
+   */
+  public synchronized UUID getGameId() {
+    return gameId;
+  }
+
+  /**
+   * MaxPlayer getter.
+   *
+   * @return The maximum number of players for the current game instance.
+   *
+   */
+  public synchronized Integer getMaxPlayer() {
+    return maxPlayers;
+  }
+
+  /**
+   * The players getter.
+   *
+   * @return A list containing all the current players.
+   *
+   */
+  public synchronized List<Player> getPlayers() {
+    return players;
+  }
+
+  /**
+   * The firstPlayer getter.
+   *
+   * @return The game first player.
+   *         This player has started the game.
+   *
+   */
+  public synchronized Player getFirstPlayer() {
+    return firstPlayer;
+  }
+
+  /**
+   * The gameBoard getter.
+   *
+   * @return The game board grid.
+   *
+   */
+  public synchronized Board getGameBoard() {
+    return gameBoard;
+  }
+
+  /**
+   * The sharedCards getter.
+   *
+   * @return The assigned shared cards to the current game instance.
+   *
+   */
+  public synchronized List<SharedCard> getSharedCard() {
+    return sharedCards;
+  }
+
+  /**
+   * The ended status getter.
+   *
+   * @return The current status of the game.
+   *
+   */
+  public synchronized GameStatus getStatus() {
+    return status;
+  }
+
+  /**
+   * Retrieve the current players' names.
+   *
+   * @return A {@link List} containing all the current players' names.
+   *
+   */
+  public synchronized List<String> getPlayerNames() {
+    return players.stream()
+        .map(Player::getPlayerName)
+        .collect(Collectors.toList());
+  }
+
+  /**
+   * Method used to retrieve a player from the list
+   * given its name.
+   *
+   * @param playerName The player name we are looking for.
+   * @return Player matching provided name.
+   * @throws PlayerNotFoundException If the player with the name provided is not found.
+   */
+  public synchronized Player getPlayerByName(String playerName) throws NullPlayerNameException, PlayerNotFoundException {
+    if (playerName == null) {
+      throw new NullPlayerNameException("[Class Game, method getPlayerByName]");
+    }
+    Optional<Player> player = players.stream()
+        .filter(p -> p.getPlayerName().equals(playerName))
+        .findFirst();
+    if (player.isPresent()) {
+      return player.get();
+    } else {
+      throw new PlayerNotFoundException();
+    }
+  }
+
+  /**
+   * Method to set the active player (playing this turn).
+   *
+   * @param player Player to set as active
+   */
+  public synchronized void setActivePlayer(Player player) {
+    this.activePlayer = player;
+  }
+
+  /**
+   * WinnerPlayer setter. To be called by {@link Game#endGame()} only.
+   *
+   * @param player The winning player to set.
+   */
+  public synchronized void setWinnerPlayer(Player player) {
+    this.winnerPlayer = player;
+  }
+
+  /**
+   * ActivePlayer getter.
+   *
+   * @return The active player.
+   */
+  public synchronized Player getActivePlayer() {
+    return activePlayer;
+  }
+
+  /**
+   * WinnerPlayer getter.
+   *
+   * @return The winning player.
+   */
+  public synchronized Player getWinnerPlayer() {
+    return this.winnerPlayer;
+  }
+
+  /**
+   * Method to assign the scoreBlocks. For both shared cards
+   * their pattern is checked against activePlayer's BS.
+   * If pattern is satisfied AND player didn't get a scoreBlock
+   * from that card, the first available SB is given to the player.
+   * 
+   */
+  private synchronized void assignScoreBlocks() {
+    sharedCards.forEach(c -> {
+      if (c.getPattern().getRule().test(activePlayer.getBookshelf()) && !c.getCardWinners().contains(activePlayer)) {
+        c.addCardWinner(activePlayer);
+        activePlayer.addScoreBlock(c.getScoreBlocks().remove(0));
+      }
+    });
+  }
+
+  /**
+   * Method that computes active player's Score, updates the view,
+   * checks if game is over and if not picks next player.
+   *
+   * @throws NullScoreBlockListException If the list of scoreblocks is null.
+   * @throws NullPlayerBookshelfException If bookshelf is null.
+   * @throws NullIndexValueException If the index provided is null.
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds.
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds.
+   * @throws NegativeMatchedBlockCountException If the number of matched blocks to set is negative.
+   * @throws NullMatchedBlockCountException If the number of matched blocks to set is null.
+   * @throws NullPointerException Generic NPE.
+   */
+  public synchronized void nextTurn()
+      throws BookshelfGridColIndexOutOfBoundsException, BookshelfGridRowIndexOutOfBoundsException,
+      NullIndexValueException, NullPlayerBookshelfException, NullScoreBlockListException, NullPointerException,
+      NullMatchedBlockCountException, NegativeMatchedBlockCountException {
+    activePlayer.setIsActivePlayer(false);
+    assignScoreBlocks();
+    activePlayer.updateScore();
+    checkEndGame();
+    
+    /*
+     * If there's only one player left, checkEndGame() will eventually 
+     * end the game here setting the ended flag to true, otherwise
+     * if the game has two or more players still connected we're entering
+     * this part of code to decide next player playing 
+     */
+    if (getStatus() != GameStatus.ENDED) {
+      try {
+        gameBoard.refillIfNeeded();
+      } catch (IndexOutOfBoundsException e) {
+        endGame();
+        return;
+      }
+      int nextPlayerIdx = (getPlayers().indexOf(activePlayer) + 1) % getPlayers().size();
+      
+      while(!players.get(nextPlayerIdx).getIsConnected()){
+        nextPlayerIdx = (nextPlayerIdx+ 1) % getPlayers().size();
+      }
+      setActivePlayer(players.get(nextPlayerIdx));
+      players.get(nextPlayerIdx).setIsActivePlayer(true);
+    }
+  }
+
+  /**
+   * Function that allows the player to take a tile from the board.
+   *
+   * @param coord The coordinates of the tile.
+   * @return The tile of the board the player wants to take.
+   * @throws BoardGridColIndexOutOfBoundsException If the board column index is out of bounds.
+   * @throws BoardGridRowIndexOutOfBoundsException If the board row index is out of bounds.
+   * @throws NullIndexValueException If the index provided is null.
+   */
+  public synchronized Tile takeTileAction(Coordinates coord)
+      throws BoardGridRowIndexOutOfBoundsException, BoardGridColIndexOutOfBoundsException,
+      NullIndexValueException {
+    return gameBoard.takeTileAt(coord.getRow(), coord.getCol());
+  }
+
+  /**
+   * Function that puts a tile inside the active player's bookshelf.
+   *
+   * @param t     Tile taken from the board.
+   * @param coord Coordinates of the bookshelf.
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds.
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds.
+   * @throws NullIndexValueException If the index provided is null.
+   * @throws NullTileException If the tile is null.
+   */
+  public synchronized void putTileAction(Tile t, Coordinates coord)
+      throws BookshelfGridColIndexOutOfBoundsException, BookshelfGridRowIndexOutOfBoundsException,
+      NullIndexValueException, NullTileException {
+    activePlayer.getBookshelf().setBookshelfGridIndex(coord.getRow(), coord.getCol(), t);
+  }
+
+  /**
+   * Quick helper function to determine if the player is the last in turn.
+   *
+   * @param playerToCheck A reference player instance on which to operate the
+   *                      check.
+   * @return Is playerToCheck the last one in turn
+   */
+  private synchronized boolean isLastPlayer(Player playerToCheck) {
+    final Integer idxDiff = players.indexOf(playerToCheck) - players.indexOf(firstPlayer);
+    return (idxDiff == -1 || idxDiff == (maxPlayers - 1));
+  }
+
+  /**
+   * Function that checks if there's a player who completed
+   * their bookshelf and sets flags accordingly.
+   * 
+   */
+  public synchronized void checkEndGame() {
+    if (activePlayer.getBookshelf().isBookshelfFull() && getStatus() != GameStatus.LAST_ROUND ) {
+      activePlayer.getScore().setExtraPoint();
+      // When one player completes their bookshelf, last turn starts
+      setStatus(GameStatus.LAST_ROUND);
+    }
+    // Regardless of bookshelf, if last player and lastRound, end game
+    if ((getStatus() == GameStatus.LAST_ROUND && isLastPlayer(activePlayer)) 
+        || players.stream().filter(p -> p.getIsConnected()).count() <= 1) {
+      endGame();
+    }
+  }
+
+  /**
+   * Helper method to be passed to {@link Game#endGame()}
+   * in order to determine the winner, according to game rules:
+   * In case of score parity, last player in turn wins.
+   *
+   * @param p1 First player
+   * @param p2 Second player
+   * @return Player who should win between two
+   */
+  private synchronized Player decideWinner(Player p1, Player p2) {
+    final Integer p1Score = p1.getScore().getTotalScore();
+    final Integer p2Score = p2.getScore().getTotalScore();
+
+    if (p1Score.equals(p2Score)) {
+      // Positions relative to firstPlayer can be negative -> Modular arithmetics
+      Integer startingPos1 = players.indexOf(p1) - players.indexOf(firstPlayer);
+      startingPos1 = startingPos1 > 0 ? startingPos1 : startingPos1 + maxPlayers;
+      Integer startingPos2 = players.indexOf(p2) - players.indexOf(firstPlayer);
+      startingPos2 = startingPos2 > 0 ? startingPos2 : startingPos2 + maxPlayers;
+      return (startingPos1 > startingPos2 ? p1 : p2);
+    } else {
+      return (p1Score > p2Score ? p1 : p2);
+    }
+  }
+
+  /**
+   * Method that is called when all players joined
+   * the game and the first one should be picked.
+   * Can be used in tests to force starting a game before
+   * the players threshold is met.
+   */
+  public synchronized void assignPlayers() {
+    Player choosenFirstPlayer = players.get(random.nextInt(players.size()));
+    activePlayer = choosenFirstPlayer;
+    activePlayer.setIsActivePlayer(true);
+    firstPlayer = choosenFirstPlayer;
+  }
+
+  /**
+   * Helper method that sets the game as ended
+   * and declares the winner.
+   */
+  private synchronized void endGame() {
+    setStatus(GameStatus.ENDED);
+    players.stream()
+        .reduce(this::decideWinner)
+        .ifPresent(this::setWinnerPlayer);
+  }
+
+  /**
+   * Simple helper function to get the number of disconnected
+   * players to discount when looking for available games.
+   * @return disconnected player num.
+   */
+  public synchronized Integer getDisconnectedPlayersNum() {
+    return (int) players
+      .stream()
+      .filter(p -> !p.getIsConnected())
+      .count();
+  }
+
+  /**
+   * Method that plays the active player's turn.
+   * It's important to understand the structure of the Hashmap, which allows to
+   * find a correspondence between the coordinates of the taken tile of the board
+   * and the coordinates of the player's bookshelf where he/she/they wants to put
+   * the taken tile in.
+   *
+   * <p>
+   * Note that I'm assuming all the params given to the method are valid since the
+   * input validation will be implemented client side in the selection of those
+   * coordinates.
+   * </p>
+   *
+   * @param selectedCoordinates Map containing the coordinates of selected tiles.
+   *                            from board as key and the corresponding
+   *                            coordinates of the active player bookshelf as
+   *                            value.
+   * @throws BoardGridColIndexOutOfBoundsException If the board column index is out of bounds.
+   * @throws BoardGridRowIndexOutOfBoundsException If the board row index is out of bounds.
+   * @throws NullIndexValueException If the index provided is null.
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds.
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds.
+   * @throws NullTileException If the tile is null.
+   * @throws NullPointerException Generic NPE.
+   * @throws NullPlayerBookshelfException If bookshelf is null.
+   * @throws NullScoreBlockListException If the list of scoreblocks is null.
+   * @throws NegativeMatchedBlockCountException If the number of matched blocks to set is negative.
+   * @throws NullMatchedBlockCountException If the number of matched blocks to set is null.
+   * @throws WrongBookShelfPicksException If the game moves are invalid because of bookshelf placement.
+   * @throws WrongGameBoardPicksException If the game moves are invalid because of board picking.
+   * @throws WrongMovesNumberException If the game moves are in an illegal number.
+   * @throws NullGameHandlerInstance If the game handler is null.
+   */
+  public synchronized void activePlayerMove(Map<Coordinates, Coordinates> selectedCoordinates)
+      throws BoardGridColIndexOutOfBoundsException, BoardGridRowIndexOutOfBoundsException,
+      NullIndexValueException, BookshelfGridColIndexOutOfBoundsException,
+      BookshelfGridRowIndexOutOfBoundsException, NullTileException, NullPlayerBookshelfException,
+      NullScoreBlockListException, NullPointerException, NullMatchedBlockCountException,
+      NegativeMatchedBlockCountException,
+      WrongMovesNumberException, WrongGameBoardPicksException, WrongBookShelfPicksException, NullGameHandlerInstance {
+
+    MovesValidator.validateGameMoves(selectedCoordinates, activePlayer.getBookshelf(), gameBoard);
+
+    for (Map.Entry<Coordinates, Coordinates> entry : selectedCoordinates.entrySet()) {
+      Coordinates boardCoord = entry.getKey();
+      Coordinates bsCoord = entry.getValue();
+      Tile takenTile = takeTileAction(boardCoord);
+      putTileAction(takenTile, bsCoord);
+    }
+    nextTurn();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/index.html new file mode 100644 index 00000000..6930f4a6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.game

it.polimi.is23am10.server.model.game

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total51 of 71892%12 of 6681%11791115704602
Game5164092%125481%11781115204501
Game.GameStatus27100%n/a01050101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/index.source.html new file mode 100644 index 00000000..9d1b0037 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.game/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.game

it.polimi.is23am10.server.model.game

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total51 of 71892%12 of 6681%11791115704602
Game.java5166792%125481%11791115704602
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/Board.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/Board.html new file mode 100644 index 00000000..39b81375 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/Board.html @@ -0,0 +1 @@ +Board

Board

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total27 of 94897%9 of 6485%1055593123
hashCode()120%n/a111111
removeTileAt(Integer, Integer)102167%2250%232601
equals(Object)52683%4450%452601
static {...}482100%n/a0101401
isRefillNeeded()89100%31986%3120901
fillBoardGrid()63100%10100%060701
takeTileAt(Integer, Integer)41100%4100%030701
Board(Board)27100%n/a010701
getTileAt(Integer, Integer)27100%4100%030501
Board(Integer)26100%2100%020801
getBlackMapAt(Integer, Integer)26100%4100%030501
getTileFromSack()21100%n/a010301
createInitialTileSack()17100%n/a010701
validNumOfPlayers(Integer)10100%2100%020301
lambda$createInitialTileSack$4(Tile.TileType)8100%n/a010101
lambda$createInitialTileSack$2(Tile.TileType)8100%2100%020101
refillIfNeeded()6100%2100%020301
getTileSackSize()5100%n/a010101
lambda$createInitialTileSack$3(Tile.TileType)5100%n/a010101
lambda$new$0(Object)5100%n/a010101
getBoardGrid()100%n/a010101
lambda$new$1(int)100%n/a010101
lambda$createInitialTileSack$5(Stream)100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/Board.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/Board.java.html new file mode 100644 index 00000000..cdfa3891 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/Board.java.html @@ -0,0 +1,372 @@ +Board.java

Board.java

package it.polimi.is23am10.server.model.items.board;
+
+import it.polimi.is23am10.server.model.items.board.exceptions.BoardGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.board.exceptions.BoardGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.board.exceptions.InvalidNumOfPlayersException;
+import it.polimi.is23am10.server.model.items.board.exceptions.NullNumOfPlayersException;
+import it.polimi.is23am10.server.model.items.tile.Tile;
+import it.polimi.is23am10.server.model.items.tile.Tile.TileType;
+import it.polimi.is23am10.utils.IndexValidator;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+
+/**
+ * Game's board class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class Board implements Serializable {
+
+  /**
+   * The allowed player values.
+   *
+   */
+  public static final List<Integer> allowedNumOfPlayers = Arrays.asList(2, 3, 4);
+
+  /**
+   * The game board max row value.
+   * 
+   */
+  public static final Integer BOARD_GRID_ROWS = 9;
+
+  /**
+   * The game board max col value.
+   * 
+   */
+  public static final Integer BOARD_GRID_COLS = 9;
+
+  /**
+   * The number of tiles for each {@link TileType}.
+   * 
+   */
+  public static final Integer TILE_TYPE_NUM = 22;
+
+  /**
+   * The number of players of the current grid.
+   * 
+   */
+  private Integer numOfPlayers;
+
+  /**
+   * A fixed 2d array referencing the physical grid instance.
+   * 
+   */
+  private Tile[][] boardGrid;
+
+  /**
+   * A fixed 2d array referencing a weight for each boardGrid cell.
+   * Each value represents the minimum number of players needed to get that square
+   * filled.
+   * 
+   * <ul>
+   * <li>Values >4 are meant for squares out of the board
+   * <li>Values <3 instead will always be filled
+   * </ul>
+   */
+  private static final Integer[][] blackMap = {
+      {
+          9, 9, 9, 3, 4, 9, 9, 9, 9
+      },
+      {
+          9, 9, 9, 2, 2, 4, 9, 9, 9
+      },
+      {
+          9, 9, 3, 2, 2, 2, 3, 9, 9
+      },
+      {
+          9, 4, 2, 2, 2, 2, 2, 2, 3
+      },
+      {
+          4, 2, 2, 2, 2, 2, 2, 2, 4
+      },
+      {
+          3, 2, 2, 2, 2, 2, 2, 4, 9
+      },
+      {
+          9, 9, 3, 2, 2, 2, 3, 9, 9
+      },
+      {
+          9, 9, 9, 4, 2, 2, 9, 9, 9
+      },
+      {
+          9, 9, 9, 9, 4, 3, 9, 9, 9
+      }
+  };
+
+  /**
+   * A list containing the available tiles.
+   * 
+   */
+  private List<Tile> tileSack;
+
+  /**
+   * Constructor.
+   * 
+   * @param numOfPlayers The current game instance number of players.
+   * @throws InvalidNumOfPlayersException If, while adding multiple players, there is an invalid number of them.
+   * @throws NullNumOfPlayersException If the number of players provided when filling the board is null.
+   */
+  public Board(Integer numOfPlayers)
+      throws InvalidNumOfPlayersException, NullNumOfPlayersException {
+    if (!validNumOfPlayers(numOfPlayers)) {
+      throw new InvalidNumOfPlayersException(numOfPlayers);
+    }
+    /**
+     * Save a reference about the current number of players.
+     * 
+     */
+    this.numOfPlayers = numOfPlayers;
+    this.boardGrid = new Tile[BOARD_GRID_ROWS][BOARD_GRID_COLS];
+
+    createInitialTileSack();
+
+    fillBoardGrid();
+  }
+
+  /**
+   * Copy constructor for Board.
+   * 
+   * @param toCopy board to copy
+   */
+  public Board(Board toCopy) {
+    numOfPlayers = toCopy.numOfPlayers;
+    boardGrid = Arrays.stream(toCopy.boardGrid)
+        .map(Tile[]::clone)
+        .toArray(Tile[][]::new);
+    tileSack = toCopy.tileSack.stream().map(Tile::new).collect(Collectors.toList());
+  }
+
+  /**
+   * Validate the number of players.
+   * 
+   * @throws NullNumOfPlayersException If the number of players provided when filling the board is null..
+   */
+  private boolean validNumOfPlayers(Integer numOfPlayers) throws NullNumOfPlayersException {
+    if (numOfPlayers == null) {
+      throw new NullNumOfPlayersException();
+    }
+    return allowedNumOfPlayers.contains(numOfPlayers);
+  }
+
+  /**
+   * Extract a tile from the sack.
+   * This mutate the sack list.
+   * 
+   * @return The extracted tile.
+   * 
+   */
+  public Tile getTileFromSack() throws IndexOutOfBoundsException {
+    Tile tile = tileSack.get(tileSack.size() - 1);
+    tileSack.remove(tileSack.size() - 1);
+    return tile;
+  }
+
+  /**
+   * Create the board tile sack.
+   * The complete sack has 22 tiles for each {@link TileType}.
+   * 
+   */
+  private void createInitialTileSack() {
+    tileSack = Stream.of(TileType.values())
+        .filter(t -> !t.equals(TileType.EMPTY))
+        .map(t -> Stream.generate(() -> new Tile(t)).limit(TILE_TYPE_NUM))
+        .flatMap(stream -> stream)
+        .collect(Collectors.toList());
+
+    Collections.shuffle(tileSack);
+  }
+
+  /**
+   * Fill the board grid based on the current player number.
+   * Note that this method works both when first filling the
+   * board AND when re-filling it partially mid-game.
+   * 
+   */
+  private void fillBoardGrid() throws IndexOutOfBoundsException {
+    for (int i = 0; i < Board.BOARD_GRID_ROWS; i++) {
+      for (int j = 0; j < Board.BOARD_GRID_COLS; j++) {
+        if (blackMap[i][j] <= numOfPlayers) {
+          if (boardGrid[i][j] == null || (boardGrid[i][j].getType().equals(TileType.EMPTY))) {
+            boardGrid[i][j] = getTileFromSack();
+          }
+        } else {
+          boardGrid[i][j] = new Tile(TileType.EMPTY);
+        }
+      }
+    }
+  }
+
+  /**
+   * boardGrid getter.
+   * 
+   * @return The board grid.
+   * 
+   */
+  public Tile[][] getBoardGrid() {
+    return boardGrid;
+  }
+
+  /**
+   * Retrieve the number of tiles remained inside the sack.
+   * 
+   * @return The remained tiles inside the sack.
+   * 
+   */
+  public Integer getTileSackSize() {
+    return tileSack.size();
+  }
+
+  /**
+   * View the tile in a specific board position.
+   * 
+   * @param row The row index.
+   * @param col The column index.
+   * @return The requested tile.
+   * @throws BoardGridRowIndexOutOfBoundsException If the board row index is out of bounds.
+   * @throws BoardGridColIndexOutOfBoundsException If the board column index is out of bounds.
+   * @throws NullIndexValueException If the index provided is null.
+   * 
+   */
+  public Tile getTileAt(Integer row, Integer col)
+      throws BoardGridRowIndexOutOfBoundsException, BoardGridColIndexOutOfBoundsException, NullIndexValueException {
+    if (!IndexValidator.validColIndex(col, Board.BOARD_GRID_COLS)) {
+      throw new BoardGridColIndexOutOfBoundsException(col);
+    }
+    if (!IndexValidator.validRowIndex(row, Board.BOARD_GRID_ROWS)) {
+      throw new BoardGridRowIndexOutOfBoundsException(row);
+    }
+    return boardGrid[row][col];
+  }
+
+  /**
+   * View the tile in a specific black map position.
+   * 
+   * @param row The row index.
+   * @param col The column index.
+   * @return The black map value.
+   * @throws BoardGridRowIndexOutOfBoundsException If the board row index is out of bounds.
+   * @throws BoardGridColIndexOutOfBoundsException If the board column index is out of bounds.
+   * @throws NullIndexValueException If the index provided is null.
+   * 
+   */
+  public Integer getBlackMapAt(Integer row, Integer col)
+      throws BoardGridRowIndexOutOfBoundsException, BoardGridColIndexOutOfBoundsException, NullIndexValueException {
+    if (!IndexValidator.validColIndex(col, Board.BOARD_GRID_COLS)) {
+      throw new BoardGridColIndexOutOfBoundsException(col);
+    }
+    if (!IndexValidator.validRowIndex(row, Board.BOARD_GRID_ROWS)) {
+      throw new BoardGridRowIndexOutOfBoundsException(row);
+    }
+    return blackMap[row][col];
+  }
+
+  /**
+   * Support method that removes a tile
+   * 
+   * @param row row index of removed tile
+   * @param col col index of removed tile
+   * @throws BoardGridColIndexOutOfBoundsException If the board column index is out of bounds.
+   * @throws BoardGridRowIndexOutOfBoundsException If the board row index is out of bounds.
+   * @throws NullIndexValueException If the index provided is null.
+   */
+  public void removeTileAt(Integer row, Integer col)
+      throws BoardGridColIndexOutOfBoundsException, BoardGridRowIndexOutOfBoundsException, NullIndexValueException {
+    if (!IndexValidator.validColIndex(col, Board.BOARD_GRID_COLS)) {
+      throw new BoardGridColIndexOutOfBoundsException(col);
+    }
+    if (!IndexValidator.validRowIndex(row, Board.BOARD_GRID_ROWS)) {
+      throw new BoardGridRowIndexOutOfBoundsException(row);
+    }
+    boardGrid[row][col] = new Tile(TileType.EMPTY);
+  }
+
+  /**
+   * Retrieve the tile in a specific board position.
+   * This method removes the returned tile from the sack.
+   * 
+   * @param row The row index.
+   * @param col The column index.
+   * @return The requested tile.
+   * @throws BoardGridRowIndexOutOfBoundsException If the board row index is out of bounds.
+   * @throws BoardGridColIndexOutOfBoundsException If the board column index is out of bounds.
+   * @throws NullIndexValueException If the index provided is null.
+   * 
+   */
+  public Tile takeTileAt(Integer row, Integer col)
+      throws BoardGridRowIndexOutOfBoundsException, BoardGridColIndexOutOfBoundsException, NullIndexValueException {
+    if (!IndexValidator.validColIndex(col, Board.BOARD_GRID_COLS)) {
+      throw new BoardGridColIndexOutOfBoundsException(col);
+    }
+    if (!IndexValidator.validRowIndex(row, Board.BOARD_GRID_ROWS)) {
+      throw new BoardGridRowIndexOutOfBoundsException(row);
+    }
+    Tile tile = boardGrid[row][col];
+    boardGrid[row][col] = new Tile(TileType.EMPTY);
+    return tile;
+  }
+
+  /**
+   * Helper method used to determine if the board should be refilled or not.
+   * 
+   * @return Should board be refilled.
+   */
+  public boolean isRefillNeeded() {
+    for (int i = 0; i < Board.BOARD_GRID_ROWS; i++) {
+      for (int j = 0; j < Board.BOARD_GRID_COLS; j++) {
+        if (boardGrid[i][j].getType() != TileType.EMPTY
+            && ((i > 0 && boardGrid[i - 1][j].getType() != TileType.EMPTY) ||
+                (i < Board.BOARD_GRID_ROWS - 1 && boardGrid[i + 1][j].getType() != TileType.EMPTY) ||
+                (j > 0 && boardGrid[i][j - 1].getType() != TileType.EMPTY) ||
+                (j < Board.BOARD_GRID_COLS - 1 && boardGrid[i][j + 1].getType() != TileType.EMPTY))) {
+          return false;
+        }
+      }
+    }
+    return true;
+  }
+
+  /**
+   * Method called at the end of the turn that
+   * checks if the Board needs to be refilled
+   * and proceeds if so.
+   */
+  public void refillIfNeeded() throws IndexOutOfBoundsException {
+    if (isRefillNeeded()) {
+      fillBoardGrid();
+    }
+  }
+
+  /**
+   * {@inheritDoc}
+   * 
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof Board)) {
+      return false;
+    }
+    Board brd = (Board) obj;
+    if (numOfPlayers != brd.numOfPlayers) {
+      return false;
+    }
+    return (Arrays.deepEquals(boardGrid, brd.boardGrid) && tileSack.equals(brd.tileSack));
+  }
+
+  /**
+   * {@inheritDoc}
+   * 
+   */
+  @Override
+  public int hashCode() {
+    return numOfPlayers.hashCode() * boardGrid.hashCode() * tileSack.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/index.html new file mode 100644 index 00000000..d9119fe6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.items.board

it.polimi.is23am10.server.model.items.board

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total27 of 94897%9 of 6485%105559312301
Board2792197%95585%105559312301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/index.source.html new file mode 100644 index 00000000..c874a1d2 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.board/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.items.board

it.polimi.is23am10.server.model.items.board

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total27 of 94897%9 of 6485%105559312301
Board.java2792197%95585%105559312301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/Bookshelf.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/Bookshelf.html new file mode 100644 index 00000000..f273b1d9 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/Bookshelf.html @@ -0,0 +1 @@ +Bookshelf

Bookshelf

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total66 of 37882%7 of 4283%735960314
getBookshelfString()420%40%337711
lambda$getBookshelfString$0(Integer, Integer, String)180%20%221111
hashCode()40%n/a111111
equals(Object)21285%1150%121401
Bookshelf(String)98100%10100%0601301
Bookshelf()49100%4100%030701
setBookshelfGridIndex(Integer, Integer, Tile)37100%6100%040801
Bookshelf(Bookshelf)30100%n/a010601
getBookshelfGridAt(Integer, Integer)29100%4100%030501
isBookshelfFull()26100%6100%040501
getFreeRowsInCol(int)20100%4100%030501
lambda$new$1(Object)5100%n/a010101
getBookshelfGrid()3100%n/a010101
lambda$new$2(int)3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/Bookshelf.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/Bookshelf.java.html new file mode 100644 index 00000000..9c3749a9 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/Bookshelf.java.html @@ -0,0 +1,267 @@ +Bookshelf.java

Bookshelf.java

package it.polimi.is23am10.server.model.items.bookshelf;
+
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.NullTileException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongCharBookshelfStringException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongLengthBookshelfStringException;
+import it.polimi.is23am10.server.model.items.tile.Tile;
+import it.polimi.is23am10.server.model.items.tile.Tile.TileType;
+import it.polimi.is23am10.utils.IndexValidator;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.Map;
+
+/**
+ * Players' bookshelf class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class Bookshelf implements Serializable {
+  /**
+   * The bookshelf max rows value.
+   */
+  public static final int BOOKSHELF_ROWS = 6;
+
+  /**
+   * The bookshelf max columns value.
+   */
+  public static final int BOOKSHELF_COLS = 5;
+
+  /**
+   * The support map to reference each {@link TileType} with a char.
+   * Used for the constructor of Bookshelf made for tests.
+   * 
+   */
+  transient Map<String, TileType> tileMap = Map.of(
+      "C", TileType.CAT,
+      "B", TileType.BOOK,
+      "G", TileType.GAME,
+      "F", TileType.FRAME,
+      "T", TileType.TROPHY,
+      "P", TileType.PLANT,
+      "X", TileType.EMPTY);
+
+  /**
+   * Max bookshelf grid size.
+   */
+  private static final int BOOKSHELF_SIZE = BOOKSHELF_COLS * BOOKSHELF_ROWS;
+
+  /**
+   * A fixed 2d array referencing the physical bookshelf instance.
+   * 
+   */
+  private Tile[][] bookshelfGrid;
+
+  /**
+   * Constructor for the Bookshelf instance.
+   */
+  public Bookshelf() {
+    bookshelfGrid = new Tile[BOOKSHELF_ROWS][BOOKSHELF_COLS];
+    for (int i = 0; i < BOOKSHELF_ROWS; i++) {
+      for (int j = 0; j < BOOKSHELF_COLS; j++) {
+        bookshelfGrid[i][j] = new Tile(TileType.EMPTY);
+      }
+    }
+  }
+
+  /**
+   * Method used to get a string representation for a bookshelf.
+   * 
+   * @return string representation of this bookshelf.
+   */
+  public String getBookshelfString(){
+    StringBuilder toReturn = new StringBuilder();
+    for (int i = 0; i < BOOKSHELF_ROWS; i++) {
+      for (int j = 0; j < BOOKSHELF_COLS; j++) {
+        // Apparently needed because "Local variable i defined in an enclosing scope must be final or effectively final Java(536871575)"
+        final Integer ii = i;
+        final Integer jj = j;
+        toReturn.append(tileMap.keySet().stream().filter(s -> tileMap.get(s) == (bookshelfGrid[ii][jj]).getType()).findFirst().get());
+      }
+    }
+    return toReturn.toString();
+  }
+
+  /**
+   * Copy constructor of Bookshelf.
+   * 
+   * @param toCopy original instance
+   */
+  public Bookshelf(Bookshelf toCopy) {
+    bookshelfGrid = Arrays.stream(toCopy.bookshelfGrid)
+        .map(Tile[]::clone)
+        .toArray(Tile[][]::new);
+  }
+
+  /**
+   * This constructor takes a 30 char long string containing the content
+   * of a bookshelf, with each tile associated to a letter, as shown below
+   * and builds and returns the matching bookshelf object.
+   * 
+   * @param bookshelfString A string that allows us to fill the bookshelfGrid with
+   *                        the
+   *                        correspondence between each char and the position in
+   *                        the
+   *                        grid, there's a map to help us matching the char with
+   *                        the {@link TileType}
+   * @throws WrongLengthBookshelfStringException If when building a bookshelf based on string, it is of an invalid length.
+   * @throws WrongCharBookshelfStringException If when building a bookshelf based on string, it contains an invalid character.
+   * @throws NullPointerException Generic NPE.
+   */
+  public Bookshelf(String bookshelfString)
+      throws WrongLengthBookshelfStringException, WrongCharBookshelfStringException,
+      NullPointerException {
+
+    if (bookshelfString.length() != BOOKSHELF_SIZE) {
+      throw new WrongLengthBookshelfStringException(
+          "[Class Bookshelf, method constructor]: Bookshelf string has incorrect length exception");
+    }
+    String[] tileChars = bookshelfString.split("");
+    for (String c : tileChars) {
+      if (!tileMap.containsKey(c)) {
+        throw new WrongCharBookshelfStringException(
+            "[Class Bookshelf, method constructor]: Bookshelf string contains invalid char exception");
+      }
+    }
+    bookshelfGrid = new Tile[BOOKSHELF_ROWS][BOOKSHELF_COLS];
+
+    /*
+     * Here we are filling the bookshelf inserting a Tile of the corresponding
+     * TileType, using the mapping we implemented before.
+     * To access the right char in each cycle we are using an index which maps the
+     * bi-dimensional array indexes into one single index.
+     */
+    for (int i = 0; i < BOOKSHELF_ROWS; i++) {
+      for (int j = 0; j < BOOKSHELF_COLS; j++) {
+        bookshelfGrid[i][j] = new Tile(tileMap.get(tileChars[BOOKSHELF_COLS * i + j]));
+      }
+    }
+  }
+
+  /**
+   * Set a {@link Tile} inside the bookshelf grid.
+   * 
+   * @param row  The bookshelf grid row's value.
+   * @param col  The bookshelf grid col's value.
+   * @param tile The tile to be set.
+   * @throws NullIndexValueException If the index provided is null.
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds.
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds.
+   * @throws NullTileException If tile is null.
+   * 
+   */
+  public void setBookshelfGridIndex(Integer row, Integer col, Tile tile)
+      throws BookshelfGridColIndexOutOfBoundsException, BookshelfGridRowIndexOutOfBoundsException,
+      NullIndexValueException, NullTileException {
+    if (!IndexValidator.validRowIndex(row, Bookshelf.BOOKSHELF_ROWS)) {
+      throw new BookshelfGridRowIndexOutOfBoundsException(row);
+    }
+    if (!IndexValidator.validColIndex(col, Bookshelf.BOOKSHELF_COLS)) {
+      throw new BookshelfGridColIndexOutOfBoundsException(col);
+    }
+    if (tile == null) {
+      throw new NullTileException("[Class Bookshelf, method SetBookshelfGridIndex]");
+    }
+    bookshelfGrid[row][col] = tile;
+  }
+
+  /**
+   * bookshelfGrid getter.
+   * 
+   * @return The bookshelf's 6x5 playground grid.
+   * 
+   */
+  public Tile[][] getBookshelfGrid() {
+    return bookshelfGrid;
+  }
+
+  /**
+   * bookshelfGrid index getter.
+   * 
+   * @param row The bookshelf grid's row value.
+   * @param col The bookshelf grid's col value.
+   * @return The tile at the given indexes.
+   * @throws NullIndexValueException If the index provided is null.
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds.
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds.
+   * 
+   */
+  public Tile getBookshelfGridAt(Integer row, Integer col)
+      throws BookshelfGridColIndexOutOfBoundsException, BookshelfGridRowIndexOutOfBoundsException,
+      NullIndexValueException {
+    if (!IndexValidator.validRowIndex(row, Bookshelf.BOOKSHELF_ROWS)) {
+      throw new BookshelfGridRowIndexOutOfBoundsException(row);
+    }
+    if (!IndexValidator.validColIndex(col, Bookshelf.BOOKSHELF_COLS)) {
+      throw new BookshelfGridColIndexOutOfBoundsException(col);
+    }
+    return bookshelfGrid[row][col];
+  }
+
+  /**
+   * This function checks if player's bookshelf is full of tiles.
+   *
+   * @return True if bookshelf grid is full.
+   */
+  public boolean isBookshelfFull() {
+    for (int i = 0; i < BOOKSHELF_ROWS; i++) {
+      for (int j = 0; j < BOOKSHELF_COLS; j++) {
+        if (bookshelfGrid[i][j].isEmpty()) {
+          return false;
+        }
+      }
+    }
+    return true;
+  }
+
+
+  /**
+   * Retrieve the number of {@link TileType#EMPTY} inside the bookshelf for a
+   * given column.
+   *
+   * @param column The column to be checked
+   * @return The number of {@link TileType#EMPTY}
+   * @throws BookshelfGridColIndexOutOfBoundsException If bookshelf column index is out of bounds.
+   * @throws BookshelfGridRowIndexOutOfBoundsException If bookshelf row index is out of bounds.
+   * @throws NullIndexValueException If index value is null.
+   */
+  public int getFreeRowsInCol(int column)
+      throws BookshelfGridColIndexOutOfBoundsException,
+      BookshelfGridRowIndexOutOfBoundsException, NullIndexValueException {
+    int res = 0;
+    for (int i = 0; i < BOOKSHELF_ROWS; i++) {
+      if (getBookshelfGridAt(i, column).isEmpty()) {
+        res++;
+      }
+    }
+    return res;
+  }
+
+  /**
+   * {@inheritDoc}
+   * 
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof Bookshelf)) {
+      return false;
+    }
+    Bookshelf bs = (Bookshelf) obj;
+    return (Arrays.deepEquals(bookshelfGrid, bs.bookshelfGrid));
+  }
+
+  /**
+   * {@inheritDoc}
+   * 
+   */
+  @Override
+  public int hashCode() {
+    return bookshelfGrid.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/index.html new file mode 100644 index 00000000..3cc52887 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.items.bookshelf

it.polimi.is23am10.server.model.items.bookshelf

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total66 of 37882%7 of 4283%73596031401
Bookshelf6631282%73583%73596031401
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/index.source.html new file mode 100644 index 00000000..e1e8b55c --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.bookshelf/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.items.bookshelf

it.polimi.is23am10.server.model.items.bookshelf

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total66 of 37882%7 of 4283%73596031401
Bookshelf.java6631282%73583%73596031401
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/AbstractCard.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/AbstractCard.html new file mode 100644 index 00000000..daf53b2c --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/AbstractCard.html @@ -0,0 +1 @@ +AbstractCard

AbstractCard

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 20100%0 of 2100%040703
setPattern(AbstractPattern)14100%2100%020501
AbstractCard()3100%n/a010101
getPattern()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/AbstractCard.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/AbstractCard.java.html new file mode 100644 index 00000000..18ca1f1d --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/AbstractCard.java.html @@ -0,0 +1,51 @@ +AbstractCard.java

AbstractCard.java

package it.polimi.is23am10.server.model.items.card;
+
+import java.io.Serializable;
+
+import it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException;
+import it.polimi.is23am10.server.model.pattern.AbstractPattern;
+
+/**
+ * Abstract card object.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ * 
+ */
+public abstract class AbstractCard<R, T extends AbstractPattern<R>> implements Serializable {
+
+  /**
+   * The pattern instance.
+   * Its type must extends {@link AbstractPattern}
+   */
+  private transient T pattern;
+
+  /**
+   * Pattern setter.
+   * Pattern can not be final as it must be randomly chosen and it has to be
+   * unique across all instantiated cards.
+   * Only the derived class can set the pattern.
+   *
+   * @param pattern The pattern to assign.
+   * @throws AlreadyInitiatedPatternException If assigning a pattern to a card that already has one. If the pattern is already initiated.
+   */
+  protected void setPattern(T pattern) throws AlreadyInitiatedPatternException {
+    if (this.pattern != null) {
+      throw new AlreadyInitiatedPatternException(
+          "[Class " + this.getClass() + ", method setPattern]: The pattern has already been instantiated");
+    }
+    this.pattern = pattern;
+  }
+
+  /**
+   * Pattern getter.
+   *
+   * @return The instance pattern.
+   */
+  public T getPattern() {
+    return pattern;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/PrivateCard.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/PrivateCard.html new file mode 100644 index 00000000..ead123b0 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/PrivateCard.html @@ -0,0 +1 @@ +PrivateCard

PrivateCard

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 4092%0 of 4100%1621514
PrivateCard()30%n/a112211
setMatchedBlocksCount(Integer)23100%4100%030801
PrivateCard(List)11100%n/a010401
getMatchedBlocksCount()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/PrivateCard.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/PrivateCard.java.html new file mode 100644 index 00000000..fd4e9faa --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/PrivateCard.java.html @@ -0,0 +1,85 @@ +PrivateCard.java

PrivateCard.java

package it.polimi.is23am10.server.model.items.card;
+
+import java.util.List;
+import java.util.function.Function;
+
+import it.polimi.is23am10.server.model.factory.PrivatePatternFactory;
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NegativeMatchedBlockCountException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NullMatchedBlockCountException;
+import it.polimi.is23am10.server.model.pattern.PrivatePattern;
+
+/**
+ * Private card class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class PrivateCard
+    extends
+    AbstractCard<Function<Bookshelf, Integer>, PrivatePattern<Function<Bookshelf, Integer>>> {
+
+  /**
+   * A counter for the number of matched blocks in the {@link PrivatePattern}.
+   * 
+   */
+  private Integer matchedBlocksCount;
+
+  /**
+   * Constructor.
+   * 
+   * @param usedPrivatePatterns is a list of PrivatePattern used to store the
+   *                            already
+   *                            used one.
+   * @throws AlreadyInitiatedPatternException If assigning a pattern to a card that already has one.
+   */
+  public PrivateCard(List<PrivatePattern<Function<Bookshelf, Integer>>> usedPrivatePatterns)
+      throws AlreadyInitiatedPatternException {
+    matchedBlocksCount = 0;
+    setPattern(PrivatePatternFactory.getNotUsedPattern(usedPrivatePatterns));
+  }
+
+  /**
+   * Empty constructor. To be used when obscuring private card
+   * of other players when sending game updates
+   */
+  public PrivateCard() {
+  }
+
+
+  /**
+   * matchedBlocksCount setter.
+   * 
+   * @param matchedBlocksCount The value about how many matches the played has
+   *                           achieved inside his/her private card.
+   * @throws NullMatchedBlockCountException If the number of matched blocks to set is null.
+   * @throws NegativeMatchedBlockCountException If the number of matched blocks to set is negative.
+   * 
+   */
+  public void setMatchedBlocksCount(Integer matchedBlocksCount)
+      throws NullMatchedBlockCountException, NegativeMatchedBlockCountException {
+    if (matchedBlocksCount == null) {
+      throw new NullMatchedBlockCountException(
+          "[Class " + this.getClass() + ", method setMatchedBlocksCount]: Null matchedBlocksCount");
+    }
+    if (matchedBlocksCount < 0) {
+      throw new NegativeMatchedBlockCountException(
+          "[Class " + this.getClass() + ", method setMatchedBlocksCount]: Negative matchedBlocksCount");
+    }
+    this.matchedBlocksCount = matchedBlocksCount;
+  }
+
+  /**
+   * matchedBlocksCount getter.
+   * 
+   * @return The value of matched blocks inside the user private card.
+   * 
+   */
+  public Integer getMatchedBlocksCount() {
+    return matchedBlocksCount;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/SharedCard.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/SharedCard.html new file mode 100644 index 00000000..888303f6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/SharedCard.html @@ -0,0 +1 @@ +SharedCard

SharedCard

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total9 of 9590%0 of 4100%2732125
addCardWinner(Player)60%n/a112211
getCardWinners()30%n/a111111
SharedCard(List, Integer)70100%2100%0201201
setScoreBlocks(List)13100%2100%020501
getScoreBlocks()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/SharedCard.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/SharedCard.java.html new file mode 100644 index 00000000..44ee7071 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/SharedCard.java.html @@ -0,0 +1,116 @@ +SharedCard.java

SharedCard.java

package it.polimi.is23am10.server.model.items.card;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Predicate;
+
+import it.polimi.is23am10.server.model.factory.SharedPatternFactory;
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NullScoreBlockListException;
+import it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock;
+import it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException;
+import it.polimi.is23am10.server.model.pattern.SharedPattern;
+import it.polimi.is23am10.server.model.player.Player;
+
+/**
+ * Shared card object.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class SharedCard extends AbstractCard<Predicate<Bookshelf>, SharedPattern<Predicate<Bookshelf>>> {
+
+  /**
+   * A list of {@link ScoreBlock} instances.
+   * They are used to track the score points that the current shared card instance
+   * can assign to the players.
+   * 
+   */
+  private List<ScoreBlock> scoreBlocks;
+
+  /**
+   * List of players who satisfied the pattern and won the SB.
+   * Used to prevent one player from taking two SBs.
+   */
+  private List<Player> cardWinners;
+
+  /**
+   * A map to get the correct list of scoreblocks
+   * by number of players playing. Order is reversed as first
+   * to pick gets the highest valued SB.
+   */
+  private Map<Integer,List<Integer>> scoreBlocksMap = Map.of(
+    2, List.of(8,4),
+    3, List.of(8,6,4),
+    4, List.of(8,6,4,2)
+  );
+
+  /**
+   * Constructor.
+   *
+   * @param usedSharedPatterns is a list of SharedPattern used to store the already
+   *                     used.
+   * @param numPlayers the number of players in the game.
+   * @throws AlreadyInitiatedPatternException If assigning a pattern to a card that already has one.
+   */
+  public SharedCard(List<SharedPattern<Predicate<Bookshelf>>> usedSharedPatterns, Integer numPlayers)
+      throws AlreadyInitiatedPatternException, NotValidScoreBlockValueException {
+    cardWinners = new ArrayList<>();
+    scoreBlocks = new ArrayList<>();
+    for (Integer scoreBlockValue : scoreBlocksMap.get(numPlayers)) {
+        scoreBlocks.add(new ScoreBlock(scoreBlockValue));
+    }
+    setPattern(SharedPatternFactory.getNotUsedPattern(usedSharedPatterns));
+  }
+
+  /**
+   * ScoreBlocks setter.
+   * 
+   * @param scoreBlockList The score block list.
+   * @throws NullScoreBlockListException If the list of scoreblocks is null.
+   * 
+   */
+  public void setScoreBlocks(List<ScoreBlock> scoreBlockList) throws NullScoreBlockListException {
+    if (scoreBlockList == null) {
+      throw new NullScoreBlockListException(
+          "[Class " + this.getClass() + ", method setScoreBlock]: Null score block list");
+    }
+    scoreBlocks = scoreBlockList;
+  }
+
+  /**
+   * scoreBlocks getter.
+   * 
+   * @return The current score block points assigned to this card instance.
+   * 
+   */
+  public List<ScoreBlock> getScoreBlocks() {
+    return scoreBlocks;
+  }
+
+  /**
+   * cardWinners getter.
+   * 
+   * @return The list of player who got a SB from this card.
+   * 
+   */
+  public List<Player> getCardWinners() {
+    return cardWinners;
+  }
+
+  /**
+   * Method used to add a player to the winner array.
+   * When a player is added it's not allowed to take
+   * another scoreblock from this card.
+   * 
+   * @param player the player to add to array
+   */
+  public void addCardWinner(Player player) {
+    cardWinners.add(player);
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/index.html new file mode 100644 index 00000000..4ec2707a --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.items.card

it.polimi.is23am10.server.model.items.card

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total12 of 15592%0 of 10100%31754331203
SharedCard98690%4100%273212501
PrivateCard33792%4100%162151401
AbstractCard20100%2100%04070301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/index.source.html new file mode 100644 index 00000000..c0ff5c0d --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.card/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.items.card

it.polimi.is23am10.server.model.items.card

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total12 of 15592%0 of 10100%31754331203
SharedCard.java98690%4100%273212501
PrivateCard.java33792%4100%162151401
AbstractCard.java20100%2100%04070301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/ScoreBlock.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/ScoreBlock.html new file mode 100644 index 00000000..3b5b01ea --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/ScoreBlock.html @@ -0,0 +1 @@ +ScoreBlock

ScoreBlock

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total7 of 6689%2 of 666%3821315
hashCode()40%n/a111111
equals(Object)31482%2250%231401
static {...}25100%n/a010101
ScoreBlock(Integer)17100%2100%020601
getScore()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/ScoreBlock.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/ScoreBlock.java.html new file mode 100644 index 00000000..610a80a1 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/ScoreBlock.java.html @@ -0,0 +1,73 @@ +ScoreBlock.java

ScoreBlock.java

package it.polimi.is23am10.server.model.items.scoreblock;
+
+import java.io.Serializable;
+import java.util.Arrays;
+import java.util.List;
+
+import it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException;
+
+/**
+ * ScoreBlock class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class ScoreBlock implements Serializable {
+
+  protected static final List<Integer> allowedScoreValues = Arrays.asList(2, 4, 6, 8);
+
+  /**
+   * The value assigned to the current instance of the score block.
+   * 
+   */
+  private Integer score;
+
+  /**
+   * Constructor.
+   * 
+   * @throws NotValidScoreBlockValueException If the value assigned to a scoreblock is not valid.
+   * 
+   */
+  public ScoreBlock(Integer score) throws NotValidScoreBlockValueException {
+    if (!allowedScoreValues.contains(score)) {
+      throw new NotValidScoreBlockValueException(
+          "[Class " + this.getClass() + ", constructor]: Assigned score value is not compliant with the rules");
+    }
+    this.score = score;
+  }
+
+  /**
+   * score getter.
+   * 
+   * @return The score value associated with this instance.
+   * 
+   */
+  public Integer getScore() {
+    return score;
+  }
+
+  /**
+   * {@inheritDoc}
+   * 
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof ScoreBlock)) {
+      return false;
+    }
+    ScoreBlock sb = (ScoreBlock) obj;
+    return (score == sb.score);
+  }
+
+  /**
+   * {@inheritDoc}
+   * 
+   */
+  @Override
+  public int hashCode() {
+    return score.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/index.html new file mode 100644 index 00000000..6493edf2 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.items.scoreblock

it.polimi.is23am10.server.model.items.scoreblock

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total7 of 6689%2 of 666%382131501
ScoreBlock75989%2466%382131501
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/index.source.html new file mode 100644 index 00000000..118e5d6f --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.scoreblock/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.items.scoreblock

it.polimi.is23am10.server.model.items.scoreblock

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total7 of 6689%2 of 666%382131501
ScoreBlock.java75989%2466%382131501
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/Tile$TileType.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/Tile$TileType.html new file mode 100644 index 00000000..fedd9e98 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/Tile$TileType.html @@ -0,0 +1 @@ +Tile.TileType

Tile.TileType

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 45100%0 of 0n/a010801
static {...}45100%n/a010801
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/Tile.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/Tile.html new file mode 100644 index 00000000..d4413099 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/Tile.html @@ -0,0 +1 @@ +Tile

Tile

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total7 of 6188%1 of 1090%21221717
hashCode()50%n/a111111
equals(Object)21588%1375%131401
setTile(Tile.TileType)11100%2100%020401
Tile(Tile.TileType)10100%2100%020301
isEmpty()8100%2100%020101
Tile(Tile)7100%n/a010301
getType()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/Tile.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/Tile.java.html new file mode 100644 index 00000000..bf304623 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/Tile.java.html @@ -0,0 +1,112 @@ +Tile.java

Tile.java

package it.polimi.is23am10.server.model.items.tile;
+
+import java.io.Serializable;
+
+/**
+ * The tile class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class Tile implements Serializable {
+
+  /**
+   * An enumeration about the available tile types.
+   * 
+   */
+  public enum TileType {
+    CAT,
+    BOOK,
+    GAME,
+    FRAME,
+    TROPHY,
+    PLANT,
+    EMPTY
+  }
+
+  /**
+   * The instance Tile type.
+   * 
+   */
+  private TileType type;
+
+  
+  /**
+  * Constructor.
+   * If the desired type has null value, an empty tile will be set.
+   * 
+   */
+  public Tile(TileType type) {
+    this.type = type == null ? TileType.EMPTY : type;
+  }
+
+  /**
+   * Copy constructor for Tile.
+   * 
+   * @param toCopy tile to copy
+   */
+  public Tile(Tile toCopy) {
+    type = toCopy.getType();
+  }
+
+  
+   /**
+   * type getter.
+   * 
+   * @return The type of the current Tile instance.
+   * 
+   */
+  public TileType getType() {
+    return type;
+  }
+
+  /**
+   * The method that allows us to manually change the type of a specific Tile.
+   * 
+   * @throws NullPointerException Generic NPE.
+   * 
+   * @param tt The tile type we want to set for the tile.
+   */
+  public void setTile(TileType tt) throws NullPointerException {
+    if (tt == null) {
+      throw new NullPointerException("[Class Tile, method setTile]: Null pointer exception");
+    }
+    type = tt;
+  }
+
+
+  /**
+   * {@inheritDoc}}
+   * 
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof Tile)) {
+      return false;
+    }
+    Tile tile = (Tile) obj;
+    return tile.getType() == type;
+  }
+
+  /**
+   * {@inheritDoc}}
+   * 
+   */
+  @Override
+  public int hashCode() {
+    return type.toString().hashCode();
+  }
+
+  /**
+   * Method that checks if the Tile's {@link TileType} is EMPTY or not.
+   * 
+   * @return True if the tile has {@link TileType#EMPTY}. 
+   * 
+   */
+  public boolean isEmpty() {
+    return (this.getType() == TileType.EMPTY);
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/index.html new file mode 100644 index 00000000..476e9deb --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.items.tile

it.polimi.is23am10.server.model.items.tile

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total7 of 10693%1 of 1090%2132251802
Tile75488%1990%2122171701
Tile.TileType45100%n/a01080101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/index.source.html new file mode 100644 index 00000000..3445eaaf --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.items.tile/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.items.tile

it.polimi.is23am10.server.model.items.tile

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total7 of 10693%1 of 1090%2132251802
Tile.java79993%1990%2132251802
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/AbstractPattern.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/AbstractPattern.html new file mode 100644 index 00000000..8189d8f8 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/AbstractPattern.html @@ -0,0 +1 @@ +AbstractPattern

AbstractPattern

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 15100%0 of 0n/a030603
AbstractPattern(Object, Integer)9100%n/a010401
getRule()3100%n/a010101
getIndex()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/AbstractPattern.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/AbstractPattern.java.html new file mode 100644 index 00000000..c32c4884 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/AbstractPattern.java.html @@ -0,0 +1,55 @@ +AbstractPattern.java

AbstractPattern.java

package it.polimi.is23am10.server.model.pattern;
+
+/**
+ * Abstract pattern object.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public abstract class AbstractPattern<T> {
+
+  /**
+   * The assigned rule to this pattern.
+   * 
+   */
+  protected T rule;
+
+  /**
+   * A 1-12 number to identify the card sprite in view
+   */
+  private Integer cardIndex;
+
+  /**
+   * Constructor.
+   * 
+   * @param rule The rule assigned to the current pattern..
+   * @param cardIndex The card index associated
+   * 
+   */
+  protected AbstractPattern(T rule, Integer cardIndex) {
+    this.rule = rule;
+    this.cardIndex = cardIndex;
+  }
+
+  /**
+   * Rule getter.
+   *
+   * @return The rule function.
+   */
+  public T getRule() {
+    return rule;
+  }
+
+  /**
+   * CardIndex getter
+   * 
+   * @return The index
+   */
+  public Integer getIndex() {
+    return cardIndex;
+  }
+  
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/PrivatePattern.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/PrivatePattern.html new file mode 100644 index 00000000..f8715dc8 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/PrivatePattern.html @@ -0,0 +1 @@ +PrivatePattern

PrivatePattern

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total2 of 2491%1 of 475%151603
equals(Object)21386%1375%131301
PrivatePattern(Object, Integer)5100%n/a010201
hashCode()4100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/PrivatePattern.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/PrivatePattern.java.html new file mode 100644 index 00000000..d6e03a23 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/PrivatePattern.java.html @@ -0,0 +1,45 @@ +PrivatePattern.java

PrivatePattern.java

package it.polimi.is23am10.server.model.pattern;
+
+/**
+ * Private pattern object.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class PrivatePattern<T> extends AbstractPattern<T> {
+
+  /**
+   * The constructor of the class PrivatePattern.
+   *
+   * @param rule a function that takes a Bookshelf object and returns an Integer.
+   * @param cardIndex The card index associated
+   */
+  public PrivatePattern(T rule, Integer cardIndex) {
+    super(rule, cardIndex);
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  @SuppressWarnings("unchecked")
+  public boolean equals(Object obj) {
+    if (!(obj instanceof PrivatePattern)) {
+      return false;
+    }
+    return this.rule == ((PrivatePattern<T>) obj).getRule();
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public int hashCode() {
+    return rule.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/SharedPattern.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/SharedPattern.html new file mode 100644 index 00000000..229f1949 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/SharedPattern.html @@ -0,0 +1 @@ +SharedPattern

SharedPattern

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total2 of 2491%1 of 475%151603
equals(Object)21386%1375%131301
SharedPattern(Object, Integer)5100%n/a010201
hashCode()4100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/SharedPattern.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/SharedPattern.java.html new file mode 100644 index 00000000..dff2bc64 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/SharedPattern.java.html @@ -0,0 +1,43 @@ +SharedPattern.java

SharedPattern.java

package it.polimi.is23am10.server.model.pattern;
+
+/**
+ * Shared pattern object.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class SharedPattern<T> extends AbstractPattern<T> {
+
+  /**
+   * The constructor of the class SharedPattern.
+   *
+   */
+  public SharedPattern(T rule, Integer cardIndex) {
+    super(rule, cardIndex);
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  @SuppressWarnings("unchecked")
+  public boolean equals(Object obj) {
+    if (!(obj instanceof SharedPattern)) {
+      return false;
+    }
+    return this.rule == ((SharedPattern<T>) obj).getRule();
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public int hashCode() {
+    return this.getIndex().hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/index.html new file mode 100644 index 00000000..a4011688 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.pattern

it.polimi.is23am10.server.model.pattern

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total4 of 6393%2 of 875%2132180903
SharedPattern22291%1375%15160301
PrivatePattern22291%1375%15160301
AbstractPattern15100%n/a03060301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/index.source.html new file mode 100644 index 00000000..c07dcbb7 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.pattern/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.pattern

it.polimi.is23am10.server.model.pattern

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total4 of 6393%2 of 875%2132180903
PrivatePattern.java22291%1375%15160301
SharedPattern.java22291%1375%15160301
AbstractPattern.java15100%n/a03060301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/Player.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/Player.html new file mode 100644 index 00000000..480424c3 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/Player.html @@ -0,0 +1 @@ +Player

Player

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total25 of 16885%2 of 1888%531854322
Player(Player)110%n/a114411
addScoreBlock(ScoreBlock)60%n/a112211
setPlayerName(String)5654%1150%121401
getIsActivePlayer()30%n/a111111
equals(Object)24100%1583%140501
updateScore()18100%n/a010401
setPlayerID(UUID)11100%2100%020401
setScore(Score)11100%2100%020401
setBookshelf(Bookshelf)11100%2100%020401
setPrivateCard(PrivateCard)11100%2100%020401
setScoreBlocks(List)11100%2100%020401
hashCode()8100%n/a010101
setIsConnected(boolean)4100%n/a010201
setIsActivePlayer(boolean)4100%n/a010201
Player()3100%n/a010201
getPlayerID()3100%n/a010101
getPlayerName()3100%n/a010101
getScore()3100%n/a010101
getBookshelf()3100%n/a010101
getPrivateCard()3100%n/a010101
getScoreBlocks()3100%n/a010101
getIsConnected()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/Player.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/Player.java.html new file mode 100644 index 00000000..dde2803d --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/Player.java.html @@ -0,0 +1,335 @@ +Player.java

Player.java

package it.polimi.is23am10.server.model.player;
+
+import it.polimi.is23am10.server.model.factory.PlayerFactory;
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.card.PrivateCard;
+import it.polimi.is23am10.server.model.items.card.exceptions.NegativeMatchedBlockCountException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NullMatchedBlockCountException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NullScoreBlockListException;
+import it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock;
+import it.polimi.is23am10.server.model.pattern.PrivatePattern;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
+import it.polimi.is23am10.server.model.score.Score;
+import it.polimi.is23am10.server.model.game.Game;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+import java.io.Serializable;
+import java.util.List;
+import java.util.UUID;
+
+/**
+ * The Player class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class Player implements Serializable {
+
+  /**
+   * Copy constructor for Player class.
+   *
+   * @param player The player object to be copied.
+   */
+  public Player(Player player) {
+    this.playerId = player.playerId;
+    this.playerName = player.playerName;
+  }
+
+  /**
+   * Constructor for Player class.
+   *
+   */
+  public Player() {
+  }
+
+  /**
+   * A randomly generated {@link UUID} id.
+   * 
+   */
+  private UUID playerId;
+
+  /**
+   * The player name.
+   * Chosen by the player itself.
+   * 
+   */
+  private String playerName;
+
+  /**
+   * Status of the player.
+   * Tells us if he's connected or not.
+   * 
+   */
+  private boolean isConnected;
+
+  /**
+   * Status of the player.
+   * Tells us if he's connected or not.
+   * 
+   */
+  private boolean isActivePlayer;
+
+  /**
+   * The score storage for the player.
+   * It groups all the possible score values that a player can earn during a game.
+   * 
+   */
+  private Score score;
+
+  /**
+   * The player's bookshelf playground.
+   * 
+   */
+  private Bookshelf bookshelf;
+
+  /**
+   * The player's {@link PrivateCard} with a specific {@link PrivatePattern}.
+   * 
+   */
+  private PrivateCard privateCard;
+
+  /**
+   * A list of all {@link ScoreBlock} earned by the player.
+   * 
+   */
+  private List<ScoreBlock> scoreBlocks;
+
+  /**
+   * playerId setter.
+   *
+   * @param playerId The player id.
+   * 
+   */
+  public synchronized void setPlayerID(UUID playerId) throws NullPlayerIdException {
+    if (playerId == null) {
+      throw new NullPlayerIdException("[Class Player, Method setPlayerID]: Null player id");
+    }
+    this.playerId = playerId;
+  }
+
+  /**
+   * playerName setter.
+   * The {@link PlayerFactory} has the ownership to guarantee the uniqueness of
+   * this
+   * name in a game instance.
+   *
+   * @param playerName The player name.
+   * 
+   */
+  public synchronized void setPlayerName(String playerName) throws NullPlayerNameException {
+    if (playerName == null) {
+      throw new NullPlayerNameException("[Class Player, method setPlayerName]: Null player name");
+    }
+    this.playerName = playerName;
+  }
+
+  /**
+   * score setter.
+   *
+   * @param score The score.
+   * 
+   */
+  public synchronized void setScore(Score score) throws NullPlayerScoreException {
+    if (score == null) {
+      throw new NullPlayerScoreException("[Class Player, method setScore]: Null score");
+    }
+    this.score = score;
+  }
+
+  /**
+   * bookshelf setter.
+   *
+   * @param bookshelf The bookshelf.
+   * 
+   */
+  public synchronized void setBookshelf(Bookshelf bookshelf) throws NullPlayerBookshelfException {
+    if (bookshelf == null) {
+      throw new NullPlayerBookshelfException("[Class Player, method setBookshelf]: Null bookshelf");
+    }
+    this.bookshelf = bookshelf;
+  }
+
+  /**
+   * privateCard setter.
+   *
+   * @param privateCard The private card.
+   * 
+   */
+  public synchronized void setPrivateCard(PrivateCard privateCard) throws NullPlayerPrivateCardException {
+    if (privateCard == null) {
+      throw new NullPlayerPrivateCardException("[Class Player, method setPrivateCard]: Null private card");
+    }
+    this.privateCard = privateCard;
+  }
+
+  /**
+   * scoreBlocks setter.
+   *
+   * @param scoreBlocks The score blocks list.
+   * 
+   */
+  public synchronized void setScoreBlocks(List<ScoreBlock> scoreBlocks) throws NullPlayerScoreBlocksException {
+    if (scoreBlocks == null) {
+      throw new NullPlayerScoreBlocksException("[Class Player, method setScoreBlocks]: Null score blocks");
+    }
+    this.scoreBlocks = scoreBlocks;
+  }
+
+  /**
+   * Method to add a scoreblock to the player.
+   * 
+   * @param scoreBlock The scoreblock to add.
+   */
+  public synchronized void addScoreBlock(ScoreBlock scoreBlock) {
+    scoreBlocks.add(scoreBlock);
+  }
+
+  /**
+   * playerId getter.
+   *
+   * @return The player's id.
+   * 
+   */
+  public synchronized UUID getPlayerID() {
+    return playerId;
+  }
+
+  /**
+   * playerName getter.
+   *
+   * @return The player's name.
+   * 
+   */
+  public synchronized String getPlayerName() {
+    return playerName;
+  }
+
+  /**
+   * score getter.
+   *
+   * @return The player's score.
+   * 
+   */
+  public synchronized Score getScore() {
+    return score;
+  }
+
+  /**
+   * bookshelf getter.
+   *
+   * @return The player's bookshelf.
+   * 
+   */
+  public synchronized Bookshelf getBookshelf() {
+    return bookshelf;
+  }
+
+  /**
+   * privateCard getter.
+   *
+   * @return The player's private card.
+   * 
+   */
+  public synchronized PrivateCard getPrivateCard() {
+    return privateCard;
+  }
+
+  /**
+   * scoreBlocks getter.
+   *
+   * @return The player's score blocks list.
+   * 
+   */
+  public synchronized List<ScoreBlock> getScoreBlocks() {
+    return scoreBlocks;
+  }
+
+  /**
+   * Function to be called by {@link Game} at the end of Player's turn.
+   * Updates its scores passing their score-giving objects to specific methods.
+   * 
+   * @throws NullPointerException Generic NPE.
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds.
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds.
+   * @throws NullIndexValueException If the index provided is null.
+   * @throws NullPlayerBookshelfException If bookshelf is null.
+   * @throws NullScoreBlockListException If the list of scoreblocks is null.
+   * @throws NegativeMatchedBlockCountException If the number of matched blocks to set is negative.
+   * @throws NullMatchedBlockCountException If the number of matched blocks to set is null.
+   */
+  public void updateScore() throws NullPointerException, BookshelfGridColIndexOutOfBoundsException,
+      BookshelfGridRowIndexOutOfBoundsException, NullIndexValueException, NullPlayerBookshelfException,
+      NullScoreBlockListException, NullMatchedBlockCountException, NegativeMatchedBlockCountException {
+    score.setBookshelfPoints(bookshelf);
+    score.setPrivatePoints(bookshelf, privateCard);
+    score.setScoreBlockPoints(scoreBlocks);
+  }
+
+  /**
+   * Setter of connected status.
+   *
+   * @param status status of player connection.
+   */
+  public synchronized void setIsConnected(boolean status) {
+    this.isConnected = status;
+  }
+
+  /**
+   * Getter of connected status.
+   *
+   * @return status of player connection.
+   */
+  public synchronized boolean getIsConnected() {
+    return isConnected;
+  }
+
+  /**
+   * Setter of active player status.
+   *
+   * @param status status of player.
+   */
+  public void setIsActivePlayer(boolean status) {
+    this.isActivePlayer = status;
+  }
+
+  /**
+   * Getter of active player status.
+   *
+   * @return status of player .
+   */
+  public boolean getIsActivePlayer() {
+    return isActivePlayer;
+  }
+
+  /**
+   * {@inheritDoc}
+   * 
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof Player)) {
+      return false;
+    }
+    Player player = (Player) obj;
+    return (playerId.equals(player.getPlayerID())
+        && playerName.equals(player.getPlayerName()));
+  }
+
+  /**
+   * {@inheritDoc}
+   * 
+   */
+  @Override
+  public int hashCode() {
+    return playerName.hashCode() * playerId.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/index.html new file mode 100644 index 00000000..ab456fa0 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.player

it.polimi.is23am10.server.model.player

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total25 of 16885%2 of 1888%53185432201
Player2514385%21688%53185432201
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/index.source.html new file mode 100644 index 00000000..cdbb84a5 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.player/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.player

it.polimi.is23am10.server.model.player

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total25 of 16885%2 of 1888%53185432201
Player.java2514385%21688%53185432201
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/Score.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/Score.html new file mode 100644 index 00000000..866ee495 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/Score.html @@ -0,0 +1 @@ +Score

Score

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total44 of 44990%9 of 4881%1043383119
hashCode()160%n/a111111
getVisibleScore()111150%1150%120101
getStringTotalScore()91052%1150%120101
setBookshelfPoints(Bookshelf)58394%11593%1911601
equals(Object)32990%5550%561801
countAdjacentTilesRecursive(Bookshelf, int, int, Integer[][], Tile.TileType)95100%11392%1801101
static {...}55100%n/a0101501
setPrivatePoints(Bookshelf, PrivateCard)25100%2100%020501
Score()19100%n/a010601
Score(Score)19100%n/a010601
getTotalScore()17100%n/a010101
setScoreBlockPoints(List)16100%2100%020401
setExtraPoint()5100%n/a010201
obfuscatePrivatePoints()5100%n/a010201
lambda$setScoreBlockPoints$0(ScoreBlock)4100%n/a010101
getExtraPoint()3100%n/a010101
getBookshelfPoints()3100%n/a010101
getScoreBlockPoints()3100%n/a010101
getPrivatePoints()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/Score.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/Score.java.html new file mode 100644 index 00000000..a0674191 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/Score.java.html @@ -0,0 +1,347 @@ +Score.java

Score.java

package it.polimi.is23am10.server.model.score;
+
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.card.PrivateCard;
+import it.polimi.is23am10.server.model.items.card.exceptions.NegativeMatchedBlockCountException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NullMatchedBlockCountException;
+import it.polimi.is23am10.server.model.items.card.exceptions.NullScoreBlockListException;
+import it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock;
+import it.polimi.is23am10.server.model.items.tile.Tile;
+import it.polimi.is23am10.server.model.items.tile.Tile.TileType;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * The Score class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+
+public final class Score implements Serializable {
+  /**
+   * Integer referencing the extra point given to the first player
+   * to complete their bookshelf.
+   * 
+   */
+  private Integer extraPoint;
+
+  /**
+   * Integer referencing the points the player receives from
+   * the groups of same type tiles in their bookshelf.
+   * 
+   */
+  private Integer bookshelfPoints;
+
+  /**
+   * Integer referencing the points the player receives from
+   * completing shared goals.
+   * 
+   */
+  private Integer scoreBlockPoints;
+
+  /**
+   * Integer referencing the points the player receives from
+   * completing their private (secret) goal.
+   * 
+   */
+  private Integer privatePoints;
+
+  /**
+   * Map that allows the conversion from number of matches 
+   * in private cards to points received.
+   */
+  public static final Map<Integer, Integer> privateCardPointsMap = Map.of(
+      0, 0,
+      1, 1,
+      2, 2,
+      3, 4,
+      4, 6,
+      5, 9,
+      6, 12
+      );
+
+  /**
+   * Map that allows the conversion from number of groups
+   * in player's bookshelf to points received.
+   */
+  private static final Map<Integer, Integer> bookshelfPointsMap = Map.of(
+      3, 2,
+      4, 3,
+      5, 5,
+      6, 8
+      );
+
+  /**
+   * Integer representing the minimum group size
+   * for counting bookshelf points.
+   */
+  private static final Integer MIN_GROUP_SIZE = 3;
+
+  /**
+   * Integer representing the maximum "useful" group
+   * size for counting bookshelf points. Bigger groups
+   * count as groups of MAX_GROUP_SIZE
+   */
+  private static final Integer MAX_GROUP_SIZE = 6;
+
+  /**
+   * Constructor.
+   * Set all the default values.
+   * 
+   */
+  public Score() {
+    extraPoint = 0;
+    bookshelfPoints = 0;
+    scoreBlockPoints = 0;
+    privatePoints = 0;
+  }
+
+  /**
+   * Copy constructor to generate another copy of same Score.
+   * 
+   * @param toCopy score to copy
+   */
+  public Score(Score toCopy) {
+    bookshelfPoints = toCopy.getBookshelfPoints();
+    extraPoint = toCopy.getExtraPoint();
+    scoreBlockPoints = toCopy.getScoreBlockPoints();
+    privatePoints = toCopy.getPrivatePoints();
+  }
+
+  /**
+   * extraPoint setter. Value can be only set to 1.
+   * 
+   */
+  public void setExtraPoint() {
+    this.extraPoint = 1;
+  }
+
+  /**
+   * bookshelfPoints setter.
+   * 
+   * @param bs The bookshelf object to check for groups in.
+   * @throws NullIndexValueException If the index provided is null.
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds.
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds.
+   * @throws NullPlayerBookshelfException If bookshelf is null.
+   * @throws NullPointerException Generic NPE.
+   * 
+   */
+  public void setBookshelfPoints(Bookshelf bs) 
+      throws NullPointerException, BookshelfGridColIndexOutOfBoundsException,
+      BookshelfGridRowIndexOutOfBoundsException, NullIndexValueException, NullPlayerBookshelfException {
+    if (bs == null) {
+      throw new NullPlayerBookshelfException("[Score:setBookshelfPoints]");
+    }
+
+    List<Integer> groupsSizes = new ArrayList<>();
+    Integer[][] visitedMap = new Integer[Bookshelf.BOOKSHELF_ROWS][Bookshelf.BOOKSHELF_COLS];
+
+    // Traverse each tile in the grid
+    for (int i = 0; i < Bookshelf.BOOKSHELF_ROWS; i++) {
+      for (int j = 0; j < Bookshelf.BOOKSHELF_COLS; j++) {
+        // Check if the tile has already been visited
+        if (visitedMap[i][j] == null) {
+          Tile tile = bs.getBookshelfGridAt(i, j);
+          if (!tile.isEmpty()) {
+            int groupSize = countAdjacentTilesRecursive(bs, i, j, visitedMap, tile.getType());
+
+            // I only consider valid groups.
+            if (groupSize >= MIN_GROUP_SIZE && groupSize <= MAX_GROUP_SIZE) {
+              groupsSizes.add(groupSize);
+            }
+            if (groupSize > MAX_GROUP_SIZE) {
+              groupsSizes.add(MAX_GROUP_SIZE);
+            }
+          }
+        }
+      }
+    }
+
+    bookshelfPoints = groupsSizes.stream().mapToInt(bookshelfPointsMap::get).sum();
+  }
+
+  /**
+   * scoreBlockPoints setter.
+   * 
+   * @param scoreBlocks The scoreblock list to get points from.
+   * @throws NullScoreBlockListException If the list of scoreblocks is null.
+   * 
+   */
+  public void setScoreBlockPoints(List<ScoreBlock> scoreBlocks) throws NullScoreBlockListException {
+    if (scoreBlocks == null) {
+      throw new NullScoreBlockListException("[Score:setScoreBlockPoints]");
+    }
+    scoreBlockPoints = scoreBlocks.stream().mapToInt(sb -> sb.getScore()).sum();
+  }
+
+  /**
+   * privatePoints setter.
+   * 
+   * @param pc The private card to get points from.
+   * @throws NegativeMatchedBlockCountException If the number of matched blocks to set is negative.
+   * @throws NullMatchedBlockCountException If the number of matched blocks to set is null.
+   * @throws NullPointerException Generic NPE.
+   * 
+   */
+  public void setPrivatePoints(Bookshelf bs, PrivateCard pc) throws NullPointerException, NullMatchedBlockCountException, NegativeMatchedBlockCountException {
+    if (pc == null) {
+      throw new NullPointerException("[Score:setPrivatePoints]");
+    }
+    pc.setMatchedBlocksCount(pc.getPattern().getRule().apply(bs));
+    privatePoints = privateCardPointsMap.get(pc.getMatchedBlocksCount());
+  }
+
+  public void obfuscatePrivatePoints() {
+    privatePoints = -1;
+  }
+
+  /**
+   * extraPoints getter.
+   * 
+   * @return The extra points value.
+   * 
+   */
+  public Integer getExtraPoint() {
+    return extraPoint;
+  }
+
+  /**
+   * bookshelfPoints getter.
+   * 
+   * @return The bookshelf points value.
+   * 
+   */
+  public Integer getBookshelfPoints() {
+    return bookshelfPoints;
+  }
+
+  /**
+   * scoreBlockPoints getter.
+   * 
+   * @return The score block points value.
+   * 
+   */
+  public Integer getScoreBlockPoints() {
+    return scoreBlockPoints;
+  }
+
+  /**
+   * privatePoints getter.
+   * 
+   * @return The private points value.
+   * 
+   */
+  public Integer getPrivatePoints() {
+    return privatePoints;
+  }
+
+  /**
+   * Helper function to help with BFS in bookshelf to find groups of same tile type.
+   * NOTE: this function should be called from setBookshelfPoints()
+   * 
+   * @param bs Bookshelf to check for groups in
+   * @param row Row index 
+   * @param col Column index
+   * @param visitedMap map to prevent repeatedly checking same spots
+   * @param type type of tile to check for
+   * @return integer representing the count of items in that group
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds.
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds.
+   * @throws NullIndexValueException If the index provided is null.
+   */
+  private int countAdjacentTilesRecursive(Bookshelf bs, int row, int col, Integer[][] visitedMap, TileType type) 
+      throws BookshelfGridColIndexOutOfBoundsException, BookshelfGridRowIndexOutOfBoundsException, NullIndexValueException {
+    // Check if the current tile is within the grid bounds and has the same type as the original tile, is not empty not visited
+    if (
+        row < 0 || row >= Bookshelf.BOOKSHELF_ROWS 
+        || col < 0 || col >= Bookshelf.BOOKSHELF_COLS 
+        || bs.getBookshelfGridAt(row, col).getType() != type 
+        || bs.getBookshelfGridAt(row, col).getType() == TileType.EMPTY 
+        || visitedMap[row][col] != null
+    ) {
+      return 0;
+    }
+    
+    // Mark the current tile as visited by setting it to 1
+    visitedMap[row][col] = 1;
+    
+    // Recursively count the adjacent tiles with the same type
+    int count = 1;
+    count += countAdjacentTilesRecursive(bs, row + 1, col, visitedMap, type);
+    count += countAdjacentTilesRecursive(bs, row - 1, col, visitedMap, type);
+    count += countAdjacentTilesRecursive(bs, row, col + 1, visitedMap, type);
+    count += countAdjacentTilesRecursive(bs, row, col - 1, visitedMap, type);
+    
+    return count;
+  }
+
+  /**
+   * Getter method that returns the total score
+   * computing it from all the available scores.
+   * 
+   * @return total score.
+   */
+  public Integer getTotalScore() {
+    return extraPoint + scoreBlockPoints + privatePoints + bookshelfPoints;
+  }
+
+  /**
+   * Method used to retrieve the total score from a
+   * possibly obfuscated score. It ignores the invalidated privatescore.
+   * Used for sorting purposes in CLI.
+   * 
+   * @return visible score.
+   */
+  public Integer getVisibleScore() {
+    return (privatePoints != -1) ? getTotalScore() : extraPoint + scoreBlockPoints + bookshelfPoints;
+  }
+
+  /**
+   * Method used to retrieve a string representing the
+   * total score. If score is obfuscated (private card points)
+   * it returns a partial score and a graphic indication of possibly missing points.
+   * 
+   * @return String representing total score.
+   */
+  public String getStringTotalScore() {
+    return (privatePoints != -1) ? getTotalScore().toString() : String.format("%d (+?)", getVisibleScore());
+  }
+
+  /**
+   * {@inheritDoc}
+   * 
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof Score)) {
+      return false;
+    }
+    Score sc = (Score) obj;
+    return (
+      extraPoint == sc.getExtraPoint() 
+      && scoreBlockPoints == sc.getScoreBlockPoints() 
+      && privatePoints == sc.getPrivatePoints()
+      && bookshelfPoints == sc.getBookshelfPoints());
+  }
+
+  /**
+   * {@inheritDoc}
+   * 
+   */
+  @Override
+  public int hashCode() {
+    return extraPoint.hashCode() * scoreBlockPoints.hashCode() * privatePoints.hashCode() * bookshelfPoints.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/index.html new file mode 100644 index 00000000..0bacf15b --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.score

it.polimi.is23am10.server.model.score

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total44 of 44990%9 of 4881%104338311901
Score4440590%93981%104338311901
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/index.source.html new file mode 100644 index 00000000..bf2814f4 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.model.score/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.model.score

it.polimi.is23am10.server.model.score

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total44 of 44990%9 of 4881%104338311901
Score.java4440590%93981%104338311901
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/CurrentPlayerHandler.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/CurrentPlayerHandler.html new file mode 100644 index 00000000..533be2fa --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/CurrentPlayerHandler.html @@ -0,0 +1 @@ +CurrentPlayerHandler

CurrentPlayerHandler

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 24100%0 of 0n/a0701007
setPlayer(Player)4100%n/a010201
setStartPlayingTimeMs(long)4100%n/a010201
setNotified(boolean)4100%n/a010201
CurrentPlayerHandler()3100%n/a010101
getPlayer()3100%n/a010101
getStartPlayingTimeMs()3100%n/a010101
getNotified()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/CurrentPlayerHandler.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/CurrentPlayerHandler.java.html new file mode 100644 index 00000000..975ec940 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/CurrentPlayerHandler.java.html @@ -0,0 +1,92 @@ +CurrentPlayerHandler.java

CurrentPlayerHandler.java

+package it.polimi.is23am10.server.network.gamehandler;
+
+import it.polimi.is23am10.server.model.player.Player;
+
+/**
+ * The current player handler class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class CurrentPlayerHandler {
+
+  /**
+   * The active player instance.
+   *
+   */
+  private Player player;
+  
+  /**
+   * The active player turn starting time in ms.
+   *
+   */
+  private long startPlayingTimeMs;
+
+  /**
+   * The notified flag if a first inactivity has been alreasy notified.
+   *
+   */
+  private boolean notified;
+
+  /**
+   * The player setter.
+   *
+   * @param p the player to be assigned.
+   *
+   */
+  public synchronized void setPlayer(Player p) {
+    player = p;
+  }
+
+  /**
+   * The start playing time setter.
+   *
+   * @param time the player turn starting time in ms.
+   *
+   */
+  public synchronized void setStartPlayingTimeMs(long time) {
+    startPlayingTimeMs = time;
+  }
+
+  /**
+   * The notified setter.
+   *
+   * @param f the notified flag to be set.
+   *
+   */
+  public synchronized void setNotified(boolean f) {
+    notified = f;
+  }
+
+  /**
+   * The player getter.
+   *
+   * @return the assigned player.
+   *
+   */
+  public synchronized Player getPlayer() {
+    return player;
+  }
+
+  /** The start playing time getter.
+   *
+   * @return the player turn starting time in ms.
+   *
+   */
+  public synchronized long getStartPlayingTimeMs() {
+    return startPlayingTimeMs;
+  }
+
+  /**
+   * The notified getter.
+   *
+   */
+  public synchronized boolean getNotified() {
+    return notified;
+  }
+}
+
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/GameHandler.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/GameHandler.html new file mode 100644 index 00000000..511c0d5c --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/GameHandler.html @@ -0,0 +1 @@ +GameHandler

GameHandler

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total24 of 26590%10 of 2661%1029972016
removePlayerByGame(UUID, Player)76089%4450%4532001
lambda$pushGameState$3(AbstractPlayerConnector)73282%1375%1321301
getPlayerConnectorFromPlayer(Player)42586%2250%2321001
addPlayerConnector(AbstractPlayerConnector)4866%1150%121401
equals(Object)21487%1150%121401
GameHandler(String, Integer)25100%n/a010801
updateCurrentPlayerHandler()15100%n/a010401
pushGameState()15100%n/a010401
lambda$removePlayerByGame$4(UUID, Player, AbstractPlayerConnector)14100%1375%130101
lambda$pushGameState$1(AbstractPlayerConnector, VirtualPlayer)11100%2100%020101
hashCode()5100%n/a010101
lambda$getPlayerConnectorFromPlayer$0(Player, AbstractPlayerConnector)5100%n/a010101
getCurrentPlayerHandler()3100%n/a010101
getGame()3100%n/a010101
getPlayerConnectors()3100%n/a010101
lambda$pushGameState$2(VirtualPlayer)3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/GameHandler.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/GameHandler.java.html new file mode 100644 index 00000000..44992063 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/GameHandler.java.html @@ -0,0 +1,278 @@ +GameHandler.java

GameHandler.java

package it.polimi.is23am10.server.network.gamehandler;
+
+import it.polimi.is23am10.server.model.factory.GameFactory;
+import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
+import it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException;
+import it.polimi.is23am10.server.model.game.Game;
+import it.polimi.is23am10.server.model.game.Game.GameStatus;
+import it.polimi.is23am10.server.model.game.exceptions.FullGameException;
+import it.polimi.is23am10.server.model.game.exceptions.InvalidMaxPlayerException;
+import it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException;
+import it.polimi.is23am10.server.model.game.exceptions.NullMaxPlayerException;
+import it.polimi.is23am10.server.model.game.exceptions.PlayerNotFoundException;
+import it.polimi.is23am10.server.model.items.board.exceptions.InvalidNumOfPlayersException;
+import it.polimi.is23am10.server.model.items.board.exceptions.NullNumOfPlayersException;
+import it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException;
+import it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException;
+import it.polimi.is23am10.server.model.player.Player;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException;
+import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
+import it.polimi.is23am10.server.network.gamehandler.exceptions.GameSnapshotUpdateException;
+import it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector;
+import it.polimi.is23am10.server.network.messages.GameMessage;
+import it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector;
+import it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket;
+import it.polimi.is23am10.server.network.virtualview.VirtualView;
+
+import java.io.IOException;
+import java.rmi.RemoteException;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Optional;
+import java.util.Set;
+import java.util.UUID;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * The match class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class GameHandler {
+
+  /**
+   * The logger, an instance of {@link Logger}.
+   *
+   */
+  final Logger logger = LogManager.getLogger(GameHandler.class);
+
+  /**
+   * The underlying game state.
+   *
+   */
+  private Game game;
+
+  /**
+   * The connected players connectors.
+   *
+   */
+  private Set<AbstractPlayerConnector> playerConnectors =
+      Collections.synchronizedSet(new HashSet<>());
+
+  /**
+   * The current player handler.
+   *
+   */
+  private CurrentPlayerHandler currentPlayerHandler;
+
+  /**
+   * Constructor.
+   *
+   * @param firstPlayerName The match starting player name.
+   * @param maxPlayersNum   The chosen max players for this match.
+   * @throws NullNumOfPlayersException If the number of players provided when filling the board is null.
+   * @throws InvalidNumOfPlayersException If, while adding multiple players, there is an invalid number of them.
+   * @throws NullPlayerNamesException If, while adding multiple players, the list of player names is null.
+   * @throws AlreadyInitiatedPatternException If assigning a pattern to a card that already has one.
+   * @throws DuplicatePlayerNameException If player with that name already exists.
+   * @throws NullPlayerScoreBlocksException If player's scoreblocks list is null.
+   * @throws NullPlayerPrivateCardException If player's private card object is null.
+   * @throws NullPlayerScoreException If player's score object is null.
+   * @throws NullPlayerBookshelfException If bookshelf is null.
+   * @throws NullPlayerIdException If player id is null.
+   * @throws NullPlayerNameException If player name is null.
+   * @throws InvalidMaxPlayerException If value for maximum number of players in the game is not valid.
+   * @throws NullMaxPlayerException If no value for maximum number of players in the game is provided.
+   * @throws NullAssignedPatternException If the pattern assigned to a card is null.
+   * @throws FullGameException If game is full, on player trying to join.
+   * @throws NotValidScoreBlockValueException If the value assigned to a scoreblock is not valid.
+   * @throws PlayerNotFoundException If the player with the name provided is not found.
+   *
+   */
+  public GameHandler(String firstPlayerName, Integer maxPlayersNum)
+      throws NullMaxPlayerException, InvalidMaxPlayerException, NullPlayerNameException,
+      NullPlayerIdException, NullPlayerBookshelfException, NullPlayerScoreException,
+      NullPlayerPrivateCardException, NullPlayerScoreBlocksException, DuplicatePlayerNameException,
+      AlreadyInitiatedPatternException, NullPlayerNamesException, InvalidNumOfPlayersException,
+      NullNumOfPlayersException, NullAssignedPatternException, FullGameException, NotValidScoreBlockValueException, PlayerNotFoundException {
+    this.game = GameFactory.getNewGame(firstPlayerName, maxPlayersNum);
+    this.currentPlayerHandler = new CurrentPlayerHandler();
+    updateCurrentPlayerHandler();
+  }
+
+  /**
+   * Update the current player handler based on the game model updates.
+   *
+   */
+  public synchronized void updateCurrentPlayerHandler() {
+    currentPlayerHandler.setPlayer(game.getActivePlayer());
+    currentPlayerHandler.setStartPlayingTimeMs(System.currentTimeMillis());
+    currentPlayerHandler.setNotified(false);
+  }
+
+  /**
+   * Current player handler getter.
+   *
+   * @return The current player handler instance.
+   *
+   */
+  public synchronized CurrentPlayerHandler getCurrentPlayerHandler() {
+    return currentPlayerHandler;
+  }
+
+  /**
+   * Retrieve the {@link AbstractPlayerConnector} from a {@link Player} instance.
+   *
+   * @param player the player assinged to a connector to find.
+   *
+   */
+  public AbstractPlayerConnector getPlayerConnectorFromPlayer(Player player) {
+    if (player == null) {
+      return null;
+    }
+    Optional<AbstractPlayerConnector> res;
+    synchronized (playerConnectors) {
+      res = playerConnectors.stream()
+        .filter(p -> p.getPlayer().equals(player)) 
+        .findFirst();
+    }
+
+    if (res.isPresent()) {
+      return res.get();
+    }
+    return null;
+  }
+
+
+  /**
+   * Getter for {@link Game} instance.
+   *
+   * @return The current game instance containing the game state.
+   *
+   */
+  public synchronized Game getGame() {
+    return game;
+  }
+
+  /**
+   * Getter for {@link AbstractPlayerConnector} list instance.
+   *
+   * @return The current game instance containing the game state.
+   *
+   */
+  public synchronized Set<AbstractPlayerConnector> getPlayerConnectors() {
+    return playerConnectors;
+  }
+
+  /**
+   * Add a new player connector from socket server.
+   * Will accept a built instance of {@link AbstractPlayerConnector}
+   *
+   * @param playerConnector The connector to be added to the current game.
+   * @throws NullPlayerConnector On null Player connector.
+   *
+   */
+  public void addPlayerConnector(AbstractPlayerConnector playerConnector)
+      throws NullPlayerConnector {
+    if (playerConnector == null) {
+      throw new NullPlayerConnector();
+    }
+    playerConnectors.add(playerConnector);
+  }
+
+  /**
+   * Push a new game state to the message queue for each connected player.
+   *
+   * @throws GameSnapshotUpdateException On notification failure.
+   *
+   */
+  public void pushGameState() throws GameSnapshotUpdateException {
+    // iterating over the Collections.synchronizedList requires synch.
+    synchronized (playerConnectors) {
+      playerConnectors.parallelStream().forEach((pc) -> {
+        if (!pc.getPlayer().getIsConnected()) {
+          return;
+        }
+        VirtualView gameCopy = new VirtualView(game);
+        if (game.getStatus() != GameStatus.ENDED) {
+          gameCopy.getPlayers()
+          .stream()
+          .filter(p -> !p.getPlayerName().equals(pc.getPlayer().getPlayerName()))
+          .forEach(p -> p.obfuscatePrivateCard());
+        }
+        // synch is performed by the blocking queue.
+        try {
+          pc.notify(new GameMessage(gameCopy));
+        } catch (InterruptedException | RemoteException e) {
+          logger.error("Failed to notify game state {}", e.getMessage());
+        }
+      });
+    }
+  }
+
+  /**
+   * Method that remove player by the game handler
+   * 
+   * @param gameId game id.
+   * @param player player to be removed.
+   */
+  public void removePlayerByGame(UUID gameId, Player player){
+    if (gameId == null || player == null) {
+      return;
+    }
+
+    Optional<AbstractPlayerConnector> target;
+
+    synchronized (playerConnectors) {
+      target = getPlayerConnectors().stream()
+          .filter(connector ->
+              connector.getGameId().equals(gameId) && connector.getPlayer().equals(player))
+          .findFirst();
+    }
+    if (target.isPresent()) {
+      AbstractPlayerConnector targetConnector = target.get();
+      if (targetConnector.getClass() == PlayerConnectorSocket.class) {
+        try {
+          PlayerConnectorSocket ps = (PlayerConnectorSocket) targetConnector;
+          synchronized (ps.getConnector()) {
+            ps.getConnector().close();
+          }
+        } catch (IOException e) {
+          logger.error("Failed to close socket connection", e);
+        }
+      }
+      playerConnectors.remove(targetConnector);
+      logger.info("Removed player {} connector from game {}", player.getPlayerName(), gameId);
+    }
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  public boolean equals(Object obj) {
+    if (!(obj instanceof GameHandler)) {
+      return false;
+    }
+    GameHandler casted = (GameHandler) obj;
+    return game.getGameId().equals(casted.getGame().getGameId());
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  public int hashCode() {
+    return game.getGameId().hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/index.html new file mode 100644 index 00000000..7909df54 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.network.gamehandler

it.polimi.is23am10.server.network.gamehandler

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total24 of 28991%10 of 2661%103698202302
GameHandler2424190%101661%102997201601
CurrentPlayerHandler24100%n/a070100701
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/index.source.html new file mode 100644 index 00000000..8768c9d8 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.gamehandler/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.network.gamehandler

it.polimi.is23am10.server.network.gamehandler

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total24 of 28991%10 of 2661%103698202302
GameHandler.java2424190%101661%102997201601
CurrentPlayerHandler.java24100%n/a070100701
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AbstractMessage$MessageType.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AbstractMessage$MessageType.html new file mode 100644 index 00000000..a8a5df05 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AbstractMessage$MessageType.html @@ -0,0 +1 @@ +AbstractMessage.MessageType

AbstractMessage.MessageType

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 33100%0 of 0n/a010601
static {...}33100%n/a010601
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AbstractMessage.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AbstractMessage.html new file mode 100644 index 00000000..425c8673 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AbstractMessage.html @@ -0,0 +1 @@ +AbstractMessage

AbstractMessage

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 9100%0 of 0n/a030303
AbstractMessage()3100%n/a010101
getMessage()3100%n/a010101
getMessageType()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AbstractMessage.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AbstractMessage.java.html new file mode 100644 index 00000000..b4701d08 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AbstractMessage.java.html @@ -0,0 +1,70 @@ +AbstractMessage.java

AbstractMessage.java

package it.polimi.is23am10.server.network.messages;
+
+import java.io.Serializable;
+
+/**
+ * Abstract class representing a generic message exchanged.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class AbstractMessage implements Serializable {
+
+  /**
+   * Message in string. Plaintext or JSON.
+   */
+  protected String message;
+
+  /**
+   * Enum for type of message sent.
+   */
+  public enum MessageType {
+    /**
+     * Message containing a VirtualView, representing a game snapshot.
+     */
+    GAME_SNAPSHOT,
+    /**
+     * Message containing a chat textual exchange between players.
+     */
+    CHAT_MESSAGE,
+    /**
+     * Message containing an error to display to the player.
+     */
+    ERROR_MESSAGE,
+    /**
+     * Message containing the available games joinable by player.
+     */
+    AVAILABLE_GAMES,
+    /**
+     * ACK message sent from server to client to confirm that the timer has
+     * been snoozed. If not received by client implies client termination.
+     */
+    SNOOZE_ACK
+  }
+
+  /**
+   * Type of message sent.
+   */
+  protected MessageType msgType;
+  
+  /**
+   * Getter for message.
+   *
+   * @return the string message
+   */
+  public String getMessage() {
+    return message;
+  }
+
+  /**
+   * Getter for message type.
+   *
+   * @return message type
+   */
+  public MessageType getMessageType() {
+    return msgType;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AvailableGamesMessage.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AvailableGamesMessage.html new file mode 100644 index 00000000..499d0a64 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AvailableGamesMessage.html @@ -0,0 +1 @@ +AvailableGamesMessage

AvailableGamesMessage

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total5 of 4288%1 of 475%3521323
getReceiver()30%n/a111111
isBroadcast()20%n/a111111
AvailableGamesMessage(List, Player[])37100%1375%1301101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AvailableGamesMessage.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AvailableGamesMessage.java.html new file mode 100644 index 00000000..30a330e6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/AvailableGamesMessage.java.html @@ -0,0 +1,76 @@ +AvailableGamesMessage.java

AvailableGamesMessage.java

package it.polimi.is23am10.server.network.messages;
+
+import java.util.List;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import it.polimi.is23am10.server.model.player.Player;
+import it.polimi.is23am10.server.network.virtualview.VirtualView;
+import it.polimi.is23am10.utils.ThreadLocalTypeAdapterFactory;
+
+/**
+ * A message containing a list of available games to be sent to the client.
+ * Note that games are already converted to network-friendly {@link VirtualView}
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class AvailableGamesMessage extends AbstractMessage {
+
+    /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+  
+  /**
+   * Gson object for serialization and deserialization
+   */
+  protected final transient Gson gson = new GsonBuilder()
+.registerTypeAdapterFactory(new ThreadLocalTypeAdapterFactory())
+.create();
+
+
+  /**
+   * Player receiving the list.
+   */
+  private Player receiver;
+
+  /**
+   * Public constructor for AvailableGamesMessage in broadcast.
+   *
+   * @param availableGames games to send.
+   * @param receivers the optional receiver player.
+   */
+  public AvailableGamesMessage(List<VirtualView> availableGames, Player ...receivers) {
+    msgType = MessageType.AVAILABLE_GAMES;
+    this.message = gson.toJson(availableGames);
+    if (receivers != null && receivers.length > 0) {
+      this.receiver = receivers[0];
+    }
+  }
+
+  /**
+   * Boolean to check if message is direct or broadcast.
+   * Overridden to false as this message can only be private.
+   *
+   * @return is the message broadcast?
+   */
+  public boolean isBroadcast() {
+    return false;
+  }
+
+  /**
+   * Getter for the receiving player.
+   *
+   * @return the player instance
+   */
+  public Player getReceiver() {
+    return receiver;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ChatMessage.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ChatMessage.html new file mode 100644 index 00000000..2fa4a165 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ChatMessage.html @@ -0,0 +1 @@ +ChatMessage

ChatMessage

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 103100%0 of 2100%0802607
ChatMessage(Player, String, Player)30100%n/a0101101
ChatMessage(Player, String, String)30100%n/a0101101
ChatMessage(Player, String)27100%n/a0101001
isBroadcast()7100%2100%020101
getReceiver()3100%n/a010101
getReceiverName()3100%n/a010101
getSender()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ChatMessage.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ChatMessage.java.html new file mode 100644 index 00000000..1c644b3d --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ChatMessage.java.html @@ -0,0 +1,126 @@ +ChatMessage.java

ChatMessage.java

package it.polimi.is23am10.server.network.messages;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+import it.polimi.is23am10.server.model.player.Player;
+import it.polimi.is23am10.utils.ThreadLocalTypeAdapterFactory;
+
+/**
+ * A message sent via chat.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class ChatMessage extends AbstractMessage {
+
+    /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+  
+    /**
+   * Gson object for serialization and deserialization
+   */
+  protected final transient Gson gson = new GsonBuilder()
+    .registerTypeAdapterFactory(new ThreadLocalTypeAdapterFactory())
+    .create();
+  
+  /**
+   * Not mandatory. Not null if direct message.
+   */
+  private Player receiver;
+
+  /**
+   * Not mandatory, used for alt constructor.
+   */
+  private String receiverName;
+
+
+  /**
+   * Player sending the message.
+   */
+  protected Player sender;
+
+  /**
+   * Public constructor for building a direct message.
+   * 
+   * @param sender the player sending the message
+   * @param chatMessage the actual message
+   * @param receiver the player receiving the message
+   */
+  public ChatMessage(Player sender, String chatMessage, Player receiver) {
+    msgType = MessageType.CHAT_MESSAGE;
+    this.sender = sender;
+    message = chatMessage;
+    this.receiver = receiver;
+  }
+
+  /**
+   * Public constructor for building a direct message.
+   * 
+   * @param sender the player sending the message
+   * @param chatMessage the actual message
+   * @param receiver the player name receiving the message
+   */
+  public ChatMessage(Player sender, String chatMessage, String receiver) {
+    msgType = MessageType.CHAT_MESSAGE;
+    this.sender = sender;
+    message = chatMessage;
+    this.receiverName = receiver;
+  }
+
+  /**
+   * Public constructor for building a broadcast message.
+   * 
+   * @param sender the player sending the message
+   * @param chatMessage the actual message
+   */
+  public ChatMessage(Player sender, String chatMessage){
+    msgType = MessageType.CHAT_MESSAGE;
+    this.sender = sender;
+    message = chatMessage;
+  }
+
+  /**
+   * Boolean to check if message is direct or broadcast.
+   * 
+   * @return is the message broadcast?
+   */
+  public boolean isBroadcast() {
+    return receiverName == null;
+  }
+
+  /**
+   * Getter for the receiving player.
+   * 
+   * @return the player instance
+   */
+  public Player getReceiver() {
+    return receiver;
+  }
+
+  /**
+   * Getter for the receiving player.
+   * 
+   * @return the player instance
+   */
+  public String getReceiverName() {
+    return receiverName;
+  }
+
+  /**
+   * Getter for the sending player.
+   *
+   * @return the sending player
+   */
+  public Player getSender() {
+    return sender;
+  }
+
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ErrorMessage$ErrorSeverity.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ErrorMessage$ErrorSeverity.html new file mode 100644 index 00000000..b699bf8d --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ErrorMessage$ErrorSeverity.html @@ -0,0 +1 @@ +ErrorMessage.ErrorSeverity

ErrorMessage.ErrorSeverity

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 27100%0 of 0n/a010501
static {...}27100%n/a010501
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ErrorMessage.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ErrorMessage.html new file mode 100644 index 00000000..59b50e79 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ErrorMessage.html @@ -0,0 +1 @@ +ErrorMessage

ErrorMessage

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total13 of 5074%2 of 20%4631635
isBroadcast()70%20%221111
getReceiver()30%n/a111111
getErrorSeverity()30%n/a111111
ErrorMessage(String, Player, ErrorMessage.ErrorSeverity)20100%n/a010801
ErrorMessage(String, ErrorMessage.ErrorSeverity)17100%n/a010701
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ErrorMessage.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ErrorMessage.java.html new file mode 100644 index 00000000..3e0fa766 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/ErrorMessage.java.html @@ -0,0 +1,98 @@ +ErrorMessage.java

ErrorMessage.java

package it.polimi.is23am10.server.network.messages;
+
+
+import it.polimi.is23am10.server.model.player.Player;
+
+
+/**
+ * A message containing an error message to be sent to the client.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class ErrorMessage extends AbstractMessage {
+
+    /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+  
+  /**
+   * Not mandatory. Not null if direct message.
+   */
+  private Player receiver;
+
+  /**
+   * Three degrees of severity.
+   * Rule of thumb: 
+   * <ul>
+   * <li>Warning = something changed the flow of the game. User must be aware.
+   * <li>Error = something unexpected happened but game can continue.
+   * <li>Critical = something so bad happened that the game must end.
+   * </ul>
+   */
+  public enum ErrorSeverity {
+    INFO,
+    WARNING,
+    ERROR,
+    CRITICAL
+  }
+
+  private ErrorSeverity errorSeverity;
+
+  /**
+   * Public constructor for ErrorMessage.
+   *
+   * @param errorMessage message to send.
+   * @param receiver player who receives the message.
+   */
+  public ErrorMessage(String errorMessage, Player receiver, ErrorSeverity errorSeverity) {
+    msgType = MessageType.ERROR_MESSAGE;
+    this.message = errorMessage;
+    this.receiver = receiver;
+    this.errorSeverity = errorSeverity;
+  }
+
+  /**
+   * Public constructor for ErrorMessage in broadcast.
+   *
+   * @param errorMessage message to send.
+   */
+  public ErrorMessage(String errorMessage, ErrorSeverity errorSeverity) {
+    msgType = MessageType.ERROR_MESSAGE;
+    this.message = errorMessage;
+    this.errorSeverity = errorSeverity;
+  }
+
+  /**
+   * Boolean to check if message is direct or broadcast.
+   *
+   * @return is the message broadcast?
+   */
+  public boolean isBroadcast() {
+    return receiver == null;
+  }
+
+  /**
+   * Getter for the receiving player.
+   *
+   * @return the player instance
+   */
+  public Player getReceiver() {
+    return receiver;
+  }
+
+  /**
+   * Getter for the severity.
+   *
+   * @return the severity of the error.
+   */
+  public ErrorSeverity getErrorSeverity() {
+    return errorSeverity;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/GameMessage.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/GameMessage.html new file mode 100644 index 00000000..f363c879 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/GameMessage.html @@ -0,0 +1 @@ +GameMessage

GameMessage

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 35100%0 of 0n/a0201002
GameMessage(VirtualView)27100%n/a010901
getGame()8100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/GameMessage.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/GameMessage.java.html new file mode 100644 index 00000000..acfa7e88 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/GameMessage.java.html @@ -0,0 +1,54 @@ +GameMessage.java

GameMessage.java

package it.polimi.is23am10.server.network.messages;
+
+import it.polimi.is23am10.server.network.virtualview.VirtualView;
+import it.polimi.is23am10.utils.ThreadLocalTypeAdapterFactory;
+
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+
+/**
+ * A message containing a serialized JSON of a virtual view instance.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class GameMessage extends AbstractMessage {
+
+    /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+  
+  /**
+   * Gson object for serialization and deserialization
+   */
+  protected final transient Gson gson = new GsonBuilder()
+    .registerTypeAdapterFactory(new ThreadLocalTypeAdapterFactory())
+    .create();
+  
+  /**
+   * Public constructor for virtualView message.
+   * Game object is serialized into JSON and set as message.
+   * 
+   * @param virtualView virtual view to serialize
+   */
+  public GameMessage(VirtualView virtualView) {
+    msgType = MessageType.GAME_SNAPSHOT;
+    message = gson.toJson(virtualView);
+  }
+
+  /**
+   * Getter for virtualView instance. It deserializes it from
+   * JSON message.
+   * 
+   * @return deserialized virtual view object
+   */
+  public VirtualView getGame() {
+    return gson.fromJson(message, VirtualView.class);
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/SnoozeACKMessage.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/SnoozeACKMessage.html new file mode 100644 index 00000000..24396587 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/SnoozeACKMessage.html @@ -0,0 +1 @@ +SnoozeACKMessage

SnoozeACKMessage

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 11100%0 of 0n/a010501
SnoozeACKMessage()11100%n/a010501
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/SnoozeACKMessage.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/SnoozeACKMessage.java.html new file mode 100644 index 00000000..6bc82e55 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/SnoozeACKMessage.java.html @@ -0,0 +1,29 @@ +SnoozeACKMessage.java

SnoozeACKMessage.java

package it.polimi.is23am10.server.network.messages;
+
+/**
+ * Class representing a ACK message sent from server to client
+ * in response to a snooze command. Used to keep alice client.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class SnoozeACKMessage extends AbstractMessage {
+
+    /**
+   * An utility to be used during deserialization processes.
+   * 
+   */
+  @SuppressWarnings("unused")
+  private final String className = this.getClass().getName();
+
+  /**
+   * Public constructor.
+   * 
+   */
+  public SnoozeACKMessage(){
+    msgType = MessageType.SNOOZE_ACK;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/index.html new file mode 100644 index 00000000..76be8ac4 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.network.messages

it.polimi.is23am10.server.network.messages

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total18 of 31094%3 of 862%72758452308
ErrorMessage133774%20%463163501
AvailableGamesMessage53788%1375%352132301
ChatMessage103100%2100%080260701
GameMessage35100%n/a020100201
AbstractMessage.MessageType33100%n/a01060101
ErrorMessage.ErrorSeverity27100%n/a01050101
SnoozeACKMessage11100%n/a01050101
AbstractMessage9100%n/a03030301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/index.source.html new file mode 100644 index 00000000..37465cb6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.messages/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.network.messages

it.polimi.is23am10.server.network.messages

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total18 of 31094%3 of 862%72758452308
ErrorMessage.java136483%20%473213602
AvailableGamesMessage.java53788%1375%352132301
ChatMessage.java103100%2100%080260701
AbstractMessage.java42100%n/a04090402
GameMessage.java35100%n/a020100201
SnoozeACKMessage.java11100%n/a01050101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/AbstractPlayerConnector.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/AbstractPlayerConnector.html new file mode 100644 index 00000000..70452a04 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/AbstractPlayerConnector.html @@ -0,0 +1 @@ +AbstractPlayerConnector

AbstractPlayerConnector

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total24 of 8371%6 of 1040%416525111
equals(Object)240%60%445511
AbstractPlayerConnector(LinkedBlockingQueue)15100%2100%020601
getMessageFromQueue()11100%2100%020301
hashCode()8100%n/a010101
getMsgQueueSize()4100%n/a010101
setGameId(UUID)4100%n/a010201
setPlayer(Player)4100%n/a010201
setLastSnoozeMs(long)4100%n/a010201
getGameId()3100%n/a010101
getPlayer()3100%n/a010101
getLastSnoozeMs()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/AbstractPlayerConnector.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/AbstractPlayerConnector.java.html new file mode 100644 index 00000000..0f734552 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/AbstractPlayerConnector.java.html @@ -0,0 +1,188 @@ +AbstractPlayerConnector.java

AbstractPlayerConnector.java

package it.polimi.is23am10.server.network.playerconnector;
+
+import it.polimi.is23am10.server.model.game.Game;
+import it.polimi.is23am10.server.model.player.Player;
+import it.polimi.is23am10.server.network.messages.AbstractMessage;
+import it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException;
+import it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector;
+
+import java.io.Serializable;
+import java.rmi.RemoteException;
+import java.util.UUID;
+import java.util.concurrent.BlockingQueue;
+import java.util.concurrent.LinkedBlockingQueue;
+
+/**
+ * The player connector class definition.
+ * This class is responsible to handle clients' sockets connections.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+@SuppressWarnings({ "checkstyle:nonemptyatclausedescriptioncheck" })
+public abstract class AbstractPlayerConnector implements Serializable, IPlayerConnector {
+
+  /**
+   * The player inside a game session.
+   *
+   */
+  protected Player player;
+
+  /**
+   * The unique {@link Game} id reference.
+   *
+   */
+  protected UUID gameId;
+
+  /**
+   * The connector message queue.
+   *
+   */
+  protected BlockingQueue<AbstractMessage> msgQueue;
+
+  /**
+   * The client last alarm snooze time in ms truggered by the alarm.
+   *
+   */
+  protected long lastSnoozeMs;
+
+  /**
+   * Constructor.
+   *
+   *
+   * @param msgQueue The message queue instance.
+   * @throws NullBlockingQueueException If providing a null queue when building player connector.
+   *
+   */
+  protected AbstractPlayerConnector(LinkedBlockingQueue<AbstractMessage> msgQueue)
+      throws NullBlockingQueueException {
+    if (msgQueue == null) {
+      throw new NullBlockingQueueException();
+    }
+    this.msgQueue = msgQueue;
+    this.lastSnoozeMs = System.currentTimeMillis();
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   *
+   */
+  @Override
+  public synchronized UUID getGameId() {
+    return gameId;
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   *
+   */
+  @Override
+  public synchronized Player getPlayer() {
+    return player;
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   *
+   */
+  @Override
+  public AbstractMessage getMessageFromQueue() throws InterruptedException {
+    if (msgQueue.isEmpty()) {
+      return null;
+    }
+    //synch is performed by the collection
+    return (msgQueue.take());
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   *
+   */
+  @Override
+  public synchronized int getMsgQueueSize() {
+    return msgQueue.size();
+  }
+
+  /**
+   * Get the client last snooze time in ms.
+   *
+   * @return The ms of the last alarm snooze.
+   *
+   */
+  public long getLastSnoozeMs() {
+    return lastSnoozeMs;
+  }
+
+  /**
+   * Notify the player an update.
+   * Different delivery strategies are applied based on the {@link AbstractMessage} dynamic type.
+   * This blocks undefinably until the queue is available (in case socket is used).
+   * {@link Game} model instances should leverage this
+   * queue to send responses to the client (i.e. game updates).
+   *
+   * @param message The message to be added.
+   * @throws InterruptedException On queue message insertion failure.
+   * @throws RemoteException On remote call failure.
+   *
+   */
+  public abstract void notify(AbstractMessage message) throws InterruptedException, RemoteException;
+
+  /**
+   * Setter for the associated game id.
+   *
+   * @param gameId The game id to associate to the current player connector.
+   *
+   */
+  public synchronized void setGameId(UUID gameId) {
+    this.gameId = gameId;
+  }
+
+  /**
+   * Setter for the player reference.
+   *
+   * @param player The player to associate to the current player connector.
+   *
+   */
+  @Override
+  public synchronized void setPlayer(Player player) {
+    this.player = player;
+  }
+
+  /**
+   * Set the client last snooze time in ms.
+   *
+   * @param lastSnoozeMs The snooze ms.
+   *
+   */
+  public void setLastSnoozeMs(long lastSnoozeMs) {
+    this.lastSnoozeMs = lastSnoozeMs;
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  public boolean equals(Object obj) {
+    if (!(obj instanceof AbstractPlayerConnector)) {
+      return false;
+    }
+    AbstractPlayerConnector casted = (AbstractPlayerConnector) obj;
+    return casted.getPlayer().equals(player)
+        && casted.getGameId().equals(gameId);
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  public int hashCode() {
+    return player.hashCode() * gameId.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorRmi.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorRmi.html new file mode 100644 index 00000000..ce883738 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorRmi.html @@ -0,0 +1 @@ +PlayerConnectorRmi

PlayerConnectorRmi

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total15 of 2231%2 of 20%4571034
notify(AbstractMessage)80%20%224411
setClient(IClient)40%n/a112211
getClient()30%n/a111111
PlayerConnectorRmi(LinkedBlockingQueue, IClient)7100%n/a010301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorRmi.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorRmi.java.html new file mode 100644 index 00000000..75d90fb1 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorRmi.java.html @@ -0,0 +1,70 @@ +PlayerConnectorRmi.java

PlayerConnectorRmi.java

package it.polimi.is23am10.server.network.playerconnector;
+
+import java.rmi.RemoteException;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import it.polimi.is23am10.client.Client;
+import it.polimi.is23am10.client.IClient;
+import it.polimi.is23am10.server.network.messages.AbstractMessage;
+import it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException;
+
+/**
+ * The player connector class definition.
+ * This class is responsible to handle clients' sockets connections.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+@SuppressWarnings({ "checkstyle:nonemptyatclausedescriptioncheck" })
+public class PlayerConnectorRmi extends AbstractPlayerConnector {
+
+  /**
+   * The {@link Client} reference.
+   */
+  private IClient client;
+
+  /**
+   * Constructor.
+   *
+   * @param msgQueue The message queue instance.
+   * @throws NullBlockingQueueException If providing a null queue when building player connector.
+   *
+   */
+  public PlayerConnectorRmi(LinkedBlockingQueue<AbstractMessage> msgQueue, IClient client)
+      throws NullBlockingQueueException {
+    super(msgQueue);
+    this.client = client;
+  }
+
+  /**
+   * Retrive the {@link Client} reference.
+   *
+   * @return The client reference.
+   *
+   */
+  public IClient getClient() {
+    return client;
+  }
+
+  /**
+   * Set the {@link Client} reference.
+   *
+   * @param client The client reference.
+   *
+   */
+  public void setClient(IClient client) {
+    this.client = client;
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  public void notify(AbstractMessage msg) throws InterruptedException, RemoteException {
+    if (msg == null) {
+      return;
+    }
+    client.showServerMessage(msg);
+  } 
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorSocket.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorSocket.html new file mode 100644 index 00000000..feb806ad --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorSocket.html @@ -0,0 +1 @@ +PlayerConnectorSocket

PlayerConnectorSocket

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total11 of 3467%3 of 650%3751414
setConnector(Socket)100%20%224411
notify(AbstractMessage)1787%1150%121401
PlayerConnectorSocket(Socket, LinkedBlockingQueue)13100%2100%020501
getConnector()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorSocket.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorSocket.java.html new file mode 100644 index 00000000..9aeaf8d3 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/PlayerConnectorSocket.java.html @@ -0,0 +1,80 @@ +PlayerConnectorSocket.java

PlayerConnectorSocket.java

package it.polimi.is23am10.server.network.playerconnector;
+
+import java.net.Socket;
+import java.util.concurrent.LinkedBlockingQueue;
+
+import it.polimi.is23am10.server.network.messages.AbstractMessage;
+import it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException;
+import it.polimi.is23am10.server.network.playerconnector.exceptions.NullSocketConnectorException;
+
+/**
+ * The player connector class definition.
+ * This class is responsible to handle clients' sockets connections.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+@SuppressWarnings({ "checkstyle:nonemptyatclausedescriptioncheck" })
+public class PlayerConnectorSocket extends AbstractPlayerConnector {
+  /**
+   * The socket connection reference.
+   *
+   */
+  private transient Socket connector;
+
+  /**
+   * Constructor.
+   *
+   *
+   * @param connector The {@link Socket} instance linked to a player client.
+   * @param msgQueue  The message queue instance.
+   * @throws NullSocketConnectorException
+   * @throws NullBlockingQueueException If providing a null queue when building player connector.
+   *
+   */
+  public PlayerConnectorSocket(Socket connector, LinkedBlockingQueue<AbstractMessage> msgQueue)
+      throws NullSocketConnectorException, NullBlockingQueueException {
+    super(msgQueue);
+    if (connector == null) {
+      throw new NullSocketConnectorException();
+    }
+    this.connector = connector;
+  }
+
+  /**
+   * Getter for {@link Socket}, the low level connector.
+   *
+   * @return The socket connector.
+   *
+   */
+  public synchronized Socket getConnector() {
+    return connector;
+  }
+
+  /**
+   * Setter for {@link Socket}, the low level connector.
+   * 
+   * @param socket the socket I want to set.
+   * 
+   * @throws NullSocketConnectorException
+   *
+   */
+  public synchronized void setConnector(Socket socket) throws NullSocketConnectorException {
+    if(socket == null){
+      throw new NullSocketConnectorException();
+    }
+    this.connector = socket;
+  }
+
+  /** {@inheritDoc} */
+  @Override
+  public void notify(AbstractMessage msg) throws InterruptedException {
+    if (msg == null) {
+      return;
+    }
+    msgQueue.put(msg);
+  } 
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/index.html new file mode 100644 index 00000000..e29ef1ae --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.network.playerconnector

it.polimi.is23am10.server.network.playerconnector

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total50 of 13964%11 of 1838%1128174951903
AbstractPlayerConnector245971%6440%41652511101
PlayerConnectorRmi15731%20%457103401
PlayerConnectorSocket112367%3350%375141401
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/index.source.html new file mode 100644 index 00000000..d1648dd9 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.playerconnector/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.network.playerconnector

it.polimi.is23am10.server.network.playerconnector

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total50 of 13964%11 of 1838%1128174951903
AbstractPlayerConnector.java245971%6440%41652511101
PlayerConnectorRmi.java15731%20%457103401
PlayerConnectorSocket.java112367%3350%375141401
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualPlayer.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualPlayer.html new file mode 100644 index 00000000..dc8d3d6b --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualPlayer.html @@ -0,0 +1 @@ +VirtualPlayer

VirtualPlayer

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total10 of 9689%3 of 862%414224110
hashCode()80%n/a111111
equals(Object)22291%2466%241501
VirtualPlayer(Player)38100%1150%120901
obfuscatePrivateCard()8100%n/a010301
getPlayerId()3100%n/a010101
getScore()3100%n/a010101
getBookshelf()3100%n/a010101
getPrivateCardIndex()3100%n/a010101
getPlayerName()3100%n/a010101
getIsConnected()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualPlayer.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualPlayer.java.html new file mode 100644 index 00000000..89426f06 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualPlayer.java.html @@ -0,0 +1,147 @@ +VirtualPlayer.java

VirtualPlayer.java

package it.polimi.is23am10.server.network.virtualview;
+
+import java.io.Serializable;
+import java.util.UUID;
+
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.player.Player;
+import it.polimi.is23am10.server.model.score.Score;
+
+/**
+ * A virtual view with the state of a player, downscoped
+ * to what is essential for the client to view
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class VirtualPlayer implements Serializable {
+
+  /**
+   * Unique player identifier.
+   */
+  private UUID playerId;
+
+  /**
+   * Player's game name.
+   */
+  private String playerName;
+
+  /**
+   * Player's score.
+   */
+  private Score score;
+
+  /**
+   * Player's bookshelf with its tiles.
+   */
+  private Bookshelf bookshelf;
+
+  /**
+   * 1-12 number referencing the private card to show.
+   */
+  private Integer privateCardIndex;
+
+  /**
+   * Status of the player.
+   * 
+   */
+  private boolean isConnected;
+  
+  /**
+   * Public constructor. Builds VirtualPlayer out of {@link Player}
+   * @param p instance of {@link Player} to "virtualize".
+   */
+  public VirtualPlayer(Player p) {
+    if (p != null) {
+      this.playerId = p.getPlayerID();
+      this.playerName = p.getPlayerName();
+      this.score = new Score(p.getScore());
+      this.bookshelf = new Bookshelf(p.getBookshelf());
+      this.privateCardIndex = p.getPrivateCard().getPattern().getIndex();
+      this.isConnected = p.getIsConnected();
+    }
+  }
+
+  /**
+   * Getter for player id.
+   * @return player id
+   */
+  public UUID getPlayerId() {
+    return playerId;
+  }
+
+  /**
+   * Getter for score.
+   * @return score
+   */
+  public Score getScore() {
+    return score;
+  }
+
+  /**
+   * Getter for bookshelf.
+   * @return bookshelf
+   */
+  public Bookshelf getBookshelf() {
+    return bookshelf;
+  }
+
+  /**
+   * Getter for private card index.
+   * @return private card index
+   */
+  public Integer getPrivateCardIndex() {
+    return privateCardIndex;
+  }
+
+  /**
+   * Getter for player name.
+   * @return player name
+   */
+  public String getPlayerName() {
+    return playerName;
+  }
+
+  /**
+   * Getter for connected status.
+   * @return connected status.
+   */
+  public boolean getIsConnected() {
+    return isConnected;
+  }
+
+  /**
+   * Void method used when pushing state
+   * to all players, in order to keep secret
+   * each player's card to other players.
+   */
+  public void obfuscatePrivateCard() {
+    privateCardIndex = 0;
+    score.obfuscatePrivatePoints();
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof VirtualPlayer)) {
+      return false;
+    }
+
+    VirtualPlayer player = (VirtualPlayer) obj;
+    return (playerId.equals(player.getPlayerId())
+        && playerName.equals(player.getPlayerName()));
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public int hashCode() {
+    return playerName.hashCode() * playerId.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualView.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualView.html new file mode 100644 index 00000000..63aabeed --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualView.html @@ -0,0 +1 @@ +VirtualView

VirtualView

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total6 of 14995%3 of 1070%321135016
VirtualView(Game)27697%1583%1401701
equals(Object)21285%1150%121401
lambda$getDisconnectedPlayersNum$0(VirtualPlayer)2571%1150%120101
getDisconnectedPlayersNum()9100%n/a010401
lambda$new$2(SharedCard)5100%n/a010101
lambda$new$1(Player)5100%n/a010101
hashCode()4100%n/a010101
getGameId()3100%n/a010101
getPlayers()3100%n/a010101
getMaxPlayers()3100%n/a010101
getActivePlayer()3100%n/a010101
getFirstPlayer()3100%n/a010101
getWinnerPlayer()3100%n/a010101
getGameBoard()3100%n/a010101
getSharedCards()3100%n/a010101
getStatus()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualView.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualView.java.html new file mode 100644 index 00000000..e3b38fd2 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/VirtualView.java.html @@ -0,0 +1,208 @@ +VirtualView.java

VirtualView.java

package it.polimi.is23am10.server.network.virtualview;
+
+import java.io.Serializable;
+import java.util.List;
+import java.util.UUID;
+import java.util.stream.Collectors;
+
+import it.polimi.is23am10.server.model.game.Game;
+import it.polimi.is23am10.server.model.game.Game.GameStatus;
+import it.polimi.is23am10.server.model.items.board.Board;
+
+/**
+ * A virtual view with the state of the game, downscoped
+ * to what is essential for the client to view
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class VirtualView implements Serializable {
+
+  /**
+   * Unique Game identifier
+   */
+  private UUID gameId;
+
+  /**
+   * Maximum number of players for this game
+   */
+  private Integer maxPlayers;
+
+  /**
+   * List of virtual players in the game
+   */
+  private List<VirtualPlayer> players;
+
+  /**
+   * VirtualPlayer currently playing
+   */
+  private VirtualPlayer activePlayer;
+
+  /**
+   * VirtualPlayer choosen as first
+   */
+  private VirtualPlayer firstPlayer;
+
+  /**
+   * VirtualPlayer who won the game
+   */
+  private VirtualPlayer winnerPlayer;
+
+  /**
+   * Instance of board where tiles are
+   */
+  private Board gameBoard;
+
+  /**
+   * List of the two shared cards index for this game session.
+   */
+  private List<Integer> sharedCards;
+
+  /**
+   * Boolean flag signaling game is over
+   */
+  private GameStatus status;
+
+  /**
+   * Getter for game id
+   * 
+   * @return game id
+   */
+  public UUID getGameId() {
+    return gameId;
+  }
+
+  /**
+   * Getter for player list ({@link VirtualPlayer})
+   * 
+   * @return player list
+   */
+  public List<VirtualPlayer> getPlayers() {
+    return players;
+  }
+
+  /**
+   * Getter for max players
+   * 
+   * @return max players
+   */
+  public Integer getMaxPlayers() {
+    return maxPlayers;
+  }
+
+  /**
+   * Getter for active player
+   * 
+   * @return active player
+   */
+  public VirtualPlayer getActivePlayer() {
+    return activePlayer;
+  }
+
+  /**
+   * Getter for first player
+   * 
+   * @return first player
+   */
+  public VirtualPlayer getFirstPlayer() {
+    return firstPlayer;
+  }
+
+  /**
+   * Getter for winner player
+   * 
+   * @return winner player
+   */
+  public VirtualPlayer getWinnerPlayer() {
+    return winnerPlayer;
+  }
+
+  /**
+   * Getter for game board
+   * 
+   * @return game board
+   */
+  public Board getGameBoard() {
+    return gameBoard;
+  }
+
+  /**
+   * Getter for shared cards indexes
+   * 
+   * @return Pairs of shared cards indexes and descriptions.
+   */
+  public List<Integer> getSharedCards() {
+    return sharedCards;
+  }
+
+  /**
+   * Getter for status.
+   * 
+   * @return game status.
+   */
+  public GameStatus getStatus() {
+    return status;
+  }
+
+  /**
+   * Simple helper function to get the number of disconnected
+   * players to discount when looking for available games.
+   * @return disconnected player num.
+   */
+  public synchronized Integer getDisconnectedPlayersNum() {
+    return (int) players
+      .stream()
+      .filter(p -> !p.getIsConnected())
+      .count();
+  }
+
+
+  /**
+   * Public constructor. Builds VirtualView out of {@link Game}
+   * 
+   * @param g instance of {@link Game} to "virtualize"
+   */
+  public VirtualView(Game g) {
+    this.gameId = g.getGameId();
+    this.activePlayer = g.getActivePlayer() == null ? null : new VirtualPlayer(g.getActivePlayer());
+    this.firstPlayer = g.getFirstPlayer() == null ? null : new VirtualPlayer(g.getFirstPlayer());
+    this.gameBoard = new Board(g.getGameBoard());
+    this.status = g.getStatus();
+    this.maxPlayers = g.getMaxPlayer();
+    this.players = g.getPlayers()
+        .stream()
+        .map(p -> new VirtualPlayer(p))
+        .collect(Collectors.toList());
+
+    this.sharedCards = g.getSharedCard()
+        .stream()
+        .map(c -> c.getPattern().getIndex())
+        .collect(Collectors.toList());
+
+    this.winnerPlayer = g.getWinnerPlayer() == null ? null : new VirtualPlayer(g.getWinnerPlayer());
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof VirtualView)) {
+      return false;
+    }
+
+    VirtualView view = (VirtualView) obj;
+    return (gameId.equals(view.getGameId()));
+  }
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override
+  public int hashCode() {
+    return gameId.hashCode();
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/index.html new file mode 100644 index 00000000..194ce7cd --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.network.virtualview

it.polimi.is23am10.server.network.virtualview

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total16 of 24593%6 of 1866%73535912602
VirtualPlayer108689%3562%41422411001
VirtualView614395%3770%32113501601
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/index.source.html new file mode 100644 index 00000000..0dade6e1 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server.network.virtualview/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server.network.virtualview

it.polimi.is23am10.server.network.virtualview

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total16 of 24593%6 of 1866%73535912602
VirtualPlayer.java108689%3562%41422411001
VirtualView.java614395%3770%32113501601
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server/Server$ServerStatus.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server/Server$ServerStatus.html new file mode 100644 index 00000000..d802b7d6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server/Server$ServerStatus.html @@ -0,0 +1 @@ +Server.ServerStatus

Server.ServerStatus

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total0 of 15100%0 of 0n/a010301
static {...}15100%n/a010301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server/Server.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server/Server.html new file mode 100644 index 00000000..c95a4e40 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server/Server.html @@ -0,0 +1 @@ +Server

Server

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total8 of 12193%4 of 1266%41323307
start(AppConfigContext)86689%1375%1321601
Server(ServerSocket, ExecutorService, IServerControllerAction, Registry)17100%n/a010701
stop()11100%2250%230301
status()11100%1375%130301
setSocketClientConnected(int)3100%n/a010201
static {...}3100%n/a010101
getSocketClientsConnected()2100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server/Server.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server/Server.java.html new file mode 100644 index 00000000..b8e8b472 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server/Server.java.html @@ -0,0 +1,167 @@ +Server.java

Server.java

package it.polimi.is23am10.server;
+
+import it.polimi.is23am10.server.controller.ClientConnectionChecker;
+import it.polimi.is23am10.server.controller.ServerControllerAction;
+import it.polimi.is23am10.server.controller.ServerControllerRmiBindings;
+import it.polimi.is23am10.server.controller.ServerControllerSocket;
+import it.polimi.is23am10.server.controller.interfaces.IServerControllerAction;
+import it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket;
+import it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException;
+import it.polimi.is23am10.server.network.playerconnector.exceptions.NullSocketConnectorException;
+import it.polimi.is23am10.utils.config.AppConfigContext;
+
+import java.io.IOException;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.rmi.RemoteException;
+import java.rmi.registry.Registry;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.LinkedBlockingQueue;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * The Server entry point class definition.
+ * This has only static methods and this class should not be instantiated.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class Server {
+
+  /**
+   * The serverSocket status.
+   *
+   */
+  public enum ServerStatus {
+    STARTED,
+    STOPPED
+  }
+
+  /**
+   * Logger instance.
+   *
+   */
+  protected final Logger logger = LogManager.getLogger(Server.class);
+
+  /**
+   * Socket serverSocket instance.
+   *
+   */
+  protected ServerSocket serverSocket;
+
+  /**
+   * Socket socket clients connected.
+   *
+   */
+  protected static int socketClientsConnected = 0;
+
+  /**
+   * Server thread executor service manager.
+   *
+   */
+  protected ExecutorService executorService;
+
+  /**
+   * Constructor.
+   *
+   * @param serverSocket                    The server socket reference of a newly
+   *                                        connected client.
+   * @param executorService                 The built thread executor service.
+   * @param rmiServerControllerActionServer An built instance of the implementing
+   *                                        class.
+   * @param rmiRegistry                     A built instance of the RMI registry.
+   * @throws RemoteException On rebind failure.
+   *
+   */
+  public Server(ServerSocket serverSocket, ExecutorService executorService,
+      IServerControllerAction rmiServerControllerActionServer, Registry rmiRegistry) throws RemoteException {
+    this.executorService = executorService;
+    this.serverSocket = serverSocket;
+    ServerControllerRmiBindings.setRmiRegistry(rmiRegistry);
+    ServerControllerRmiBindings.rebindServerControllerAction(rmiServerControllerActionServer);
+  }
+
+  /**
+   * Server entry point.
+   * A new {@link ServerSocket} instance is spawned and in a
+   * infinity loop listens for clients connections.
+   *
+   * @param ctx An instance of the server configuration.
+   *
+   */
+  public void start(AppConfigContext ctx) {
+    logger.info("Starting Spurious Dragon, try to kill me...");
+    // https://www.youtube.com/watch?v=Jo6fKboqfMs&ab_channel=memesammler
+
+    executorService.execute(new ClientConnectionChecker(ctx.getMaxInactivityTime()));
+
+    // start the socket server
+    while (!serverSocket.isClosed()) {
+      try {
+        if (getSocketClientsConnected() < ctx.getMaxConnections()) {
+          Socket client = serverSocket.accept();
+          client.setKeepAlive(ctx.getKeepAlive());
+          setSocketClientConnected(getSocketClientsConnected() + 1);
+          executorService.execute(new ServerControllerSocket(
+            new PlayerConnectorSocket(client,
+            new LinkedBlockingQueue<>()),
+            new ServerControllerAction()));
+          logger.info("Received new connection " + "(" + getSocketClientsConnected() + "/" + ctx.getMaxConnections() + ")" );
+        } else {
+          serverSocket.accept();
+          logger.error("Socket connection cannot be established as the server has reached its maximum socket client connections capacity.");
+        }
+      } catch (IOException | NullSocketConnectorException | NullBlockingQueueException e) {
+        logger.error("Failed to process connection", e);
+      }
+    }
+  }
+
+  /**
+   * Stop the serverSocket.
+   *
+   * @throws IOException On socket closure failing.
+   *
+   */
+  public void stop() throws IOException {
+    if (serverSocket != null && !serverSocket.isClosed()) {
+      serverSocket.close();
+    }
+  }
+
+  /**
+   * Check the current serverSocket status.
+   *
+   * @return The an enum {@link ServerStatus} stating the current status.
+   *
+   */
+  public ServerStatus status() {
+    return serverSocket == null || serverSocket.isClosed()
+        ? ServerStatus.STOPPED
+        : ServerStatus.STARTED;
+  }
+
+  /**
+   * Get the current number of clients connected to the socket.
+   *
+   * @return The connect clients number.
+   *
+   */
+  public static int getSocketClientsConnected(){
+    return socketClientsConnected;
+  }
+
+  /**
+   * Set the current number of clients connected to the socket.
+   *
+   * @param scc The connect clients number.
+   *
+   */
+  public static void setSocketClientConnected(int scc){
+    socketClientsConnected = scc;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server/index.html new file mode 100644 index 00000000..73f7b0c0 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.server

it.polimi.is23am10.server

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total8 of 13694%4 of 1266%4142360802
Server811393%4866%4132330701
Server.ServerStatus15100%n/a01030101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.server/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.server/index.source.html new file mode 100644 index 00000000..62cd54a6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.server/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.server

it.polimi.is23am10.server

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total8 of 13694%4 of 1266%4142360802
Server.java812894%4866%4142360802
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfig.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfig.html new file mode 100644 index 00000000..9a4aa385 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfig.html @@ -0,0 +1 @@ +AppConfig

AppConfig

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total7 of 12894%2 of 1283%327350121
setServerRmiPort(Integer)41376%2250%231401
setShowDebug(boolean)30%n/a112211
static {...}36100%n/a0101401
setServerSocketPort(Integer)17100%4100%030401
setMaxConnections(Integer)17100%4100%030401
setKeepAlive(boolean)3100%n/a010201
setIsServer(boolean)3100%n/a010201
setShowGUI(boolean)3100%n/a010201
setUseRMI(boolean)3100%n/a010201
setServerAddress(String)3100%n/a010201
setMaxInactivityTimeMs(long)3100%n/a010201
getServerSocketPort()2100%n/a010101
getServerRmiPort()2100%n/a010101
getMaxConnections()2100%n/a010101
getKeepAlive()2100%n/a010101
getIsServer()2100%n/a010101
getShowGUI()2100%n/a010101
getUseRMI()2100%n/a010101
getServerAddress()2100%n/a010101
getShowDebug()2100%n/a010101
getMaxInactivityTime()2100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfig.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfig.java.html new file mode 100644 index 00000000..b0dde649 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfig.java.html @@ -0,0 +1,323 @@ +AppConfig.java

AppConfig.java

package it.polimi.is23am10.utils.config;
+
+import it.polimi.is23am10.utils.config.exceptions.InvalidMaxConnectionsNumberException;
+import it.polimi.is23am10.utils.config.exceptions.InvalidPortNumberException;
+
+/**
+ * The application config class definition.
+ * If not set otherwise all the configuration parameters for the application
+ * are set to default values here.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public final class AppConfig {
+
+  /**
+   * Private constructor.
+   * 
+   */
+  private AppConfig() {
+
+  }
+
+  /**
+   * The lower bound of port numbers.
+   * 
+   */
+  public static final Integer MIN_PORT_NUMBER = 1024;
+
+  /**
+   * The upper bound of port numbers.
+   * 
+   */
+  public static final Integer MAX_PORT_NUMBER = 65535;
+
+  /**
+   * The lower bound of connection numbers.
+   * 
+   */
+  public static final Integer MIN_CONNECTIONS_NUMBER = 0;
+
+  /**
+   * The upper bound of connection numbers.
+   * 
+   */
+  public static final Integer MAX_CONNECTIONS_NUMBER = 10;
+
+  /**
+   * The server config server port.
+   * 
+   */
+  private static Integer serverSocketPort = 9001;
+
+  /**
+   * The server config rmi port.
+   * 
+   */
+  private static Integer serverRmiPort = 9002;
+
+  /**
+   * The max allowed connection for this server instance.
+   * This is a momentary max value.
+   * 
+   */
+  private static Integer maxConnection = 8;
+
+  /**
+   * The socket SO_KEEPALIVE flag.
+   * 
+   */
+  private static boolean keepAlive = true;
+
+  /**
+   * The kind of app to launch. If false launches a client.
+   * 
+   */
+  private static boolean isServer = false;
+
+  /**
+   * The interface to show if app is launched in Client mode.
+   * If false launches client in CLI mode.
+   * If {@link AppConfigContext#isServer} is true this flag is ignored,
+   * as server mode only supports CLI as interface, and for logging purpose only.
+   */
+  private static boolean showGUI = false;
+
+    /**
+   * The communication method to use if app is launched is Client Mode.
+   * If false launches client over Socket connection.
+   * If {@link AppConfigContext#isServer} is true this flag is ignored,
+   * as server mode both receives RMI and socket connections
+   */
+  private static boolean useRMI = false;
+
+  /**
+   * A simple flag that if enabled shows all verbose messages
+   * in console logs.
+   */
+  private static boolean showDebug = false;
+
+  /**
+   * The network address where the server is running.
+   * 
+   */
+  private static String serverAddress = "localhost";
+
+  /**
+   * The maximum inactivity time allowed to a player when playing a game turn.
+   */
+  private static long maxInactivityTimeMs = 1000 * 60 * 2;
+
+  /**
+   * Server port setter.
+   *
+   * @param p port number.
+   * @throws InvalidPortNumberException invalid port number.
+   */
+  public static void setServerSocketPort(Integer p) throws InvalidPortNumberException {
+    if (p < MIN_PORT_NUMBER || p > MAX_PORT_NUMBER) {
+      throw new InvalidPortNumberException();
+    }
+    serverSocketPort = p;
+  }
+
+  /**
+   * Server port setter.
+   *
+   * @param p port number.
+   * @throws InvalidPortNumberException invalid port number.
+   */
+  public static void setServerRmiPort(Integer p) throws InvalidPortNumberException {
+    if (p < MIN_PORT_NUMBER || p > MAX_PORT_NUMBER) {
+      throw new InvalidPortNumberException();
+    }
+    serverRmiPort = p;
+  }
+
+  /**
+   * Max connections setter.
+   *
+   * @param maxConn number of max connections.
+   * @throws InvalidMaxConnectionsNumberException invalid number of maxConn.
+   */
+  public static void setMaxConnections(Integer maxConn) 
+      throws InvalidMaxConnectionsNumberException {
+    if (maxConn < MIN_CONNECTIONS_NUMBER || maxConn > MAX_CONNECTIONS_NUMBER){
+      throw new InvalidMaxConnectionsNumberException();
+    }
+    maxConnection = maxConn;
+  }
+
+  /**
+   * Keep alive setter.
+   *
+   * @param k keep alive status.
+   * 
+   */
+  public static void setKeepAlive(boolean k) {
+    keepAlive = k;
+  }
+  
+  /**
+   * Keep alive setter.
+   *
+   * @param is launch server app
+   * 
+   */
+  public static void setIsServer(boolean is) {
+    isServer = is;
+  }
+
+  /**
+   * Show GUI setter.
+   *
+   * @param sg show GUI if client
+   * 
+   */
+  public static void setShowGUI(boolean sg) {
+    showGUI = sg;
+  }
+
+  /**
+   * Use RMI setter.
+   *
+   * @param rmi use RMI or not (socket).
+   * 
+   */
+  public static void setUseRMI(boolean rmi) {
+    useRMI = rmi;
+  }
+
+  /**
+   * Show verbose debug.
+   *
+   * @param debug show debug or not.
+   * 
+   */
+  public static void setShowDebug(boolean debug) {
+    showDebug = debug;
+  }
+
+  /**
+   * Server address setter.
+   *
+   * @param address Server address.
+   * 
+   */
+  public static void setServerAddress(String address) {
+    serverAddress = address;
+  }
+
+  /**
+   * Max inactivity time setter.
+   *
+   * @param time max inactivity time in ms.
+   */
+  public static void setMaxInactivityTimeMs(long time) {
+    maxInactivityTimeMs = time;
+  }
+
+  /**
+   * Server port getter.
+   *
+   * @return The instantiated server port.
+   * 
+   */
+  public static Integer getServerSocketPort() {
+    return serverSocketPort;
+  }
+
+  /**
+   * Server port getter.
+   *
+   * @return The instantiated server port.
+   * 
+   */
+  public static Integer getServerRmiPort() {
+    return serverRmiPort;
+  }
+
+  /**
+   * Max connections getter.
+   *
+   * @return The maximum allowed connections.
+   * 
+   */
+  public static Integer getMaxConnections() {
+    return maxConnection;
+  }
+
+  /**
+   * Keep alive getter.
+   *
+   * @return The keep alive flag.
+   * 
+   */
+  public static boolean getKeepAlive() {
+    return keepAlive;
+  }
+
+  /**
+   * Is server getter.
+   *
+   * @return The isServer flag.
+   * 
+   */
+  public static boolean getIsServer() {
+    return isServer;
+  }
+
+  /**
+   * Show GUI getter.
+   *
+   * @return The show GUI flag.
+   * 
+   */
+  public static boolean getShowGUI() {
+    return showGUI;
+  }
+  
+  /**
+   * Use RMI getter.
+   *
+   * @return The use RMI flag.
+   * 
+   */
+  public static boolean getUseRMI() {
+    return useRMI;
+  }
+
+  /**
+   * Server address getter.
+   *
+   * @return The server address.
+   * 
+   */
+  public static String getServerAddress() {
+    return serverAddress;
+  }
+
+  /**
+   * Show debug getter.
+   *
+   * @return The debug flag.
+   * 
+   */
+  public static boolean getShowDebug() {
+    return showDebug;
+  }
+
+  /**
+   * Max inactivity time getter.
+   *
+   * @return The max inactivity time.
+   * 
+   */
+  public static long getMaxInactivityTime() {
+    return maxInactivityTimeMs;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfigContext.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfigContext.html new file mode 100644 index 00000000..c80ba7cf --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfigContext.html @@ -0,0 +1 @@ +AppConfigContext

AppConfigContext

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total36 of 9662%0 of 0n/a2121334212
AppConfigContext(Integer, Integer, Integer, boolean, boolean, boolean, boolean, String, boolean, long)330%n/a11121211
getShowDebug()30%n/a111111
AppConfigContext()33100%n/a0101201
getServerSocketPort()3100%n/a010101
getServerRmiPort()3100%n/a010101
getMaxConnections()3100%n/a010101
getKeepAlive()3100%n/a010101
getIsServer()3100%n/a010101
getShowGUI()3100%n/a010101
getUseRMI()3100%n/a010101
getServerAddress()3100%n/a010101
getMaxInactivityTime()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfigContext.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfigContext.java.html new file mode 100644 index 00000000..46ffda91 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/AppConfigContext.java.html @@ -0,0 +1,220 @@ +AppConfigContext.java

AppConfigContext.java

package it.polimi.is23am10.utils.config;
+
+/**
+ * The server config context class definition.
+ * 
+ */
+public class AppConfigContext {
+
+  /**
+   * The server socket port.
+   * 
+   */
+  private Integer serverSocketPort;
+
+
+  /**
+   * The server rmi port.
+   * 
+   */
+  private Integer serverRmiPort;
+
+  /**
+   * The max allowed connection for this server instance.
+   * This is a momentary max value.
+   * 
+   */
+  private Integer maxConnection;
+
+  /**
+   * The socket SO_KEEPALIVE flag.
+   * 
+   */
+  private boolean keepAlive;
+
+  /**
+   * The kind of app to launch. If false launches a client.
+   * 
+   */
+  private boolean isServer;
+
+  /**
+   * The interface to show if app is launched in Client mode.
+   * If false launches client in CLI mode.
+   * If {@link AppConfigContext#isServer} is true this flag is ignored,
+   * as server mode only supports CLI as interface, and for logging purpose only.
+   */
+  private boolean showGUI;
+
+  /**
+   * The communication method to use if app is launched is Client Mode.
+   * If false launches client over Socket connection.
+   * If {@link AppConfigContext#isServer} is true this flag is ignored,
+   * as server mode both receives RMI and socket connections
+   */
+  private boolean useRMI;
+
+  /**
+   * The network address where the server is running.
+   * 
+   */
+  private String serverAddress;
+
+  /**
+   * A simple flag that if enabled shows all verbose messages
+   * in console logs.
+   */
+  private boolean showDebug;
+
+  /**
+   * The maximum inactivity time allowed to a player when playing a game turn.
+   */
+  private long maxInactivityTimeMs;
+
+  /**
+   * Constructor.
+   * 
+   * @param serverSocketPort     The server port number.
+   * @param maxConnections The maximum allowed connections.
+   * @param keepAlive      The socket keep alive flag.
+   * @param serverRmiPort The server RMI port.
+   * @param isServer Run app in server mode flag.
+   * @param showGUI Show GUI client flag.
+   * @param useRMI Use RMI over socket flag.
+   * @param serverAddress Address where to find server.
+   * @param showDebug Show debug infos flag.
+   */
+  public AppConfigContext(Integer serverSocketPort, Integer serverRmiPort,
+      Integer maxConnections, boolean keepAlive, boolean isServer, boolean showGUI, boolean useRMI, String serverAddress, boolean showDebug, long maxInactivityTimeMs) {
+    this.serverSocketPort = serverSocketPort;
+    this.serverRmiPort = serverRmiPort;
+    this.maxConnection = maxConnections;
+    this.keepAlive = keepAlive;
+    this.isServer = isServer;
+    this.showGUI = showGUI;
+    this.useRMI = useRMI;
+    this.serverAddress = serverAddress;
+    this.showDebug = showDebug;
+    this.maxInactivityTimeMs = maxInactivityTimeMs;
+  }
+
+
+  /**
+   * Constructor with default values.
+   *
+   * 
+   */
+  public AppConfigContext() {
+    this.serverSocketPort = AppConfig.getServerSocketPort();
+    this.serverRmiPort = AppConfig.getServerRmiPort();
+    this.maxConnection = AppConfig.getMaxConnections();
+    this.keepAlive = AppConfig.getKeepAlive();
+    this.isServer = AppConfig.getIsServer();
+    this.showGUI = AppConfig.getShowGUI();
+    this.useRMI = AppConfig.getUseRMI();
+    this.serverAddress = AppConfig.getServerAddress();
+    this.showDebug = AppConfig.getShowDebug();
+    this.maxInactivityTimeMs = AppConfig.getMaxInactivityTime();
+  }
+
+  /**
+   * Server socket port getter.
+   *
+   * @return The instantiated server socket port.
+   * 
+   */
+  public Integer getServerSocketPort() {
+    return serverSocketPort;
+  }
+
+  /**
+   * Server rmi port getter.
+   *
+   * @return The instantiated server rmi port.
+   * 
+   */
+  public Integer getServerRmiPort() {
+    return serverRmiPort;
+  }
+
+  /**
+   * Max connections getter.
+   *
+   * @return The maximum allowed connections.
+   * 
+   */
+  public Integer getMaxConnections() {
+    return maxConnection;
+  }
+
+  /**
+   * Keep alive getter.
+   *
+   * @return The keep alive flag.
+   * 
+   */
+  public boolean getKeepAlive() {
+    return keepAlive;
+  }
+
+  /**
+   * Is server getter.
+   *
+   * @return The isServer flag.
+   * 
+   */
+  public boolean getIsServer() {
+    return isServer;
+  }
+
+  /**
+   * Show GUI getter.
+   *
+   * @return The show GUI flag.
+   * 
+   */
+  public boolean getShowGUI() {
+    return showGUI;
+  }
+
+  /**
+   * Use RMI getter.
+   *
+   * @return The use RMI flag.
+   * 
+   */
+  public boolean getUseRMI() {
+    return useRMI;
+  }
+
+  /**
+   * Server address getter.
+   *
+   * @return The server address.
+   * 
+   */
+  public String getServerAddress() {
+    return serverAddress;
+  }
+
+  /**
+   * Show debug getter.
+   *
+   * @return The debug flag.
+   * 
+   */
+  public boolean getShowDebug() {
+    return showDebug;
+  }
+
+  /**
+   * Max inactivity time getter.
+   *
+   * @return The max inactivity time value in ms.
+   * 
+   */
+  public long getMaxInactivityTime() {
+    return maxInactivityTimeMs;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/index.html new file mode 100644 index 00000000..1fa0ad2e --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.utils.config

it.polimi.is23am10.utils.config

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total43 of 22480%2 of 1283%539168433302
AppConfigContext366062%n/a212133421201
AppConfig712194%21083%32735012101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/index.source.html new file mode 100644 index 00000000..f9eac0dc --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils.config/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.utils.config

it.polimi.is23am10.utils.config

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total43 of 22480%2 of 1283%539168433302
AppConfigContext.java366062%n/a212133421201
AppConfig.java712194%21083%32735012101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ArgParser.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ArgParser.html new file mode 100644 index 00000000..e26a9499 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ArgParser.html @@ -0,0 +1 @@ +ArgParser

ArgParser

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total10 of 18794%3 of 2989%32033901
parse(String[])1017794%32689%32033901
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ArgParser.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ArgParser.java.html new file mode 100644 index 00000000..429ff9c7 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ArgParser.java.html @@ -0,0 +1,174 @@ +ArgParser.java

ArgParser.java

package it.polimi.is23am10.utils;
+
+import it.polimi.is23am10.utils.config.AppConfig;
+import it.polimi.is23am10.utils.config.exceptions.InvalidMaxConnectionsNumberException;
+import it.polimi.is23am10.utils.config.exceptions.InvalidPortNumberException;
+import it.polimi.is23am10.utils.exceptions.InvalidArgumentException;
+import it.polimi.is23am10.utils.exceptions.MissingParameterException;
+
+import java.util.regex.Pattern;
+
+/**
+ * Parser for argument from CLI.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class ArgParser {
+
+  /**
+   * Private constructor of argument parser.
+   */
+  private ArgParser() {
+  }
+
+  /**
+   * The socket port cli command.
+   */
+  public static final String SOCKET_PORT_CLI_COMMAND = "--socket-port";
+
+  /**
+   * The rmi port cli command.
+   */
+  public static final String RMI_PORT_CLI_COMMAND = "--rmi-port";
+
+  /**
+   * The max connections cli command.
+   */
+  public static final String MAX_CONNECTIONS_CLI_COMMAND = "--max-connections";
+
+  /**
+   * The keep alive cli command.
+   */
+  public static final String KEEP_ALIVE_CLI_COMMAND = "--keep-alive";  
+
+  /**
+   * The is server command.
+   */
+  public static final String IS_SERVER_CLI_COMMAND = "--is-server";  
+
+  /**
+   * The show gui cli command.
+   */
+  public static final String SHOW_GUI_CLI_COMMAND = "--show-gui";  
+
+  /**
+   * The use rmi cli command.
+   */
+  public static final String USE_RMI_CLI_COMMAND = "--use-rmi";  
+
+  /**
+   * The server address cli command.
+   */
+  public static final String SERVER_ADDRESS_CLI_COMMAND = "--address";  
+
+  /**
+   * The debug command. If enabled shows all messages in console.
+   */
+  public static final String DEBUG_CLI_COMMAND = "--debug";  
+
+  /**
+   * The max players inactivity time command.
+   */
+  public static final String MAX_CLIENT_INACTIVITY_TIME = "--max-player-inactive-ms";
+
+  /**
+   * Regex expression for validating ipv4 addresses
+   */
+  private static final String IPV4_REGEX = 
+  "^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
+  "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
+  "([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\." +
+  "([01]?\\d\\d?|2[0-4]\\d|25[0-5])$";
+
+  /**
+   * Argument parser method that checks commands.
+   *
+   * @param args arguments passed through cli.
+   * @throws InvalidArgumentException             for invalid command.
+   * @throws MissingParameterException            for missing param.
+   * @throws InvalidPortNumberException           if port not in bounds.
+   * @throws NumberFormatException                if int not found.
+   * @throws InvalidMaxConnectionsNumberException if the max number of connections is invalid.
+   * 
+   */
+  public static void parse(String[] args)
+      throws InvalidArgumentException, MissingParameterException, NumberFormatException,
+      InvalidPortNumberException, InvalidMaxConnectionsNumberException {
+    if (args != null) {
+      for (int i = 0; i < args.length; i++) {
+        switch (args[i]) {
+          case SOCKET_PORT_CLI_COMMAND:
+            if (i + 1 < args.length) {
+              AppConfig.setServerSocketPort(Integer.parseInt(args[i + 1]));
+              i++;
+            } else {
+              throw new MissingParameterException(args[i]);
+            }
+            break;
+          case RMI_PORT_CLI_COMMAND:
+            if (i + 1 < args.length) {
+              AppConfig.setServerRmiPort(Integer.parseInt(args[i + 1]));
+              i++;
+            } else {
+              throw new MissingParameterException(args[i]);
+            }
+            break;
+          case MAX_CONNECTIONS_CLI_COMMAND:
+            if (i + 1 < args.length) {
+              AppConfig.setMaxConnections(Integer.parseInt(args[i + 1]));
+              i++;
+            } else {
+              throw new MissingParameterException(args[i]);
+            }
+            break;
+          case KEEP_ALIVE_CLI_COMMAND:
+            if (i + 1 < args.length) {
+              AppConfig.setKeepAlive(Boolean.parseBoolean(args[i + 1]));
+              i++;
+            } else {
+              throw new MissingParameterException(args[i]);
+            }
+            break;
+          case SERVER_ADDRESS_CLI_COMMAND:
+            if (i + 1 < args.length) {
+              if (Pattern.matches(IPV4_REGEX, args[i + 1])){
+                AppConfig.setServerAddress(args[i + 1]);
+                i++;
+              } else {
+                throw new InvalidArgumentException("Address is not a valid IPV4. For localhost omit flag.");
+              }
+            } else {
+              throw new MissingParameterException(args[i]);
+            }
+            break;
+          case IS_SERVER_CLI_COMMAND:
+            AppConfig.setIsServer(true);
+            break;
+          case SHOW_GUI_CLI_COMMAND:
+            AppConfig.setShowGUI(true);
+            break;
+          case USE_RMI_CLI_COMMAND:
+            AppConfig.setUseRMI(true);
+            break;
+          case DEBUG_CLI_COMMAND:
+            AppConfig.setShowDebug(true);
+            break;
+          case MAX_CLIENT_INACTIVITY_TIME:
+            if (i + 1 < args.length) {
+              AppConfig.setMaxInactivityTimeMs(Long.parseLong(args[i + 1]));
+              i++;
+            } else {
+              throw new MissingParameterException(args[i]);
+            }
+            break;
+          default:
+            throw new InvalidArgumentException(args[i]);
+        }
+      }
+    }
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CommandSyntaxValidator.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CommandSyntaxValidator.html new file mode 100644 index 00000000..c7cf48b7 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CommandSyntaxValidator.html @@ -0,0 +1 @@ +CommandSyntaxValidator

CommandSyntaxValidator

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total79 of 9516%29 of 329%1920242734
validateMaxPlayer(String)230%80%557711
validateGameIdx(String, Integer)220%80%558811
validateColIdx(String)220%80%556611
validateCoord(String)121657%5337%453601
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CommandSyntaxValidator.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CommandSyntaxValidator.java.html new file mode 100644 index 00000000..a86229ee --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CommandSyntaxValidator.java.html @@ -0,0 +1,118 @@ +CommandSyntaxValidator.java

CommandSyntaxValidator.java

package it.polimi.is23am10.utils;
+
+/**
+ * Helper class to validate user input strings.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class CommandSyntaxValidator {
+
+  /**
+   * Max number of players.
+   */
+  private final static int MAX_PLAYERS_LIMIT = 4;
+
+  /**
+   * Min number of players.
+   */
+  private final static int MIN_PLAYERS_LIMIT = 2;
+
+  /**
+   * Empty constructor.
+   */
+  private CommandSyntaxValidator() {
+  }
+
+  /**
+   * Method validator of game index input.
+   *
+   * @param s string with game index chosen.
+   * @param n index max.
+   * @return true if valid.
+   */
+  public static boolean validateGameIdx(String s, Integer n) {
+    // Null parameters
+    if (s == null || n == null) {
+      return false;
+    }
+    // Index out of bounds
+    try {
+      if (Integer.parseInt(s) < 0 || Integer.parseInt(s) >= n) {
+        return false;
+      }
+    } catch (NumberFormatException e) {
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Method validator of max player input.
+   *
+   * @param s string with game index chosen.
+   * @return true if valid.
+   */
+  public static boolean validateMaxPlayer(String s) {
+    // Null parameter
+    if (s == null) {
+      return false;
+    }
+    // Not a number
+    if (!s.chars().allMatch(Character::isDigit)){
+      return false;
+    }
+    // Index out of bounds
+    if (Integer.parseInt(s) < MIN_PLAYERS_LIMIT || Integer.parseInt(s) > MAX_PLAYERS_LIMIT) {
+      return false;
+    }
+    return true;
+  }
+
+  /**
+   * Method validator of coordinates input.
+   *
+   * @param s string with game index chosen.
+   * @return true if valid.
+   */
+  public static boolean validateCoord(String s) {
+    
+    // Null parameter or invalid length
+    if (s == null || s.length() != 2) {
+      return false;
+    }
+
+    // First and second char are digits 
+    if (s.substring(0, 0).chars().allMatch(Character::isDigit)
+        || s.substring(1, 1).chars().allMatch(Character::isDigit)) {
+      return true; 
+    }
+    return false;
+  }
+
+  /**
+   * Method validator of column index input.
+   *
+   * @param s string with col index chosen.
+   * @return true if valid.
+   */
+  public static boolean validateColIdx(String s) {
+    
+    // Null parameter or invalid length
+    if (s == null || s.length() != 1) {
+      return false;
+    }
+
+
+    // Col index is one of the possible ones.
+    if ( s.charAt(0) >= 'A' &&
+        s.charAt(0) <= 'E' ) {
+      return true; 
+    }
+
+    return false;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/Coordinates.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/Coordinates.html new file mode 100644 index 00000000..5a2423c6 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/Coordinates.html @@ -0,0 +1 @@ +Coordinates

Coordinates

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total18 of 9180%3 of 650%41222119
toString()150%n/a111111
equals(Object)31986%3350%341401
hashCode()20100%n/a010201
Coordinates()11100%n/a010401
Coordinates(Integer, Integer)9100%n/a010401
setRow(Integer)4100%n/a010201
setCol(Integer)4100%n/a010201
getRow()3100%n/a010101
getCol()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/Coordinates.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/Coordinates.java.html new file mode 100644 index 00000000..c3d9e114 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/Coordinates.java.html @@ -0,0 +1,119 @@ +Coordinates.java

Coordinates.java

package it.polimi.is23am10.utils;
+
+import java.io.Serializable;
+
+/**
+ * The Coordinate helper class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ * 
+ */
+public class Coordinates implements Serializable {
+
+  /**
+   * The row index of the coordinates.
+   * 
+   */
+  private Integer row;
+
+  /**
+   * The column index of the coordinates.
+   * 
+   */
+  private Integer col;
+
+  /**
+   * Constructor of Coordinates given the two indexes.
+   * 
+   * @param r row index.
+   * @param c column index.
+   */
+  public Coordinates(Integer r, Integer c) {
+    this.row = r;
+    this.col = c;
+  }
+
+  /**
+   * Empty constructor that sets the coordinates in the origin.
+   * 
+   */
+  public Coordinates() {
+    this.row = 0;
+    this.col = 0;
+  }
+
+  /**
+   * Row getter.
+   * 
+   * @return row index.
+   */
+  public Integer getRow() {
+    return row;
+  }
+
+  /**
+   * Column getter.
+   * 
+   * @return column index.
+   */
+  public Integer getCol() {
+    return col;
+  }
+
+  /**
+   * Row setter.
+   * 
+   * @param r row index.
+   */
+  public void setRow(Integer r) {
+    this.row = r;
+  }
+
+  /**
+   * Column setter
+   * 
+   * @param c column index.
+   */
+  public void setCol(Integer c) {
+    this.col = c;
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public boolean equals(Object obj) {
+    if (!(obj instanceof Coordinates)) {
+      return false;
+    }
+
+    Coordinates coordinates = (Coordinates) obj;
+    return (coordinates.getCol() == col && coordinates.getRow() == row);
+  }
+
+  /**
+   * {@inheritDoc}
+   *
+   */
+  @Override
+  public int hashCode() {
+    /*
+     * A simple hashing function that gives me a unique number given two integers.
+     * https://stackoverflow.com/questions/22826326/good-hashcode-function-for-2d-
+     * coordinates
+     */
+
+    int tmp = (this.col + ((this.row + 1) / 2));
+    return this.row + (tmp * tmp);
+  }
+
+  @Override 
+  public String toString() {
+    return String.format("%s %s", row, col);
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CustomKeyDeserializer.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CustomKeyDeserializer.html new file mode 100644 index 00000000..c81178c2 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CustomKeyDeserializer.html @@ -0,0 +1 @@ +CustomKeyDeserializer

CustomKeyDeserializer

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total24 of 240%0 of 0n/a225522
deserialize(JsonElement, Type, JsonDeserializationContext)210%n/a114411
CustomKeyDeserializer()30%n/a111111
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CustomKeySerializer.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CustomKeySerializer.html new file mode 100644 index 00000000..ac98fd7a --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/CustomKeySerializer.html @@ -0,0 +1 @@ +CustomKeySerializer

CustomKeySerializer

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total19 of 190%0 of 0n/a225522
serialize(Coordinates, Type, JsonSerializationContext)160%n/a114411
CustomKeySerializer()30%n/a111111
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/IndexValidator.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/IndexValidator.html new file mode 100644 index 00000000..08d5df86 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/IndexValidator.html @@ -0,0 +1 @@ +IndexValidator

IndexValidator

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total8 of 3677%4 of 1266%482602
validRowIndex(Integer, Integer)41477%2466%241301
validColIndex(Integer, Integer)41477%2466%241301
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/IndexValidator.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/IndexValidator.java.html new file mode 100644 index 00000000..077a19dd --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/IndexValidator.java.html @@ -0,0 +1,55 @@ +IndexValidator.java

IndexValidator.java

package it.polimi.is23am10.utils;
+
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+
+/**
+ * Index validator class definition.
+ * 
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ * 
+ */
+public final class IndexValidator {
+
+  /**
+   * Private constructor.
+   * 
+   */
+  private IndexValidator() {
+
+  }
+
+  /**
+   * Validate the row index.
+   * 
+   * @param row The index value to be evaluated.
+   * @return The validation result.
+   * @throws NullIndexValueException If the index provided is null.
+   * 
+   */
+  public static boolean validRowIndex(Integer row, Integer maxValue) throws NullIndexValueException {
+    if (row == null) {
+      throw new NullIndexValueException();
+    }
+    return row >= 0 && row < maxValue;
+  }
+
+  /**
+   * Validate the column index.
+   * 
+   * @param col The index value to be evaluated.
+   * @return The validation result.
+   * @throws NullIndexValueException If the index provided is null.
+   * 
+   */
+  public static boolean validColIndex(Integer col, Integer maxValue) throws NullIndexValueException {
+    if (col == null) {
+      throw new NullIndexValueException();
+    }
+    return col >= 0 && col < maxValue;
+  }
+
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveCommandHelper.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveCommandHelper.html new file mode 100644 index 00000000..be01bf4a --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveCommandHelper.html @@ -0,0 +1 @@ +MoveCommandHelper

MoveCommandHelper

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total70 of 700%8 of 80%55101011
fromColIdxToCoord(String, Bookshelf, Integer)700%80%55101011
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveCommandHelper.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveCommandHelper.java.html new file mode 100644 index 00000000..66ab5ae2 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveCommandHelper.java.html @@ -0,0 +1,65 @@ +MoveCommandHelper.java

MoveCommandHelper.java

package it.polimi.is23am10.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.tile.Tile.TileType;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+import it.polimi.is23am10.utils.exceptions.WrongBookShelfPicksException;
+
+/**
+ * Helper class to convert input move from index to coordinates.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ */
+public class MoveCommandHelper {
+
+  /**
+   * Private empty constructor for the class.
+   */
+  private MoveCommandHelper() {
+  }
+
+  /**
+   * Method that takes the column input of the player bookshelf and returns the list of the 
+   * first available empty coordinates.
+   * 
+   * @param idx column index.
+   * @param bs player bookshelf.
+   * @param nMoves number of moves made and of empty coords to check.
+   *
+   * @return list of first available empty coordinates of the bookshelf
+   * @throws BookshelfGridColIndexOutOfBoundsException
+   * @throws BookshelfGridRowIndexOutOfBoundsException
+   * @throws NullIndexValueException
+   * @throws WrongBookShelfPicksException
+   */
+  public static List<Coordinates> fromColIdxToCoord(String idx, Bookshelf bs , Integer nMoves) throws BookshelfGridColIndexOutOfBoundsException, BookshelfGridRowIndexOutOfBoundsException, NullIndexValueException, WrongBookShelfPicksException{
+    List<Coordinates> bsCoord = new ArrayList<>();
+    Integer columnIdx = idx.charAt(0) - 'A';
+    Integer rowCount = 0;
+    // If I got to the tile on top and there's no space left
+    if(bs.getFreeRowsInCol(columnIdx) < nMoves){
+      throw new WrongBookShelfPicksException(
+        "Invalid bookshelf picks, selected a column with no sufficient space");
+    }
+
+    for(int row = bs.getBookshelfGrid()[0].length ; rowCount < nMoves && row >= 0 ; row--){
+      if(bs.getBookshelfGridAt(row, columnIdx).getType() == TileType.EMPTY){
+        bsCoord.add(new Coordinates(row, columnIdx));
+        rowCount++;
+      }
+    }
+
+    return bsCoord;
+  }
+
+
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveTileCommandTypeAdaptor.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveTileCommandTypeAdaptor.html new file mode 100644 index 00000000..293294b2 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveTileCommandTypeAdaptor.html @@ -0,0 +1 @@ +MoveTileCommandTypeAdaptor

MoveTileCommandTypeAdaptor

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total48 of 8040%2 of 450%2571503
deserialize(JsonElement, Type, JsonDeserializationContext)321633%1150%125901
serialize(Map, Type, JsonSerializationContext)161344%1150%122501
MoveTileCommandTypeAdaptor()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveTileCommandTypeAdaptor.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveTileCommandTypeAdaptor.java.html new file mode 100644 index 00000000..3fcf3c6a --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MoveTileCommandTypeAdaptor.java.html @@ -0,0 +1,76 @@ +MoveTileCommandTypeAdaptor.java

MoveTileCommandTypeAdaptor.java

package it.polimi.is23am10.utils;
+
+import java.lang.reflect.Type;
+import java.util.Map;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonSerializationContext;
+import com.google.gson.JsonSerializer;
+
+import java.util.HashMap;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonParseException;
+import com.google.gson.JsonParser;
+
+/**
+ * Internal used class.
+ * 
+ */
+class CustomKeySerializer implements JsonSerializer<Coordinates> {
+  @Override
+  public JsonElement serialize(Coordinates src, Type typeOfSrc, JsonSerializationContext context) {
+    JsonObject obj = new JsonObject();
+    obj.addProperty("row", src.getRow());
+    obj.addProperty("col", src.getCol());
+    return obj;
+  }
+}
+
+/**
+ * Internal used class.
+ * 
+ */
+class CustomKeyDeserializer implements JsonDeserializer<Coordinates> {
+  @Override
+  public Coordinates deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
+      throws JsonParseException {
+    JsonObject obj = json.getAsJsonObject();
+    int row = obj.get("row").getAsInt();
+    int col = obj.get("col").getAsInt();
+    return new Coordinates(row, col);
+  }
+}
+  
+/**
+ * Custom deserializer class definition for Gson usage.
+ * This works {@link Map} with {@link Coordinates} as keys.
+ * 
+ */
+public class MoveTileCommandTypeAdaptor implements JsonSerializer<Map<Coordinates, Coordinates>>, JsonDeserializer<Map<Coordinates, Coordinates>> {
+  @Override
+  public JsonElement serialize(Map<Coordinates, Coordinates> src, Type typeOfSrc, JsonSerializationContext context) {
+    JsonObject obj = new JsonObject();
+    for (Map.Entry<Coordinates, Coordinates> entry : src.entrySet()) {
+      obj.add(context.serialize(entry.getKey()).toString(), context.serialize(entry.getValue()));
+    }
+    return obj;
+  }
+
+  @Override
+  public Map<Coordinates, Coordinates> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context)
+      throws JsonParseException {
+    JsonObject obj = json.getAsJsonObject();
+    Map<Coordinates, Coordinates> map = new HashMap<>();
+    for (Map.Entry<String, JsonElement> entry : obj.entrySet()) {
+      String keyString = entry.getKey();
+      Coordinates key = context.deserialize((new JsonParser()).parse(keyString), Coordinates.class);
+      Coordinates value = context.deserialize(entry.getValue(), Coordinates.class);
+      map.put(key, value);
+    }
+    return map;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MovesValidator.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MovesValidator.html new file mode 100644 index 00000000..18076d15 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MovesValidator.html @@ -0,0 +1 @@ +MovesValidator

MovesValidator

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total3 of 36999%7 of 5887%743171014
isCoordinateInMaxIndex(Coordinates)21890%2250%230101
validateGameBoardPicks(Collection, Board)110299%11794%11013401
validateBookShelfPicks(Collection, Bookshelf)93100%14100%0802101
hasEmptySide(Coordinates, Board)52100%3562%350401
areAdjacent(List)42100%4100%030401
validateGameMoves(Map, Bookshelf, Board)21100%1375%130501
isCoordinateInZeroIndex(Coordinates)12100%4100%030101
placeFromBottom(Integer)8100%2100%020101
lambda$validateGameBoardPicks$5(Coordinates)3100%n/a010101
lambda$validateGameBoardPicks$4(Coordinates)3100%n/a010101
lambda$validateGameBoardPicks$3(Coordinates)3100%n/a010101
lambda$validateGameBoardPicks$2(Coordinates)3100%n/a010101
lambda$validateBookShelfPicks$1(Coordinates)3100%n/a010101
lambda$validateBookShelfPicks$0(Coordinates)3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MovesValidator.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MovesValidator.java.html new file mode 100644 index 00000000..3aff310c --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/MovesValidator.java.html @@ -0,0 +1,280 @@ +MovesValidator.java

MovesValidator.java

package it.polimi.is23am10.utils;
+
+import it.polimi.is23am10.server.model.items.board.Board;
+import it.polimi.is23am10.server.model.items.board.exceptions.BoardGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.board.exceptions.BoardGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
+import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
+import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
+import it.polimi.is23am10.utils.exceptions.WrongBookShelfPicksException;
+import it.polimi.is23am10.utils.exceptions.WrongGameBoardPicksException;
+import it.polimi.is23am10.utils.exceptions.WrongMovesNumberException;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * The game movement validator class definition.
+ *
+ * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
+ * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
+ * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
+ * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
+ * 
+ */
+public class MovesValidator {
+
+  /**
+   * Private constructor.
+   * 
+   */
+  private MovesValidator() {
+
+  }
+
+  /**
+   * Checks if the given coordinate is in the zero index.
+   *
+   * @param c the coordinate to be checked
+   * @return true if the coordinate is in the zero index, false otherwise
+   */
+  private static boolean isCoordinateInZeroIndex(Coordinates c) {
+    return c.getCol() == 0 || c.getRow() == 0;
+  }
+
+  /**
+   * Checks if the given coordinate is in the max index.
+   *
+   * @param c the coordinate to be checked
+   * @return true if the coordinate is in the max index, false otherwise
+   */
+  private static boolean isCoordinateInMaxIndex(Coordinates c) {
+    return c.getCol() == Board.BOARD_GRID_COLS - 1 || c.getRow() == Board.BOARD_GRID_ROWS - 1;
+  }
+
+  /**
+   * Checks if any side of the tile in the given coordinate is empty.
+   *
+   * @param c     the coordinate to be checked
+   * @param board the game board to check for empty tiles
+   * @return true if there's an empty side, false otherwise
+   * @throws BoardGridRowIndexOutOfBoundsException If the board row index is out of bounds. if the row index is out of
+   *                                               bounds
+   * @throws BoardGridColIndexOutOfBoundsException If the board column index is out of bounds. if the column index is out of
+   *                                               bounds
+   * @throws NullIndexValueException If the index provided is null.               if the value at the given index
+   *                                               is null
+   */
+  private static boolean hasEmptySide(Coordinates c, Board board)
+      throws BoardGridRowIndexOutOfBoundsException, BoardGridColIndexOutOfBoundsException,
+      NullIndexValueException {
+    return board.getTileAt(c.getRow() - 1, c.getCol()).isEmpty()
+        || board.getTileAt(c.getRow() + 1, c.getCol()).isEmpty()
+        || board.getTileAt(c.getRow(), c.getCol() - 1).isEmpty()
+        || board.getTileAt(c.getRow(), c.getCol() + 1).isEmpty();
+  }
+
+  /**
+   * Checks if the values in the given list are adjacent to each other.
+   *
+   * @param values the list of values to be checked. Must be pre-sorted for this to work.
+   * @return true if the values are adjacent, false otherwise
+   */
+  private static boolean areAdjacent(List<Integer> values) {
+    for (Integer i = 0; i < values.size() - 1; i++) {
+      if (values.get(i + 1) - values.get(i) != 1) {
+        return false;
+      }
+    }
+    return true;
+  }
+
+  /**
+   * Checks if the lowest row value is greater than or equal to the number of rows
+   * in the bookshelf.
+   *
+   * @param lowestRow the lowest row value
+   * @return true if the lowest row value is greater than or equal to the number
+   *         of rows in the
+   *         bookshelf, false otherwise
+   */
+  private static boolean placeFromBottom(Integer lowestRow) {
+    return lowestRow >= Bookshelf.BOOKSHELF_ROWS - 1;
+  }
+
+  /**
+   * Validates the bookshelf picks by checking if they're valid.
+   *
+   * @param moves     the map of coordinates representing the bookshelf picks
+   * @param bookShelf the bookshelf to check the picks against
+   * @throws WrongBookShelfPicksException If the game moves are invalid because of bookshelf placement.              if the bookshelf picks are
+   *                                                   invalid
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds. if the column index is out
+   *                                                   of bounds
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds. if the row index is out of
+   *                                                   bounds
+   * @throws NullIndexValueException If the index provided is null.                   if the value at the given
+   *                                                   index is null
+   */
+  protected static void validateBookShelfPicks(
+      Collection<Coordinates> moves, Bookshelf bookShelf)
+      throws WrongBookShelfPicksException, BookshelfGridColIndexOutOfBoundsException,
+      BookshelfGridRowIndexOutOfBoundsException, NullIndexValueException {
+
+    // check different picked columns, they have to be 1
+    long columns = moves.stream().map(e -> e.getCol()).distinct().count();
+    if (columns > 1) {
+      throw new WrongBookShelfPicksException(
+          "Invalid bookshelf picks, selected " + columns + " columns. Only one allowed");
+    }
+
+    // we can safely get the first column value as they are all the same
+    final Integer columnValue = moves.iterator().next().getCol();
+    // check the empty rows inside the selected column
+    if (bookShelf.getFreeRowsInCol(columnValue) < moves.size()) {
+      throw new WrongBookShelfPicksException(
+          "Invalid bookshelf picks, selected a column with no sufficient space");
+    }
+
+    // check that the selected spots inside the bookshelf are adjacent
+    List<Integer> rowValues = moves
+        .stream()
+        .map(e -> e.getRow())
+        .sorted()
+        .collect(Collectors.toList());
+    if (!areAdjacent(rowValues)) {
+      throw new WrongBookShelfPicksException(
+          "Invalid bookshelf picks, selected not sequential rows");
+    }
+
+    // check that the lowest tile to put into the bookshelf has a non empty tile
+    // under it
+    // or if it is the first tile in the column, check that the lowest spot is empty
+    Integer lowestRow = rowValues.get(rowValues.size() - 1);
+    if (!placeFromBottom(lowestRow)
+        && bookShelf.getBookshelfGridAt(lowestRow + 1, columnValue).isEmpty()) {
+      throw new WrongBookShelfPicksException("Invalid bookshelf picks, gap between tiles");
+    } else if (placeFromBottom(lowestRow)
+        && !bookShelf.getBookshelfGridAt(lowestRow, columnValue).isEmpty()) {
+      throw new WrongBookShelfPicksException(
+          "Invalid bookshelf picks, bookshelf position not empty");
+    }
+  }
+
+  /**
+   * Validates the game board picks for the given moves and board.
+   *
+   * @param moves the map of coordinates to coordinates representing the moves
+   *              made on the board
+   * @param board the game board to validate the moves on
+   * @throws WrongGameBoardPicksException If the game moves are invalid because of board picking.          if the picks made on the board
+   *                                               are invalid
+   * @throws BoardGridRowIndexOutOfBoundsException If the board row index is out of bounds. if a row index in the moves is
+   *                                               out of bounds of the board
+   * @throws BoardGridColIndexOutOfBoundsException If the board column index is out of bounds. if a column index in the moves
+   *                                               is out of bounds of the board
+   * @throws NullIndexValueException If the index provided is null.               if a null coordinate is present
+   *                                               in the moves
+   */
+  protected static void validateGameBoardPicks(
+      Collection<Coordinates> moves, Board board)
+      throws WrongGameBoardPicksException, BoardGridRowIndexOutOfBoundsException,
+      BoardGridColIndexOutOfBoundsException, NullIndexValueException {
+    // perform pick up check
+    long rowCount = moves
+        .stream()
+        .map(c -> c.getRow())
+        .distinct()
+        .count();
+    long colCount = moves
+        .stream()
+        .map(c -> c.getCol())
+        .distinct()
+        .count();
+
+    if (!(rowCount == 1 || colCount == 1)) {
+      throw new WrongGameBoardPicksException("Invalid tile picks from the game board, detected "
+          + rowCount + "row selection and " + colCount + " column selection");
+    }
+
+    List<Integer> rowValues = moves
+        .stream()
+        .map(e -> e.getRow())
+        .sorted()
+        .collect(Collectors.toList());
+    List<Integer> colValues = moves
+        .stream()
+        .map(e -> e.getCol())
+        .sorted()
+        .collect(Collectors.toList());
+
+    if (!areAdjacent(colValues) && !areAdjacent(rowValues)) {
+      throw new WrongGameBoardPicksException("Invalid pick movement, gap between chosen tiles");
+    }
+
+    // perform checks, every tile must have an empty side
+    for (Coordinates c : moves) {
+      // handle empty tile picks
+      if (board.getTileAt(c.getRow(), c.getCol()).isEmpty()) {
+        throw new WrongGameBoardPicksException("Invalid pick movement, empty tile");
+      }
+
+      // tiles in the first row/col or last row/col have always a side with no tiles
+      if (isCoordinateInZeroIndex(c) || isCoordinateInMaxIndex(c)) {
+        continue;
+      }
+
+      // consumer should handle index out the bounds exception: malformed input
+      if (!hasEmptySide(c, board)) {
+        throw new WrongGameBoardPicksException("Invalid pick movement, the tile at row "
+            + c.getRow() + " and col " + c.getCol() + " has all its sides full");
+      }
+    }
+  }
+
+  /**
+   * Validates the game moves for the given moves, bookshelf and board.
+   *
+   * @param moves     the map of coordinates to coordinates representing the moves
+   *                  made on the board
+   * @param bookshelf the bookshelf to validate the moves on
+   * @param board     the game board to validate the moves on
+   * @throws WrongMovesNumberException If the game moves are in an illegal number.                 if the number of moves made
+   *                                                   is less than 1 or greater
+   *                                                   than 3
+   * @throws WrongGameBoardPicksException If the game moves are invalid because of board picking.              if the picks made on the
+   *                                                   board are invalid
+   * @throws BoardGridRowIndexOutOfBoundsException If the board row index is out of bounds.     if a row index in the moves
+   *                                                   is out of bounds of the
+   *                                                   board
+   * @throws BoardGridColIndexOutOfBoundsException If the board column index is out of bounds.     if a column index in the
+   *                                                   moves is out of bounds of
+   *                                                   the board
+   * @throws NullIndexValueException If the index provided is null.                   if a null coordinate is
+   *                                                   present in the moves
+   * @throws BookshelfGridColIndexOutOfBoundsException If the bookshelf column index is out of bounds. if a column index in the
+   *                                                   moves is out of bounds of
+   *                                                   the bookshelf
+   * @throws BookshelfGridRowIndexOutOfBoundsException If the bookshelf row index is out of bounds. if a row index in the moves
+   *                                                   is out of bounds of the
+   *                                                   bookshelf
+   * @throws WrongBookShelfPicksException If the game moves are invalid because of bookshelf placement.              if the picks made on the
+   *                                                   bookshelf are invalid
+   */
+  public static void validateGameMoves(
+      Map<Coordinates, Coordinates> moves, Bookshelf bookshelf, Board board)
+      throws WrongMovesNumberException, BoardGridRowIndexOutOfBoundsException,
+      BoardGridColIndexOutOfBoundsException, WrongGameBoardPicksException, NullIndexValueException,
+      BookshelfGridColIndexOutOfBoundsException, BookshelfGridRowIndexOutOfBoundsException,
+      WrongBookShelfPicksException {
+    if (moves.size() < 1 || moves.size() > 3) {
+      throw new WrongMovesNumberException();
+    }
+
+    validateGameBoardPicks(moves.keySet(), board);
+    validateBookShelfPicks(moves.values(), bookshelf);
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ThreadLocalTypeAdapterFactory$1.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ThreadLocalTypeAdapterFactory$1.html new file mode 100644 index 00000000..2aa55d44 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ThreadLocalTypeAdapterFactory$1.html @@ -0,0 +1 @@ +ThreadLocalTypeAdapterFactory.new TypeAdapter() {...}

ThreadLocalTypeAdapterFactory.new TypeAdapter() {...}

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total26 of 260%0 of 0n/a338833
read(JsonReader)140%n/a115511
{...}60%n/a111111
write(JsonWriter, Object)60%n/a112211
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ThreadLocalTypeAdapterFactory.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ThreadLocalTypeAdapterFactory.html new file mode 100644 index 00000000..6de0b4e7 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ThreadLocalTypeAdapterFactory.html @@ -0,0 +1 @@ +ThreadLocalTypeAdapterFactory

ThreadLocalTypeAdapterFactory

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethods
Total5 of 1566%1 of 250%131402
create(Gson, TypeToken)5758%1150%121301
ThreadLocalTypeAdapterFactory()3100%n/a010101
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ThreadLocalTypeAdapterFactory.java.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ThreadLocalTypeAdapterFactory.java.html new file mode 100644 index 00000000..0728f042 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/ThreadLocalTypeAdapterFactory.java.html @@ -0,0 +1,43 @@ +ThreadLocalTypeAdapterFactory.java

ThreadLocalTypeAdapterFactory.java

package it.polimi.is23am10.utils;
+
+import com.google.gson.Gson;
+import com.google.gson.TypeAdapter;
+import com.google.gson.TypeAdapterFactory;
+import com.google.gson.reflect.TypeToken;
+import com.google.gson.stream.JsonReader;
+import com.google.gson.stream.JsonWriter;
+
+import java.io.IOException;
+
+public class ThreadLocalTypeAdapterFactory implements TypeAdapterFactory {
+  @Override
+  public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
+    if (ThreadLocal.class.isAssignableFrom(type.getRawType())) {
+      return new TypeAdapter<T>() {
+        @Override
+        public void write(JsonWriter out, T value) throws IOException {
+          // Write the thread-local value as a string
+          out.value(value.toString());
+        }
+
+        @Override
+        public T read(JsonReader in) throws IOException {
+          // Read the thread-local value as a string
+          String value = in.nextString();
+
+          // Create a new thread-local with the same value
+          ThreadLocal<String> threadLocal = new ThreadLocal<>();
+          threadLocal.set(value);
+
+          @SuppressWarnings("unchecked")
+          T result = (T) threadLocal;
+          return result;
+        }
+      };
+    }
+
+    // For other types, use the default adapter
+    return null;
+  }
+}
+
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/index.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/index.html new file mode 100644 index 00000000..f4749d98 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/index.html @@ -0,0 +1 @@ +it.polimi.is23am10.utils

it.polimi.is23am10.utils

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total310 of 1,01269%57 of 15162%52123672101243411
CommandSyntaxValidator791616%2939%192024273401
MoveCommandHelper700%80%5510101111
MoveTileCommandTypeAdaptor483240%2250%257150301
ThreadLocalTypeAdapterFactory.new TypeAdapter() {...}260%n/a33883311
CustomKeyDeserializer240%n/a22552211
CustomKeySerializer190%n/a22552211
Coordinates187380%3350%4122211901
ArgParser1017794%32689%3203390101
IndexValidator82877%4866%48260201
ThreadLocalTypeAdapterFactory51066%1150%13140201
MovesValidator36699%75187%74317101401
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/it.polimi.is23am10.utils/index.source.html b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/index.source.html new file mode 100644 index 00000000..1ee30985 --- /dev/null +++ b/deliverables/coverage/jacoco/it.polimi.is23am10.utils/index.source.html @@ -0,0 +1 @@ +it.polimi.is23am10.utils

it.polimi.is23am10.utils

ElementMissed InstructionsCov.Missed BranchesCov.MissedCxtyMissedLinesMissedMethodsMissedClasses
Total310 of 1,01269%57 of 15162%52123672101243411
MoveTileCommandTypeAdaptor.java913226%2250%6917254723
CommandSyntaxValidator.java791616%2939%192024273401
MoveCommandHelper.java700%80%5510101111
ThreadLocalTypeAdapterFactory.java311024%1150%468113512
Coordinates.java187380%3350%4122211901
ArgParser.java1017794%32689%3203390101
IndexValidator.java82877%4866%48260201
MovesValidator.java36699%75187%74317101401
\ No newline at end of file diff --git a/deliverables/coverage/jacoco/jacoco-resources/branchfc.gif b/deliverables/coverage/jacoco/jacoco-resources/branchfc.gif new file mode 100644 index 00000000..989b46d3 Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/branchfc.gif differ diff --git a/deliverables/coverage/jacoco/jacoco-resources/branchnc.gif b/deliverables/coverage/jacoco/jacoco-resources/branchnc.gif new file mode 100644 index 00000000..1933e07c Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/branchnc.gif differ diff --git a/deliverables/coverage/jacoco/jacoco-resources/branchpc.gif b/deliverables/coverage/jacoco/jacoco-resources/branchpc.gif new file mode 100644 index 00000000..cbf711b7 Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/branchpc.gif differ diff --git a/deliverables/coverage/jacoco/jacoco-resources/bundle.gif b/deliverables/coverage/jacoco/jacoco-resources/bundle.gif new file mode 100644 index 00000000..fca9c53e Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/bundle.gif differ diff --git a/deliverables/coverage/jacoco/jacoco-resources/class.gif b/deliverables/coverage/jacoco/jacoco-resources/class.gif new file mode 100644 index 00000000..eb348fb0 Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/class.gif differ diff --git a/deliverables/coverage/jacoco/jacoco-resources/down.gif b/deliverables/coverage/jacoco/jacoco-resources/down.gif new file mode 100644 index 00000000..440a14db Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/down.gif differ diff --git a/deliverables/coverage/jacoco/jacoco-resources/greenbar.gif b/deliverables/coverage/jacoco/jacoco-resources/greenbar.gif new file mode 100644 index 00000000..0ba65672 Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/greenbar.gif differ diff --git a/deliverables/coverage/jacoco/jacoco-resources/group.gif b/deliverables/coverage/jacoco/jacoco-resources/group.gif new file mode 100644 index 00000000..a4ea580d Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/group.gif differ diff --git a/deliverables/coverage/jacoco/jacoco-resources/method.gif b/deliverables/coverage/jacoco/jacoco-resources/method.gif new file mode 100644 index 00000000..7d24707e Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/method.gif differ diff --git a/deliverables/coverage/jacoco/jacoco-resources/package.gif b/deliverables/coverage/jacoco/jacoco-resources/package.gif new file mode 100644 index 00000000..131c28da Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/package.gif differ diff --git a/deliverables/coverage/jacoco/jacoco-resources/prettify.css b/deliverables/coverage/jacoco/jacoco-resources/prettify.css new file mode 100644 index 00000000..be5166e0 --- /dev/null +++ b/deliverables/coverage/jacoco/jacoco-resources/prettify.css @@ -0,0 +1,13 @@ +/* Pretty printing styles. Used with prettify.js. */ + +.str { color: #2A00FF; } +.kwd { color: #7F0055; font-weight:bold; } +.com { color: #3F5FBF; } +.typ { color: #606; } +.lit { color: #066; } +.pun { color: #660; } +.pln { color: #000; } +.tag { color: #008; } +.atn { color: #606; } +.atv { color: #080; } +.dec { color: #606; } diff --git a/deliverables/coverage/jacoco/jacoco-resources/prettify.js b/deliverables/coverage/jacoco/jacoco-resources/prettify.js new file mode 100644 index 00000000..b2766fe0 --- /dev/null +++ b/deliverables/coverage/jacoco/jacoco-resources/prettify.js @@ -0,0 +1,1510 @@ +// Copyright (C) 2006 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + + +/** + * @fileoverview + * some functions for browser-side pretty printing of code contained in html. + *

+ * + * For a fairly comprehensive set of languages see the + * README + * file that came with this source. At a minimum, the lexer should work on a + * number of languages including C and friends, Java, Python, Bash, SQL, HTML, + * XML, CSS, Javascript, and Makefiles. It works passably on Ruby, PHP and Awk + * and a subset of Perl, but, because of commenting conventions, doesn't work on + * Smalltalk, Lisp-like, or CAML-like languages without an explicit lang class. + *

+ * Usage:

    + *
  1. include this source file in an html page via + * {@code } + *
  2. define style rules. See the example page for examples. + *
  3. mark the {@code
    } and {@code } tags in your source with
    + *    {@code class=prettyprint.}
    + *    You can also use the (html deprecated) {@code } tag, but the pretty
    + *    printer needs to do more substantial DOM manipulations to support that, so
    + *    some css styles may not be preserved.
    + * </ol>
    + * That's it.  I wanted to keep the API as simple as possible, so there's no
    + * need to specify which language the code is in, but if you wish, you can add
    + * another class to the {@code <pre>} or {@code <code>} element to specify the
    + * language, as in {@code <pre class="prettyprint lang-java">}.  Any class that
    + * starts with "lang-" followed by a file extension, specifies the file type.
    + * See the "lang-*.js" files in this directory for code that implements
    + * per-language file handlers.
    + * <p>
    + * Change log:<br>
    + * cbeust, 2006/08/22
    + * <blockquote>
    + *   Java annotations (start with "@") are now captured as literals ("lit")
    + * </blockquote>
    + * @requires console
    + */
    +
    +// JSLint declarations
    +/*global console, document, navigator, setTimeout, window */
    +
    +/**
    + * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
    + * UI events.
    + * If set to {@code false}, {@code prettyPrint()} is synchronous.
    + */
    +window['PR_SHOULD_USE_CONTINUATION'] = true;
    +
    +/** the number of characters between tab columns */
    +window['PR_TAB_WIDTH'] = 8;
    +
    +/** Walks the DOM returning a properly escaped version of innerHTML.
    +  * @param {Node} node
    +  * @param {Array.<string>} out output buffer that receives chunks of HTML.
    +  */
    +window['PR_normalizedHtml']
    +
    +/** Contains functions for creating and registering new language handlers.
    +  * @type {Object}
    +  */
    +  = window['PR']
    +
    +/** Pretty print a chunk of code.
    +  *
    +  * @param {string} sourceCodeHtml code as html
    +  * @return {string} code as html, but prettier
    +  */
    +  = window['prettyPrintOne']
    +/** Find all the {@code <pre>} and {@code <code>} tags in the DOM with
    +  * {@code class=prettyprint} and prettify them.
    +  * @param {Function?} opt_whenDone if specified, called when the last entry
    +  *     has been finished.
    +  */
    +  = window['prettyPrint'] = void 0;
    +
    +/** browser detection. @extern @returns false if not IE, otherwise the major version. */
    +window['_pr_isIE6'] = function () {
    +  var ieVersion = navigator && navigator.userAgent &&
    +      navigator.userAgent.match(/\bMSIE ([678])\./);
    +  ieVersion = ieVersion ? +ieVersion[1] : false;
    +  window['_pr_isIE6'] = function () { return ieVersion; };
    +  return ieVersion;
    +};
    +
    +
    +(function () {
    +  // Keyword lists for various languages.
    +  var FLOW_CONTROL_KEYWORDS =
    +      "break continue do else for if return while ";
    +  var C_KEYWORDS = FLOW_CONTROL_KEYWORDS + "auto case char const default " +
    +      "double enum extern float goto int long register short signed sizeof " +
    +      "static struct switch typedef union unsigned void volatile ";
    +  var COMMON_KEYWORDS = C_KEYWORDS + "catch class delete false import " +
    +      "new operator private protected public this throw true try typeof ";
    +  var CPP_KEYWORDS = COMMON_KEYWORDS + "alignof align_union asm axiom bool " +
    +      "concept concept_map const_cast constexpr decltype " +
    +      "dynamic_cast explicit export friend inline late_check " +
    +      "mutable namespace nullptr reinterpret_cast static_assert static_cast " +
    +      "template typeid typename using virtual wchar_t where ";
    +  var JAVA_KEYWORDS = COMMON_KEYWORDS +
    +      "abstract boolean byte extends final finally implements import " +
    +      "instanceof null native package strictfp super synchronized throws " +
    +      "transient ";
    +  var CSHARP_KEYWORDS = JAVA_KEYWORDS +
    +      "as base by checked decimal delegate descending event " +
    +      "fixed foreach from group implicit in interface internal into is lock " +
    +      "object out override orderby params partial readonly ref sbyte sealed " +
    +      "stackalloc string select uint ulong unchecked unsafe ushort var ";
    +  var JSCRIPT_KEYWORDS = COMMON_KEYWORDS +
    +      "debugger eval export function get null set undefined var with " +
    +      "Infinity NaN ";
    +  var PERL_KEYWORDS = "caller delete die do dump elsif eval exit foreach for " +
    +      "goto if import last local my next no our print package redo require " +
    +      "sub undef unless until use wantarray while BEGIN END ";
    +  var PYTHON_KEYWORDS = FLOW_CONTROL_KEYWORDS + "and as assert class def del " +
    +      "elif except exec finally from global import in is lambda " +
    +      "nonlocal not or pass print raise try with yield " +
    +      "False True None ";
    +  var RUBY_KEYWORDS = FLOW_CONTROL_KEYWORDS + "alias and begin case class def" +
    +      " defined elsif end ensure false in module next nil not or redo rescue " +
    +      "retry self super then true undef unless until when yield BEGIN END ";
    +  var SH_KEYWORDS = FLOW_CONTROL_KEYWORDS + "case done elif esac eval fi " +
    +      "function in local set then until ";
    +  var ALL_KEYWORDS = (
    +      CPP_KEYWORDS + CSHARP_KEYWORDS + JSCRIPT_KEYWORDS + PERL_KEYWORDS +
    +      PYTHON_KEYWORDS + RUBY_KEYWORDS + SH_KEYWORDS);
    +
    +  // token style names.  correspond to css classes
    +  /** token style for a string literal */
    +  var PR_STRING = 'str';
    +  /** token style for a keyword */
    +  var PR_KEYWORD = 'kwd';
    +  /** token style for a comment */
    +  var PR_COMMENT = 'com';
    +  /** token style for a type */
    +  var PR_TYPE = 'typ';
    +  /** token style for a literal value.  e.g. 1, null, true. */
    +  var PR_LITERAL = 'lit';
    +  /** token style for a punctuation string. */
    +  var PR_PUNCTUATION = 'pun';
    +  /** token style for a punctuation string. */
    +  var PR_PLAIN = 'pln';
    +
    +  /** token style for an sgml tag. */
    +  var PR_TAG = 'tag';
    +  /** token style for a markup declaration such as a DOCTYPE. */
    +  var PR_DECLARATION = 'dec';
    +  /** token style for embedded source. */
    +  var PR_SOURCE = 'src';
    +  /** token style for an sgml attribute name. */
    +  var PR_ATTRIB_NAME = 'atn';
    +  /** token style for an sgml attribute value. */
    +  var PR_ATTRIB_VALUE = 'atv';
    +
    +  /**
    +   * A class that indicates a section of markup that is not code, e.g. to allow
    +   * embedding of line numbers within code listings.
    +   */
    +  var PR_NOCODE = 'nocode';
    +
    +  /** A set of tokens that can precede a regular expression literal in
    +    * javascript.
    +    * http://www.mozilla.org/js/language/js20/rationale/syntax.html has the full
    +    * list, but I've removed ones that might be problematic when seen in
    +    * languages that don't support regular expression literals.
    +    *
    +    * <p>Specifically, I've removed any keywords that can't precede a regexp
    +    * literal in a syntactically legal javascript program, and I've removed the
    +    * "in" keyword since it's not a keyword in many languages, and might be used
    +    * as a count of inches.
    +    *
    +    * <p>The link a above does not accurately describe EcmaScript rules since
    +    * it fails to distinguish between (a=++/b/i) and (a++/b/i) but it works
    +    * very well in practice.
    +    *
    +    * @private
    +    */
    +  var REGEXP_PRECEDER_PATTERN = function () {
    +      var preceders = [
    +          "!", "!=", "!==", "#", "%", "%=", "&", "&&", "&&=",
    +          "&=", "(", "*", "*=", /* "+", */ "+=", ",", /* "-", */ "-=",
    +          "->", /*".", "..", "...", handled below */ "/", "/=", ":", "::", ";",
    +          "<", "<<", "<<=", "<=", "=", "==", "===", ">",
    +          ">=", ">>", ">>=", ">>>", ">>>=", "?", "@", "[",
    +          "^", "^=", "^^", "^^=", "{", "|", "|=", "||",
    +          "||=", "~" /* handles =~ and !~ */,
    +          "break", "case", "continue", "delete",
    +          "do", "else", "finally", "instanceof",
    +          "return", "throw", "try", "typeof"
    +          ];
    +      var pattern = '(?:^^|[+-]';
    +      for (var i = 0; i < preceders.length; ++i) {
    +        pattern += '|' + preceders[i].replace(/([^=<>:&a-z])/g, '\\$1');
    +      }
    +      pattern += ')\\s*';  // matches at end, and matches empty string
    +      return pattern;
    +      // CAVEAT: this does not properly handle the case where a regular
    +      // expression immediately follows another since a regular expression may
    +      // have flags for case-sensitivity and the like.  Having regexp tokens
    +      // adjacent is not valid in any language I'm aware of, so I'm punting.
    +      // TODO: maybe style special characters inside a regexp as punctuation.
    +    }();
    +
    +  // Define regexps here so that the interpreter doesn't have to create an
    +  // object each time the function containing them is called.
    +  // The language spec requires a new object created even if you don't access
    +  // the $1 members.
    +  var pr_amp = /&/g;
    +  var pr_lt = /</g;
    +  var pr_gt = />/g;
    +  var pr_quot = /\"/g;
    +  /** like textToHtml but escapes double quotes to be attribute safe. */
    +  function attribToHtml(str) {
    +    return str.replace(pr_amp, '&amp;')
    +        .replace(pr_lt, '&lt;')
    +        .replace(pr_gt, '&gt;')
    +        .replace(pr_quot, '&quot;');
    +  }
    +
    +  /** escapest html special characters to html. */
    +  function textToHtml(str) {
    +    return str.replace(pr_amp, '&amp;')
    +        .replace(pr_lt, '&lt;')
    +        .replace(pr_gt, '&gt;');
    +  }
    +
    +
    +  var pr_ltEnt = /&lt;/g;
    +  var pr_gtEnt = /&gt;/g;
    +  var pr_aposEnt = /&apos;/g;
    +  var pr_quotEnt = /&quot;/g;
    +  var pr_ampEnt = /&amp;/g;
    +  var pr_nbspEnt = /&nbsp;/g;
    +  /** unescapes html to plain text. */
    +  function htmlToText(html) {
    +    var pos = html.indexOf('&');
    +    if (pos < 0) { return html; }
    +    // Handle numeric entities specially.  We can't use functional substitution
    +    // since that doesn't work in older versions of Safari.
    +    // These should be rare since most browsers convert them to normal chars.
    +    for (--pos; (pos = html.indexOf('&#', pos + 1)) >= 0;) {
    +      var end = html.indexOf(';', pos);
    +      if (end >= 0) {
    +        var num = html.substring(pos + 3, end);
    +        var radix = 10;
    +        if (num && num.charAt(0) === 'x') {
    +          num = num.substring(1);
    +          radix = 16;
    +        }
    +        var codePoint = parseInt(num, radix);
    +        if (!isNaN(codePoint)) {
    +          html = (html.substring(0, pos) + String.fromCharCode(codePoint) +
    +                  html.substring(end + 1));
    +        }
    +      }
    +    }
    +
    +    return html.replace(pr_ltEnt, '<')
    +        .replace(pr_gtEnt, '>')
    +        .replace(pr_aposEnt, "'")
    +        .replace(pr_quotEnt, '"')
    +        .replace(pr_nbspEnt, ' ')
    +        .replace(pr_ampEnt, '&');
    +  }
    +
    +  /** is the given node's innerHTML normally unescaped? */
    +  function isRawContent(node) {
    +    return 'XMP' === node.tagName;
    +  }
    +
    +  var newlineRe = /[\r\n]/g;
    +  /**
    +   * Are newlines and adjacent spaces significant in the given node's innerHTML?
    +   */
    +  function isPreformatted(node, content) {
    +    // PRE means preformatted, and is a very common case, so don't create
    +    // unnecessary computed style objects.
    +    if ('PRE' === node.tagName) { return true; }
    +    if (!newlineRe.test(content)) { return true; }  // Don't care
    +    var whitespace = '';
    +    // For disconnected nodes, IE has no currentStyle.
    +    if (node.currentStyle) {
    +      whitespace = node.currentStyle.whiteSpace;
    +    } else if (window.getComputedStyle) {
    +      // Firefox makes a best guess if node is disconnected whereas Safari
    +      // returns the empty string.
    +      whitespace = window.getComputedStyle(node, null).whiteSpace;
    +    }
    +    return !whitespace || whitespace === 'pre';
    +  }
    +
    +  function normalizedHtml(node, out, opt_sortAttrs) {
    +    switch (node.nodeType) {
    +      case 1:  // an element
    +        var name = node.tagName.toLowerCase();
    +
    +        out.push('<', name);
    +        var attrs = node.attributes;
    +        var n = attrs.length;
    +        if (n) {
    +          if (opt_sortAttrs) {
    +            var sortedAttrs = [];
    +            for (var i = n; --i >= 0;) { sortedAttrs[i] = attrs[i]; }
    +            sortedAttrs.sort(function (a, b) {
    +                return (a.name < b.name) ? -1 : a.name === b.name ? 0 : 1;
    +              });
    +            attrs = sortedAttrs;
    +          }
    +          for (var i = 0; i < n; ++i) {
    +            var attr = attrs[i];
    +            if (!attr.specified) { continue; }
    +            out.push(' ', attr.name.toLowerCase(),
    +                     '="', attribToHtml(attr.value), '"');
    +          }
    +        }
    +        out.push('>');
    +        for (var child = node.firstChild; child; child = child.nextSibling) {
    +          normalizedHtml(child, out, opt_sortAttrs);
    +        }
    +        if (node.firstChild || !/^(?:br|link|img)$/.test(name)) {
    +          out.push('<\/', name, '>');
    +        }
    +        break;
    +      case 3: case 4: // text
    +        out.push(textToHtml(node.nodeValue));
    +        break;
    +    }
    +  }
    +
    +  /**
    +   * Given a group of {@link RegExp}s, returns a {@code RegExp} that globally
    +   * matches the union o the sets o strings matched d by the input RegExp.
    +   * Since it matches globally, if the input strings have a start-of-input
    +   * anchor (/^.../), it is ignored for the purposes of unioning.
    +   * @param {Array.<RegExp>} regexs non multiline, non-global regexs.
    +   * @return {RegExp} a global regex.
    +   */
    +  function combinePrefixPatterns(regexs) {
    +    var capturedGroupIndex = 0;
    +
    +    var needToFoldCase = false;
    +    var ignoreCase = false;
    +    for (var i = 0, n = regexs.length; i < n; ++i) {
    +      var regex = regexs[i];
    +      if (regex.ignoreCase) {
    +        ignoreCase = true;
    +      } else if (/[a-z]/i.test(regex.source.replace(
    +                     /\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi, ''))) {
    +        needToFoldCase = true;
    +        ignoreCase = false;
    +        break;
    +      }
    +    }
    +
    +    function decodeEscape(charsetPart) {
    +      if (charsetPart.charAt(0) !== '\\') { return charsetPart.charCodeAt(0); }
    +      switch (charsetPart.charAt(1)) {
    +        case 'b': return 8;
    +        case 't': return 9;
    +        case 'n': return 0xa;
    +        case 'v': return 0xb;
    +        case 'f': return 0xc;
    +        case 'r': return 0xd;
    +        case 'u': case 'x':
    +          return parseInt(charsetPart.substring(2), 16)
    +              || charsetPart.charCodeAt(1);
    +        case '0': case '1': case '2': case '3': case '4':
    +        case '5': case '6': case '7':
    +          return parseInt(charsetPart.substring(1), 8);
    +        default: return charsetPart.charCodeAt(1);
    +      }
    +    }
    +
    +    function encodeEscape(charCode) {
    +      if (charCode < 0x20) {
    +        return (charCode < 0x10 ? '\\x0' : '\\x') + charCode.toString(16);
    +      }
    +      var ch = String.fromCharCode(charCode);
    +      if (ch === '\\' || ch === '-' || ch === '[' || ch === ']') {
    +        ch = '\\' + ch;
    +      }
    +      return ch;
    +    }
    +
    +    function caseFoldCharset(charSet) {
    +      var charsetParts = charSet.substring(1, charSet.length - 1).match(
    +          new RegExp(
    +              '\\\\u[0-9A-Fa-f]{4}'
    +              + '|\\\\x[0-9A-Fa-f]{2}'
    +              + '|\\\\[0-3][0-7]{0,2}'
    +              + '|\\\\[0-7]{1,2}'
    +              + '|\\\\[\\s\\S]'
    +              + '|-'
    +              + '|[^-\\\\]',
    +              'g'));
    +      var groups = [];
    +      var ranges = [];
    +      var inverse = charsetParts[0] === '^';
    +      for (var i = inverse ? 1 : 0, n = charsetParts.length; i < n; ++i) {
    +        var p = charsetParts[i];
    +        switch (p) {
    +          case '\\B': case '\\b':
    +          case '\\D': case '\\d':
    +          case '\\S': case '\\s':
    +          case '\\W': case '\\w':
    +            groups.push(p);
    +            continue;
    +        }
    +        var start = decodeEscape(p);
    +        var end;
    +        if (i + 2 < n && '-' === charsetParts[i + 1]) {
    +          end = decodeEscape(charsetParts[i + 2]);
    +          i += 2;
    +        } else {
    +          end = start;
    +        }
    +        ranges.push([start, end]);
    +        // If the range might intersect letters, then expand it.
    +        if (!(end < 65 || start > 122)) {
    +          if (!(end < 65 || start > 90)) {
    +            ranges.push([Math.max(65, start) | 32, Math.min(end, 90) | 32]);
    +          }
    +          if (!(end < 97 || start > 122)) {
    +            ranges.push([Math.max(97, start) & ~32, Math.min(end, 122) & ~32]);
    +          }
    +        }
    +      }
    +
    +      // [[1, 10], [3, 4], [8, 12], [14, 14], [16, 16], [17, 17]]
    +      // -> [[1, 12], [14, 14], [16, 17]]
    +      ranges.sort(function (a, b) { return (a[0] - b[0]) || (b[1]  - a[1]); });
    +      var consolidatedRanges = [];
    +      var lastRange = [NaN, NaN];
    +      for (var i = 0; i < ranges.length; ++i) {
    +        var range = ranges[i];
    +        if (range[0] <= lastRange[1] + 1) {
    +          lastRange[1] = Math.max(lastRange[1], range[1]);
    +        } else {
    +          consolidatedRanges.push(lastRange = range);
    +        }
    +      }
    +
    +      var out = ['['];
    +      if (inverse) { out.push('^'); }
    +      out.push.apply(out, groups);
    +      for (var i = 0; i < consolidatedRanges.length; ++i) {
    +        var range = consolidatedRanges[i];
    +        out.push(encodeEscape(range[0]));
    +        if (range[1] > range[0]) {
    +          if (range[1] + 1 > range[0]) { out.push('-'); }
    +          out.push(encodeEscape(range[1]));
    +        }
    +      }
    +      out.push(']');
    +      return out.join('');
    +    }
    +
    +    function allowAnywhereFoldCaseAndRenumberGroups(regex) {
    +      // Split into character sets, escape sequences, punctuation strings
    +      // like ('(', '(?:', ')', '^'), and runs of characters that do not
    +      // include any of the above.
    +      var parts = regex.source.match(
    +          new RegExp(
    +              '(?:'
    +              + '\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]'  // a character set
    +              + '|\\\\u[A-Fa-f0-9]{4}'  // a unicode escape
    +              + '|\\\\x[A-Fa-f0-9]{2}'  // a hex escape
    +              + '|\\\\[0-9]+'  // a back-reference or octal escape
    +              + '|\\\\[^ux0-9]'  // other escape sequence
    +              + '|\\(\\?[:!=]'  // start of a non-capturing group
    +              + '|[\\(\\)\\^]'  // start/emd of a group, or line start
    +              + '|[^\\x5B\\x5C\\(\\)\\^]+'  // run of other characters
    +              + ')',
    +              'g'));
    +      var n = parts.length;
    +
    +      // Maps captured group numbers to the number they will occupy in
    +      // the output or to -1 if that has not been determined, or to
    +      // undefined if they need not be capturing in the output.
    +      var capturedGroups = [];
    +
    +      // Walk over and identify back references to build the capturedGroups
    +      // mapping.
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        var p = parts[i];
    +        if (p === '(') {
    +          // groups are 1-indexed, so max group index is count of '('
    +          ++groupIndex;
    +        } else if ('\\' === p.charAt(0)) {
    +          var decimalValue = +p.substring(1);
    +          if (decimalValue && decimalValue <= groupIndex) {
    +            capturedGroups[decimalValue] = -1;
    +          }
    +        }
    +      }
    +
    +      // Renumber groups and reduce capturing groups to non-capturing groups
    +      // where possible.
    +      for (var i = 1; i < capturedGroups.length; ++i) {
    +        if (-1 === capturedGroups[i]) {
    +          capturedGroups[i] = ++capturedGroupIndex;
    +        }
    +      }
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        var p = parts[i];
    +        if (p === '(') {
    +          ++groupIndex;
    +          if (capturedGroups[groupIndex] === undefined) {
    +            parts[i] = '(?:';
    +          }
    +        } else if ('\\' === p.charAt(0)) {
    +          var decimalValue = +p.substring(1);
    +          if (decimalValue && decimalValue <= groupIndex) {
    +            parts[i] = '\\' + capturedGroups[groupIndex];
    +          }
    +        }
    +      }
    +
    +      // Remove any prefix anchors so that the output will match anywhere.
    +      // ^^ really does mean an anchored match though.
    +      for (var i = 0, groupIndex = 0; i < n; ++i) {
    +        if ('^' === parts[i] && '^' !== parts[i + 1]) { parts[i] = ''; }
    +      }
    +
    +      // Expand letters to groupts to handle mixing of case-sensitive and
    +      // case-insensitive patterns if necessary.
    +      if (regex.ignoreCase && needToFoldCase) {
    +        for (var i = 0; i < n; ++i) {
    +          var p = parts[i];
    +          var ch0 = p.charAt(0);
    +          if (p.length >= 2 && ch0 === '[') {
    +            parts[i] = caseFoldCharset(p);
    +          } else if (ch0 !== '\\') {
    +            // TODO: handle letters in numeric escapes.
    +            parts[i] = p.replace(
    +                /[a-zA-Z]/g,
    +                function (ch) {
    +                  var cc = ch.charCodeAt(0);
    +                  return '[' + String.fromCharCode(cc & ~32, cc | 32) + ']';
    +                });
    +          }
    +        }
    +      }
    +
    +      return parts.join('');
    +    }
    +
    +    var rewritten = [];
    +    for (var i = 0, n = regexs.length; i < n; ++i) {
    +      var regex = regexs[i];
    +      if (regex.global || regex.multiline) { throw new Error('' + regex); }
    +      rewritten.push(
    +          '(?:' + allowAnywhereFoldCaseAndRenumberGroups(regex) + ')');
    +    }
    +
    +    return new RegExp(rewritten.join('|'), ignoreCase ? 'gi' : 'g');
    +  }
    +
    +  var PR_innerHtmlWorks = null;
    +  function getInnerHtml(node) {
    +    // inner html is hopelessly broken in Safari 2.0.4 when the content is
    +    // an html description of well formed XML and the containing tag is a PRE
    +    // tag, so we detect that case and emulate innerHTML.
    +    if (null === PR_innerHtmlWorks) {
    +      var testNode = document.createElement('PRE');
    +      testNode.appendChild(
    +          document.createTextNode('<!DOCTYPE foo PUBLIC "foo bar">\n<foo />'));
    +      PR_innerHtmlWorks = !/</.test(testNode.innerHTML);
    +    }
    +
    +    if (PR_innerHtmlWorks) {
    +      var content = node.innerHTML;
    +      // XMP tags contain unescaped entities so require special handling.
    +      if (isRawContent(node)) {
    +        content = textToHtml(content);
    +      } else if (!isPreformatted(node, content)) {
    +        content = content.replace(/(<br\s*\/?>)[\r\n]+/g, '$1')
    +            .replace(/(?:[\r\n]+[ \t]*)+/g, ' ');
    +      }
    +      return content;
    +    }
    +
    +    var out = [];
    +    for (var child = node.firstChild; child; child = child.nextSibling) {
    +      normalizedHtml(child, out);
    +    }
    +    return out.join('');
    +  }
    +
    +  /** returns a function that expand tabs to spaces.  This function can be fed
    +    * successive chunks of text, and will maintain its own internal state to
    +    * keep track of how tabs are expanded.
    +    * @return {function (string) : string} a function that takes
    +    *   plain text and return the text with tabs expanded.
    +    * @private
    +    */
    +  function makeTabExpander(tabWidth) {
    +    var SPACES = '                ';
    +    var charInLine = 0;
    +
    +    return function (plainText) {
    +      // walk over each character looking for tabs and newlines.
    +      // On tabs, expand them.  On newlines, reset charInLine.
    +      // Otherwise increment charInLine
    +      var out = null;
    +      var pos = 0;
    +      for (var i = 0, n = plainText.length; i < n; ++i) {
    +        var ch = plainText.charAt(i);
    +
    +        switch (ch) {
    +          case '\t':
    +            if (!out) { out = []; }
    +            out.push(plainText.substring(pos, i));
    +            // calculate how much space we need in front of this part
    +            // nSpaces is the amount of padding -- the number of spaces needed
    +            // to move us to the next column, where columns occur at factors of
    +            // tabWidth.
    +            var nSpaces = tabWidth - (charInLine % tabWidth);
    +            charInLine += nSpaces;
    +            for (; nSpaces >= 0; nSpaces -= SPACES.length) {
    +              out.push(SPACES.substring(0, nSpaces));
    +            }
    +            pos = i + 1;
    +            break;
    +          case '\n':
    +            charInLine = 0;
    +            break;
    +          default:
    +            ++charInLine;
    +        }
    +      }
    +      if (!out) { return plainText; }
    +      out.push(plainText.substring(pos));
    +      return out.join('');
    +    };
    +  }
    +
    +  var pr_chunkPattern = new RegExp(
    +      '[^<]+'  // A run of characters other than '<'
    +      + '|<\!--[\\s\\S]*?--\>'  // an HTML comment
    +      + '|<!\\[CDATA\\[[\\s\\S]*?\\]\\]>'  // a CDATA section
    +      // a probable tag that should not be highlighted
    +      + '|<\/?[a-zA-Z](?:[^>\"\']|\'[^\']*\'|\"[^\"]*\")*>'
    +      + '|<',  // A '<' that does not begin a larger chunk
    +      'g');
    +  var pr_commentPrefix = /^<\!--/;
    +  var pr_cdataPrefix = /^<!\[CDATA\[/;
    +  var pr_brPrefix = /^<br\b/i;
    +  var pr_tagNameRe = /^<(\/?)([a-zA-Z][a-zA-Z0-9]*)/;
    +
    +  /** split markup into chunks of html tags (style null) and
    +    * plain text (style {@link #PR_PLAIN}), converting tags which are
    +    * significant for tokenization (<br>) into their textual equivalent.
    +    *
    +    * @param {string} s html where whitespace is considered significant.
    +    * @return {Object} source code and extracted tags.
    +    * @private
    +    */
    +  function extractTags(s) {
    +    // since the pattern has the 'g' modifier and defines no capturing groups,
    +    // this will return a list of all chunks which we then classify and wrap as
    +    // PR_Tokens
    +    var matches = s.match(pr_chunkPattern);
    +    var sourceBuf = [];
    +    var sourceBufLen = 0;
    +    var extractedTags = [];
    +    if (matches) {
    +      for (var i = 0, n = matches.length; i < n; ++i) {
    +        var match = matches[i];
    +        if (match.length > 1 && match.charAt(0) === '<') {
    +          if (pr_commentPrefix.test(match)) { continue; }
    +          if (pr_cdataPrefix.test(match)) {
    +            // strip CDATA prefix and suffix.  Don't unescape since it's CDATA
    +            sourceBuf.push(match.substring(9, match.length - 3));
    +            sourceBufLen += match.length - 12;
    +          } else if (pr_brPrefix.test(match)) {
    +            // <br> tags are lexically significant so convert them to text.
    +            // This is undone later.
    +            sourceBuf.push('\n');
    +            ++sourceBufLen;
    +          } else {
    +            if (match.indexOf(PR_NOCODE) >= 0 && isNoCodeTag(match)) {
    +              // A <span class="nocode"> will start a section that should be
    +              // ignored.  Continue walking the list until we see a matching end
    +              // tag.
    +              var name = match.match(pr_tagNameRe)[2];
    +              var depth = 1;
    +              var j;
    +              end_tag_loop:
    +              for (j = i + 1; j < n; ++j) {
    +                var name2 = matches[j].match(pr_tagNameRe);
    +                if (name2 && name2[2] === name) {
    +                  if (name2[1] === '/') {
    +                    if (--depth === 0) { break end_tag_loop; }
    +                  } else {
    +                    ++depth;
    +                  }
    +                }
    +              }
    +              if (j < n) {
    +                extractedTags.push(
    +                    sourceBufLen, matches.slice(i, j + 1).join(''));
    +                i = j;
    +              } else {  // Ignore unclosed sections.
    +                extractedTags.push(sourceBufLen, match);
    +              }
    +            } else {
    +              extractedTags.push(sourceBufLen, match);
    +            }
    +          }
    +        } else {
    +          var literalText = htmlToText(match);
    +          sourceBuf.push(literalText);
    +          sourceBufLen += literalText.length;
    +        }
    +      }
    +    }
    +    return { source: sourceBuf.join(''), tags: extractedTags };
    +  }
    +
    +  /** True if the given tag contains a class attribute with the nocode class. */
    +  function isNoCodeTag(tag) {
    +    return !!tag
    +        // First canonicalize the representation of attributes
    +        .replace(/\s(\w+)\s*=\s*(?:\"([^\"]*)\"|'([^\']*)'|(\S+))/g,
    +                 ' $1="$2$3$4"')
    +        // Then look for the attribute we want.
    +        .match(/[cC][lL][aA][sS][sS]=\"[^\"]*\bnocode\b/);
    +  }
    +
    +  /**
    +   * Apply the given language handler to sourceCode and add the resulting
    +   * decorations to out.
    +   * @param {number} basePos the index of sourceCode within the chunk of source
    +   *    whose decorations are already present on out.
    +   */
    +  function appendDecorations(basePos, sourceCode, langHandler, out) {
    +    if (!sourceCode) { return; }
    +    var job = {
    +      source: sourceCode,
    +      basePos: basePos
    +    };
    +    langHandler(job);
    +    out.push.apply(out, job.decorations);
    +  }
    +
    +  /** Given triples of [style, pattern, context] returns a lexing function,
    +    * The lexing function interprets the patterns to find token boundaries and
    +    * returns a decoration list of the form
    +    * [index_0, style_0, index_1, style_1, ..., index_n, style_n]
    +    * where index_n is an index into the sourceCode, and style_n is a style
    +    * constant like PR_PLAIN.  index_n-1 <= index_n, and style_n-1 applies to
    +    * all characters in sourceCode[index_n-1:index_n].
    +    *
    +    * The stylePatterns is a list whose elements have the form
    +    * [style : string, pattern : RegExp, DEPRECATED, shortcut : string].
    +    *
    +    * Style is a style constant like PR_PLAIN, or can be a string of the
    +    * form 'lang-FOO', where FOO is a language extension describing the
    +    * language of the portion of the token in $1 after pattern executes.
    +    * E.g., if style is 'lang-lisp', and group 1 contains the text
    +    * '(hello (world))', then that portion of the token will be passed to the
    +    * registered lisp handler for formatting.
    +    * The text before and after group 1 will be restyled using this decorator
    +    * so decorators should take care that this doesn't result in infinite
    +    * recursion.  For example, the HTML lexer rule for SCRIPT elements looks
    +    * something like ['lang-js', /<[s]cript>(.+?)<\/script>/].  This may match
    +    * '<script>foo()<\/script>', which would cause the current decorator to
    +    * be called with '<script>' which would not match the same rule since
    +    * group 1 must not be empty, so it would be instead styled as PR_TAG by
    +    * the generic tag rule.  The handler registered for the 'js' extension would
    +    * then be called with 'foo()', and finally, the current decorator would
    +    * be called with '<\/script>' which would not match the original rule and
    +    * so the generic tag rule would identify it as a tag.
    +    *
    +    * Pattern must only match prefixes, and if it matches a prefix, then that
    +    * match is considered a token with the same style.
    +    *
    +    * Context is applied to the last non-whitespace, non-comment token
    +    * recognized.
    +    *
    +    * Shortcut is an optional string of characters, any of which, if the first
    +    * character, gurantee that this pattern and only this pattern matches.
    +    *
    +    * @param {Array} shortcutStylePatterns patterns that always start with
    +    *   a known character.  Must have a shortcut string.
    +    * @param {Array} fallthroughStylePatterns patterns that will be tried in
    +    *   order if the shortcut ones fail.  May have shortcuts.
    +    *
    +    * @return {function (Object)} a
    +    *   function that takes source code and returns a list of decorations.
    +    */
    +  function createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns) {
    +    var shortcuts = {};
    +    var tokenizer;
    +    (function () {
    +      var allPatterns = shortcutStylePatterns.concat(fallthroughStylePatterns);
    +      var allRegexs = [];
    +      var regexKeys = {};
    +      for (var i = 0, n = allPatterns.length; i < n; ++i) {
    +        var patternParts = allPatterns[i];
    +        var shortcutChars = patternParts[3];
    +        if (shortcutChars) {
    +          for (var c = shortcutChars.length; --c >= 0;) {
    +            shortcuts[shortcutChars.charAt(c)] = patternParts;
    +          }
    +        }
    +        var regex = patternParts[1];
    +        var k = '' + regex;
    +        if (!regexKeys.hasOwnProperty(k)) {
    +          allRegexs.push(regex);
    +          regexKeys[k] = null;
    +        }
    +      }
    +      allRegexs.push(/[\0-\uffff]/);
    +      tokenizer = combinePrefixPatterns(allRegexs);
    +    })();
    +
    +    var nPatterns = fallthroughStylePatterns.length;
    +    var notWs = /\S/;
    +
    +    /**
    +     * Lexes job.source and produces an output array job.decorations of style
    +     * classes preceded by the position at which they start in job.source in
    +     * order.
    +     *
    +     * @param {Object} job an object like {@code
    +     *    source: {string} sourceText plain text,
    +     *    basePos: {int} position of job.source in the larger chunk of
    +     *        sourceCode.
    +     * }
    +     */
    +    var decorate = function (job) {
    +      var sourceCode = job.source, basePos = job.basePos;
    +      /** Even entries are positions in source in ascending order.  Odd enties
    +        * are style markers (e.g., PR_COMMENT) that run from that position until
    +        * the end.
    +        * @type {Array.<number|string>}
    +        */
    +      var decorations = [basePos, PR_PLAIN];
    +      var pos = 0;  // index into sourceCode
    +      var tokens = sourceCode.match(tokenizer) || [];
    +      var styleCache = {};
    +
    +      for (var ti = 0, nTokens = tokens.length; ti < nTokens; ++ti) {
    +        var token = tokens[ti];
    +        var style = styleCache[token];
    +        var match = void 0;
    +
    +        var isEmbedded;
    +        if (typeof style === 'string') {
    +          isEmbedded = false;
    +        } else {
    +          var patternParts = shortcuts[token.charAt(0)];
    +          if (patternParts) {
    +            match = token.match(patternParts[1]);
    +            style = patternParts[0];
    +          } else {
    +            for (var i = 0; i < nPatterns; ++i) {
    +              patternParts = fallthroughStylePatterns[i];
    +              match = token.match(patternParts[1]);
    +              if (match) {
    +                style = patternParts[0];
    +                break;
    +              }
    +            }
    +
    +            if (!match) {  // make sure that we make progress
    +              style = PR_PLAIN;
    +            }
    +          }
    +
    +          isEmbedded = style.length >= 5 && 'lang-' === style.substring(0, 5);
    +          if (isEmbedded && !(match && typeof match[1] === 'string')) {
    +            isEmbedded = false;
    +            style = PR_SOURCE;
    +          }
    +
    +          if (!isEmbedded) { styleCache[token] = style; }
    +        }
    +
    +        var tokenStart = pos;
    +        pos += token.length;
    +
    +        if (!isEmbedded) {
    +          decorations.push(basePos + tokenStart, style);
    +        } else {  // Treat group 1 as an embedded block of source code.
    +          var embeddedSource = match[1];
    +          var embeddedSourceStart = token.indexOf(embeddedSource);
    +          var embeddedSourceEnd = embeddedSourceStart + embeddedSource.length;
    +          if (match[2]) {
    +            // If embeddedSource can be blank, then it would match at the
    +            // beginning which would cause us to infinitely recurse on the
    +            // entire token, so we catch the right context in match[2].
    +            embeddedSourceEnd = token.length - match[2].length;
    +            embeddedSourceStart = embeddedSourceEnd - embeddedSource.length;
    +          }
    +          var lang = style.substring(5);
    +          // Decorate the left of the embedded source
    +          appendDecorations(
    +              basePos + tokenStart,
    +              token.substring(0, embeddedSourceStart),
    +              decorate, decorations);
    +          // Decorate the embedded source
    +          appendDecorations(
    +              basePos + tokenStart + embeddedSourceStart,
    +              embeddedSource,
    +              langHandlerForExtension(lang, embeddedSource),
    +              decorations);
    +          // Decorate the right of the embedded section
    +          appendDecorations(
    +              basePos + tokenStart + embeddedSourceEnd,
    +              token.substring(embeddedSourceEnd),
    +              decorate, decorations);
    +        }
    +      }
    +      job.decorations = decorations;
    +    };
    +    return decorate;
    +  }
    +
    +  /** returns a function that produces a list of decorations from source text.
    +    *
    +    * This code treats ", ', and ` as string delimiters, and \ as a string
    +    * escape.  It does not recognize perl's qq() style strings.
    +    * It has no special handling for double delimiter escapes as in basic, or
    +    * the tripled delimiters used in python, but should work on those regardless
    +    * although in those cases a single string literal may be broken up into
    +    * multiple adjacent string literals.
    +    *
    +    * It recognizes C, C++, and shell style comments.
    +    *
    +    * @param {Object} options a set of optional parameters.
    +    * @return {function (Object)} a function that examines the source code
    +    *     in the input job and builds the decoration list.
    +    */
    +  function sourceDecorator(options) {
    +    var shortcutStylePatterns = [], fallthroughStylePatterns = [];
    +    if (options['tripleQuotedStrings']) {
    +      // '''multi-line-string''', 'single-line-string', and double-quoted
    +      shortcutStylePatterns.push(
    +          [PR_STRING,  /^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,
    +           null, '\'"']);
    +    } else if (options['multiLineStrings']) {
    +      // 'multi-line-string', "multi-line-string"
    +      shortcutStylePatterns.push(
    +          [PR_STRING,  /^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,
    +           null, '\'"`']);
    +    } else {
    +      // 'single-line-string', "single-line-string"
    +      shortcutStylePatterns.push(
    +          [PR_STRING,
    +           /^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,
    +           null, '"\'']);
    +    }
    +    if (options['verbatimStrings']) {
    +      // verbatim-string-literal production from the C# grammar.  See issue 93.
    +      fallthroughStylePatterns.push(
    +          [PR_STRING, /^@\"(?:[^\"]|\"\")*(?:\"|$)/, null]);
    +    }
    +    if (options['hashComments']) {
    +      if (options['cStyleComments']) {
    +        // Stop C preprocessor declarations at an unclosed open comment
    +        shortcutStylePatterns.push(
    +            [PR_COMMENT, /^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,
    +             null, '#']);
    +        fallthroughStylePatterns.push(
    +            [PR_STRING,
    +             /^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
    +             null]);
    +      } else {
    +        shortcutStylePatterns.push([PR_COMMENT, /^#[^\r\n]*/, null, '#']);
    +      }
    +    }
    +    if (options['cStyleComments']) {
    +      fallthroughStylePatterns.push([PR_COMMENT, /^\/\/[^\r\n]*/, null]);
    +      fallthroughStylePatterns.push(
    +          [PR_COMMENT, /^\/\*[\s\S]*?(?:\*\/|$)/, null]);
    +    }
    +    if (options['regexLiterals']) {
    +      var REGEX_LITERAL = (
    +          // A regular expression literal starts with a slash that is
    +          // not followed by * or / so that it is not confused with
    +          // comments.
    +          '/(?=[^/*])'
    +          // and then contains any number of raw characters,
    +          + '(?:[^/\\x5B\\x5C]'
    +          // escape sequences (\x5C),
    +          +    '|\\x5C[\\s\\S]'
    +          // or non-nesting character sets (\x5B\x5D);
    +          +    '|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+'
    +          // finally closed by a /.
    +          + '/');
    +      fallthroughStylePatterns.push(
    +          ['lang-regex',
    +           new RegExp('^' + REGEXP_PRECEDER_PATTERN + '(' + REGEX_LITERAL + ')')
    +           ]);
    +    }
    +
    +    var keywords = options['keywords'].replace(/^\s+|\s+$/g, '');
    +    if (keywords.length) {
    +      fallthroughStylePatterns.push(
    +          [PR_KEYWORD,
    +           new RegExp('^(?:' + keywords.replace(/\s+/g, '|') + ')\\b'), null]);
    +    }
    +
    +    shortcutStylePatterns.push([PR_PLAIN,       /^\s+/, null, ' \r\n\t\xA0']);
    +    fallthroughStylePatterns.push(
    +        // TODO(mikesamuel): recognize non-latin letters and numerals in idents
    +        [PR_LITERAL,     /^@[a-z_$][a-z_$@0-9]*/i, null],
    +        [PR_TYPE,        /^@?[A-Z]+[a-z][A-Za-z_$@0-9]*/, null],
    +        [PR_PLAIN,       /^[a-z_$][a-z_$@0-9]*/i, null],
    +        [PR_LITERAL,
    +         new RegExp(
    +             '^(?:'
    +             // A hex number
    +             + '0x[a-f0-9]+'
    +             // or an octal or decimal number,
    +             + '|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)'
    +             // possibly in scientific notation
    +             + '(?:e[+\\-]?\\d+)?'
    +             + ')'
    +             // with an optional modifier like UL for unsigned long
    +             + '[a-z]*', 'i'),
    +         null, '0123456789'],
    +        [PR_PUNCTUATION, /^.[^\s\w\.$@\'\"\`\/\#]*/, null]);
    +
    +    return createSimpleLexer(shortcutStylePatterns, fallthroughStylePatterns);
    +  }
    +
    +  var decorateSource = sourceDecorator({
    +        'keywords': ALL_KEYWORDS,
    +        'hashComments': true,
    +        'cStyleComments': true,
    +        'multiLineStrings': true,
    +        'regexLiterals': true
    +      });
    +
    +  /** Breaks {@code job.source} around style boundaries in
    +    * {@code job.decorations} while re-interleaving {@code job.extractedTags},
    +    * and leaves the result in {@code job.prettyPrintedHtml}.
    +    * @param {Object} job like {
    +    *    source: {string} source as plain text,
    +    *    extractedTags: {Array.<number|string>} extractedTags chunks of raw
    +    *                   html preceded by their position in {@code job.source}
    +    *                   in order
    +    *    decorations: {Array.<number|string} an array of style classes preceded
    +    *                 by the position at which they start in job.source in order
    +    * }
    +    * @private
    +    */
    +  function recombineTagsAndDecorations(job) {
    +    var sourceText = job.source;
    +    var extractedTags = job.extractedTags;
    +    var decorations = job.decorations;
    +
    +    var html = [];
    +    // index past the last char in sourceText written to html
    +    var outputIdx = 0;
    +
    +    var openDecoration = null;
    +    var currentDecoration = null;
    +    var tagPos = 0;  // index into extractedTags
    +    var decPos = 0;  // index into decorations
    +    var tabExpander = makeTabExpander(window['PR_TAB_WIDTH']);
    +
    +    var adjacentSpaceRe = /([\r\n ]) /g;
    +    var startOrSpaceRe = /(^| ) /gm;
    +    var newlineRe = /\r\n?|\n/g;
    +    var trailingSpaceRe = /[ \r\n]$/;
    +    var lastWasSpace = true;  // the last text chunk emitted ended with a space.
    +
    +    // See bug 71 and http://stackoverflow.com/questions/136443/why-doesnt-ie7-
    +    var isIE678 = window['_pr_isIE6']();
    +    var lineBreakHtml = (
    +        isIE678
    +        ? (job.sourceNode.tagName === 'PRE'
    +           // Use line feeds instead of <br>s so that copying and pasting works
    +           // on IE.
    +           // Doing this on other browsers breaks lots of stuff since \r\n is
    +           // treated as two newlines on Firefox.
    +           ? (isIE678 === 6 ? '&#160;\r\n' :
    +              isIE678 === 7 ? '&#160;<br>\r' : '&#160;\r')
    +           // IE collapses multiple adjacent <br>s into 1 line break.
    +           // Prefix every newline with '&#160;' to prevent such behavior.
    +           // &nbsp; is the same as &#160; but works in XML as well as HTML.
    +           : '&#160;<br />')
    +        : '<br />');
    +
    +    // Look for a class like linenums or linenums:<n> where <n> is the 1-indexed
    +    // number of the first line.
    +    var numberLines = job.sourceNode.className.match(/\blinenums\b(?::(\d+))?/);
    +    var lineBreaker;
    +    if (numberLines) {
    +      var lineBreaks = [];
    +      for (var i = 0; i < 10; ++i) {
    +        lineBreaks[i] = lineBreakHtml + '</li><li class="L' + i + '">';
    +      }
    +      var lineNum = numberLines[1] && numberLines[1].length
    +          ? numberLines[1] - 1 : 0;  // Lines are 1-indexed
    +      html.push('<ol class="linenums"><li class="L', (lineNum) % 10, '"');
    +      if (lineNum) {
    +        html.push(' value="', lineNum + 1, '"');
    +      }
    +      html.push('>');
    +      lineBreaker = function () {
    +        var lb = lineBreaks[++lineNum % 10];
    +        // If a decoration is open, we need to close it before closing a list-item
    +        // and reopen it on the other side of the list item.
    +        return openDecoration
    +            ? ('</span>' + lb + '<span class="' + openDecoration + '">') : lb;
    +      };
    +    } else {
    +      lineBreaker = lineBreakHtml;
    +    }
    +
    +    // A helper function that is responsible for opening sections of decoration
    +    // and outputing properly escaped chunks of source
    +    function emitTextUpTo(sourceIdx) {
    +      if (sourceIdx > outputIdx) {
    +        if (openDecoration && openDecoration !== currentDecoration) {
    +          // Close the current decoration
    +          html.push('</span>');
    +          openDecoration = null;
    +        }
    +        if (!openDecoration && currentDecoration) {
    +          openDecoration = currentDecoration;
    +          html.push('<span class="', openDecoration, '">');
    +        }
    +        // This interacts badly with some wikis which introduces paragraph tags
    +        // into pre blocks for some strange reason.
    +        // It's necessary for IE though which seems to lose the preformattedness
    +        // of <pre> tags when their innerHTML is assigned.
    +        // http://stud3.tuwien.ac.at/~e0226430/innerHtmlQuirk.html
    +        // and it serves to undo the conversion of <br>s to newlines done in
    +        // chunkify.
    +        var htmlChunk = textToHtml(
    +            tabExpander(sourceText.substring(outputIdx, sourceIdx)))
    +            .replace(lastWasSpace
    +                     ? startOrSpaceRe
    +                     : adjacentSpaceRe, '$1&#160;');
    +        // Keep track of whether we need to escape space at the beginning of the
    +        // next chunk.
    +        lastWasSpace = trailingSpaceRe.test(htmlChunk);
    +        html.push(htmlChunk.replace(newlineRe, lineBreaker));
    +        outputIdx = sourceIdx;
    +      }
    +    }
    +
    +    while (true) {
    +      // Determine if we're going to consume a tag this time around.  Otherwise
    +      // we consume a decoration or exit.
    +      var outputTag;
    +      if (tagPos < extractedTags.length) {
    +        if (decPos < decorations.length) {
    +          // Pick one giving preference to extractedTags since we shouldn't open
    +          // a new style that we're going to have to immediately close in order
    +          // to output a tag.
    +          outputTag = extractedTags[tagPos] <= decorations[decPos];
    +        } else {
    +          outputTag = true;
    +        }
    +      } else {
    +        outputTag = false;
    +      }
    +      // Consume either a decoration or a tag or exit.
    +      if (outputTag) {
    +        emitTextUpTo(extractedTags[tagPos]);
    +        if (openDecoration) {
    +          // Close the current decoration
    +          html.push('</span>');
    +          openDecoration = null;
    +        }
    +        html.push(extractedTags[tagPos + 1]);
    +        tagPos += 2;
    +      } else if (decPos < decorations.length) {
    +        emitTextUpTo(decorations[decPos]);
    +        currentDecoration = decorations[decPos + 1];
    +        decPos += 2;
    +      } else {
    +        break;
    +      }
    +    }
    +    emitTextUpTo(sourceText.length);
    +    if (openDecoration) {
    +      html.push('</span>');
    +    }
    +    if (numberLines) { html.push('</li></ol>'); }
    +    job.prettyPrintedHtml = html.join('');
    +  }
    +
    +  /** Maps language-specific file extensions to handlers. */
    +  var langHandlerRegistry = {};
    +  /** Register a language handler for the given file extensions.
    +    * @param {function (Object)} handler a function from source code to a list
    +    *      of decorations.  Takes a single argument job which describes the
    +    *      state of the computation.   The single parameter has the form
    +    *      {@code {
    +    *        source: {string} as plain text.
    +    *        decorations: {Array.<number|string>} an array of style classes
    +    *                     preceded by the position at which they start in
    +    *                     job.source in order.
    +    *                     The language handler should assigned this field.
    +    *        basePos: {int} the position of source in the larger source chunk.
    +    *                 All positions in the output decorations array are relative
    +    *                 to the larger source chunk.
    +    *      } }
    +    * @param {Array.<string>} fileExtensions
    +    */
    +  function registerLangHandler(handler, fileExtensions) {
    +    for (var i = fileExtensions.length; --i >= 0;) {
    +      var ext = fileExtensions[i];
    +      if (!langHandlerRegistry.hasOwnProperty(ext)) {
    +        langHandlerRegistry[ext] = handler;
    +      } else if ('console' in window) {
    +        console['warn']('cannot override language handler %s', ext);
    +      }
    +    }
    +  }
    +  function langHandlerForExtension(extension, source) {
    +    if (!(extension && langHandlerRegistry.hasOwnProperty(extension))) {
    +      // Treat it as markup if the first non whitespace character is a < and
    +      // the last non-whitespace character is a >.
    +      extension = /^\s*</.test(source)
    +          ? 'default-markup'
    +          : 'default-code';
    +    }
    +    return langHandlerRegistry[extension];
    +  }
    +  registerLangHandler(decorateSource, ['default-code']);
    +  registerLangHandler(
    +      createSimpleLexer(
    +          [],
    +          [
    +           [PR_PLAIN,       /^[^<?]+/],
    +           [PR_DECLARATION, /^<!\w[^>]*(?:>|$)/],
    +           [PR_COMMENT,     /^<\!--[\s\S]*?(?:-\->|$)/],
    +           // Unescaped content in an unknown language
    +           ['lang-',        /^<\?([\s\S]+?)(?:\?>|$)/],
    +           ['lang-',        /^<%([\s\S]+?)(?:%>|$)/],
    +           [PR_PUNCTUATION, /^(?:<[%?]|[%?]>)/],
    +           ['lang-',        /^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],
    +           // Unescaped content in javascript.  (Or possibly vbscript).
    +           ['lang-js',      /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
    +           // Contains unescaped stylesheet content
    +           ['lang-css',     /^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],
    +           ['lang-in.tag',  /^(<\/?[a-z][^<>]*>)/i]
    +          ]),
    +      ['default-markup', 'htm', 'html', 'mxml', 'xhtml', 'xml', 'xsl']);
    +  registerLangHandler(
    +      createSimpleLexer(
    +          [
    +           [PR_PLAIN,        /^[\s]+/, null, ' \t\r\n'],
    +           [PR_ATTRIB_VALUE, /^(?:\"[^\"]*\"?|\'[^\']*\'?)/, null, '\"\'']
    +           ],
    +          [
    +           [PR_TAG,          /^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],
    +           [PR_ATTRIB_NAME,  /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
    +           ['lang-uq.val',   /^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],
    +           [PR_PUNCTUATION,  /^[=<>\/]+/],
    +           ['lang-js',       /^on\w+\s*=\s*\"([^\"]+)\"/i],
    +           ['lang-js',       /^on\w+\s*=\s*\'([^\']+)\'/i],
    +           ['lang-js',       /^on\w+\s*=\s*([^\"\'>\s]+)/i],
    +           ['lang-css',      /^style\s*=\s*\"([^\"]+)\"/i],
    +           ['lang-css',      /^style\s*=\s*\'([^\']+)\'/i],
    +           ['lang-css',      /^style\s*=\s*([^\"\'>\s]+)/i]
    +           ]),
    +      ['in.tag']);
    +  registerLangHandler(
    +      createSimpleLexer([], [[PR_ATTRIB_VALUE, /^[\s\S]+/]]), ['uq.val']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': CPP_KEYWORDS,
    +          'hashComments': true,
    +          'cStyleComments': true
    +        }), ['c', 'cc', 'cpp', 'cxx', 'cyc', 'm']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': 'null true false'
    +        }), ['json']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': CSHARP_KEYWORDS,
    +          'hashComments': true,
    +          'cStyleComments': true,
    +          'verbatimStrings': true
    +        }), ['cs']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': JAVA_KEYWORDS,
    +          'cStyleComments': true
    +        }), ['java']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': SH_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true
    +        }), ['bsh', 'csh', 'sh']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': PYTHON_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'tripleQuotedStrings': true
    +        }), ['cv', 'py']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': PERL_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'regexLiterals': true
    +        }), ['perl', 'pl', 'pm']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': RUBY_KEYWORDS,
    +          'hashComments': true,
    +          'multiLineStrings': true,
    +          'regexLiterals': true
    +        }), ['rb']);
    +  registerLangHandler(sourceDecorator({
    +          'keywords': JSCRIPT_KEYWORDS,
    +          'cStyleComments': true,
    +          'regexLiterals': true
    +        }), ['js']);
    +  registerLangHandler(
    +      createSimpleLexer([], [[PR_STRING, /^[\s\S]+/]]), ['regex']);
    +
    +  function applyDecorator(job) {
    +    var sourceCodeHtml = job.sourceCodeHtml;
    +    var opt_langExtension = job.langExtension;
    +
    +    // Prepopulate output in case processing fails with an exception.
    +    job.prettyPrintedHtml = sourceCodeHtml;
    +
    +    try {
    +      // Extract tags, and convert the source code to plain text.
    +      var sourceAndExtractedTags = extractTags(sourceCodeHtml);
    +      /** Plain text. @type {string} */
    +      var source = sourceAndExtractedTags.source;
    +      job.source = source;
    +      job.basePos = 0;
    +
    +      /** Even entries are positions in source in ascending order.  Odd entries
    +        * are tags that were extracted at that position.
    +        * @type {Array.<number|string>}
    +        */
    +      job.extractedTags = sourceAndExtractedTags.tags;
    +
    +      // Apply the appropriate language handler
    +      langHandlerForExtension(opt_langExtension, source)(job);
    +      // Integrate the decorations and tags back into the source code to produce
    +      // a decorated html string which is left in job.prettyPrintedHtml.
    +      recombineTagsAndDecorations(job);
    +    } catch (e) {
    +      if ('console' in window) {
    +        console['log'](e && e['stack'] ? e['stack'] : e);
    +      }
    +    }
    +  }
    +
    +  function prettyPrintOne(sourceCodeHtml, opt_langExtension) {
    +    var job = {
    +      sourceCodeHtml: sourceCodeHtml,
    +      langExtension: opt_langExtension
    +    };
    +    applyDecorator(job);
    +    return job.prettyPrintedHtml;
    +  }
    +
    +  function prettyPrint(opt_whenDone) {
    +    function byTagName(tn) { return document.getElementsByTagName(tn); }
    +    // fetch a list of nodes to rewrite
    +    var codeSegments = [byTagName('pre'), byTagName('code'), byTagName('xmp')];
    +    var elements = [];
    +    for (var i = 0; i < codeSegments.length; ++i) {
    +      for (var j = 0, n = codeSegments[i].length; j < n; ++j) {
    +        elements.push(codeSegments[i][j]);
    +      }
    +    }
    +    codeSegments = null;
    +
    +    var clock = Date;
    +    if (!clock['now']) {
    +      clock = { 'now': function () { return (new Date).getTime(); } };
    +    }
    +
    +    // The loop is broken into a series of continuations to make sure that we
    +    // don't make the browser unresponsive when rewriting a large page.
    +    var k = 0;
    +    var prettyPrintingJob;
    +
    +    function doWork() {
    +      var endTime = (window['PR_SHOULD_USE_CONTINUATION'] ?
    +                     clock.now() + 250 /* ms */ :
    +                     Infinity);
    +      for (; k < elements.length && clock.now() < endTime; k++) {
    +        var cs = elements[k];
    +        // [JACOCO] 'prettyprint' -> 'source'
    +        if (cs.className && cs.className.indexOf('source') >= 0) {
    +          // If the classes includes a language extensions, use it.
    +          // Language extensions can be specified like
    +          //     <pre class="prettyprint lang-cpp">
    +          // the language extension "cpp" is used to find a language handler as
    +          // passed to PR_registerLangHandler.
    +          var langExtension = cs.className.match(/\blang-(\w+)\b/);
    +          if (langExtension) { langExtension = langExtension[1]; }
    +
    +          // make sure this is not nested in an already prettified element
    +          var nested = false;
    +          for (var p = cs.parentNode; p; p = p.parentNode) {
    +            if ((p.tagName === 'pre' || p.tagName === 'code' ||
    +                 p.tagName === 'xmp') &&
    +                // [JACOCO] 'prettyprint' -> 'source'
    +                p.className && p.className.indexOf('source') >= 0) {
    +              nested = true;
    +              break;
    +            }
    +          }
    +          if (!nested) {
    +            // fetch the content as a snippet of properly escaped HTML.
    +            // Firefox adds newlines at the end.
    +            var content = getInnerHtml(cs);
    +            content = content.replace(/(?:\r\n?|\n)$/, '');
    +
    +            // do the pretty printing
    +            prettyPrintingJob = {
    +              sourceCodeHtml: content,
    +              langExtension: langExtension,
    +              sourceNode: cs
    +            };
    +            applyDecorator(prettyPrintingJob);
    +            replaceWithPrettyPrintedHtml();
    +          }
    +        }
    +      }
    +      if (k < elements.length) {
    +        // finish up in a continuation
    +        setTimeout(doWork, 250);
    +      } else if (opt_whenDone) {
    +        opt_whenDone();
    +      }
    +    }
    +
    +    function replaceWithPrettyPrintedHtml() {
    +      var newContent = prettyPrintingJob.prettyPrintedHtml;
    +      if (!newContent) { return; }
    +      var cs = prettyPrintingJob.sourceNode;
    +
    +      // push the prettified html back into the tag.
    +      if (!isRawContent(cs)) {
    +        // just replace the old html with the new
    +        cs.innerHTML = newContent;
    +      } else {
    +        // we need to change the tag to a <pre> since <xmp>s do not allow
    +        // embedded tags such as the span tags used to attach styles to
    +        // sections of source code.
    +        var pre = document.createElement('PRE');
    +        for (var i = 0; i < cs.attributes.length; ++i) {
    +          var a = cs.attributes[i];
    +          if (a.specified) {
    +            var aname = a.name.toLowerCase();
    +            if (aname === 'class') {
    +              pre.className = a.value;  // For IE 6
    +            } else {
    +              pre.setAttribute(a.name, a.value);
    +            }
    +          }
    +        }
    +        pre.innerHTML = newContent;
    +
    +        // remove the old
    +        cs.parentNode.replaceChild(pre, cs);
    +        cs = pre;
    +      }
    +    }
    +
    +    doWork();
    +  }
    +
    +  window['PR_normalizedHtml'] = normalizedHtml;
    +  window['prettyPrintOne'] = prettyPrintOne;
    +  window['prettyPrint'] = prettyPrint;
    +  window['PR'] = {
    +        'combinePrefixPatterns': combinePrefixPatterns,
    +        'createSimpleLexer': createSimpleLexer,
    +        'registerLangHandler': registerLangHandler,
    +        'sourceDecorator': sourceDecorator,
    +        'PR_ATTRIB_NAME': PR_ATTRIB_NAME,
    +        'PR_ATTRIB_VALUE': PR_ATTRIB_VALUE,
    +        'PR_COMMENT': PR_COMMENT,
    +        'PR_DECLARATION': PR_DECLARATION,
    +        'PR_KEYWORD': PR_KEYWORD,
    +        'PR_LITERAL': PR_LITERAL,
    +        'PR_NOCODE': PR_NOCODE,
    +        'PR_PLAIN': PR_PLAIN,
    +        'PR_PUNCTUATION': PR_PUNCTUATION,
    +        'PR_SOURCE': PR_SOURCE,
    +        'PR_STRING': PR_STRING,
    +        'PR_TAG': PR_TAG,
    +        'PR_TYPE': PR_TYPE
    +      };
    +})();
    diff --git a/deliverables/coverage/jacoco/jacoco-resources/redbar.gif b/deliverables/coverage/jacoco/jacoco-resources/redbar.gif
    new file mode 100644
    index 00000000..c2f71469
    Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/redbar.gif differ
    diff --git a/deliverables/coverage/jacoco/jacoco-resources/report.css b/deliverables/coverage/jacoco/jacoco-resources/report.css
    new file mode 100644
    index 00000000..dd936bca
    --- /dev/null
    +++ b/deliverables/coverage/jacoco/jacoco-resources/report.css
    @@ -0,0 +1,243 @@
    +body, td {
    +  font-family:sans-serif;
    +  font-size:10pt;
    +}
    +
    +h1 {
    +  font-weight:bold;
    +  font-size:18pt;
    +}
    +
    +.breadcrumb {
    +  border:#d6d3ce 1px solid;
    +  padding:2px 4px 2px 4px;
    +}
    +
    +.breadcrumb .info {
    +  float:right;
    +}
    +
    +.breadcrumb .info a {
    +  margin-left:8px;
    +}
    +
    +.el_report {
    +  padding-left:18px;
    +  background-image:url(report.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_group {
    +  padding-left:18px;
    +  background-image:url(group.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_bundle {
    +  padding-left:18px;
    +  background-image:url(bundle.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_package {
    +  padding-left:18px;
    +  background-image:url(package.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_class {
    +  padding-left:18px;
    +  background-image:url(class.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_source {
    +  padding-left:18px;
    +  background-image:url(source.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_method {
    +  padding-left:18px;
    +  background-image:url(method.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +.el_session {
    +  padding-left:18px;
    +  background-image:url(session.gif);
    +  background-position:left center;
    +  background-repeat:no-repeat;
    +}
    +
    +pre.source {
    +  border:#d6d3ce 1px solid;
    +  font-family:monospace;
    +}
    +
    +pre.source ol {
    +  margin-bottom: 0px;
    +  margin-top: 0px;
    +}
    +
    +pre.source li {
    +  border-left: 1px solid #D6D3CE;
    +  color: #A0A0A0;
    +  padding-left: 0px;
    +}
    +
    +pre.source span.fc {
    +  background-color:#ccffcc;
    +}
    +
    +pre.source span.nc {
    +  background-color:#ffaaaa;
    +}
    +
    +pre.source span.pc {
    +  background-color:#ffffcc;
    +}
    +
    +pre.source span.bfc {
    +  background-image: url(branchfc.gif);
    +  background-repeat: no-repeat;
    +  background-position: 2px center;
    +}
    +
    +pre.source span.bfc:hover {
    +  background-color:#80ff80;
    +}
    +
    +pre.source span.bnc {
    +  background-image: url(branchnc.gif);
    +  background-repeat: no-repeat;
    +  background-position: 2px center;
    +}
    +
    +pre.source span.bnc:hover {
    +  background-color:#ff8080;
    +}
    +
    +pre.source span.bpc {
    +  background-image: url(branchpc.gif);
    +  background-repeat: no-repeat;
    +  background-position: 2px center;
    +}
    +
    +pre.source span.bpc:hover {
    +  background-color:#ffff80;
    +}
    +
    +table.coverage {
    +  empty-cells:show;
    +  border-collapse:collapse;
    +}
    +
    +table.coverage thead {
    +  background-color:#e0e0e0;
    +}
    +
    +table.coverage thead td {
    +  white-space:nowrap;
    +  padding:2px 14px 0px 6px;
    +  border-bottom:#b0b0b0 1px solid;
    +}
    +
    +table.coverage thead td.bar {
    +  border-left:#cccccc 1px solid;
    +}
    +
    +table.coverage thead td.ctr1 {
    +  text-align:right;
    +  border-left:#cccccc 1px solid;
    +}
    +
    +table.coverage thead td.ctr2 {
    +  text-align:right;
    +  padding-left:2px;
    +}
    +
    +table.coverage thead td.sortable {
    +  cursor:pointer;
    +  background-image:url(sort.gif);
    +  background-position:right center;
    +  background-repeat:no-repeat;
    +}
    +
    +table.coverage thead td.up {
    +  background-image:url(up.gif);
    +}
    +
    +table.coverage thead td.down {
    +  background-image:url(down.gif);
    +}
    +
    +table.coverage tbody td {
    +  white-space:nowrap;
    +  padding:2px 6px 2px 6px;
    +  border-bottom:#d6d3ce 1px solid;
    +}
    +
    +table.coverage tbody tr:hover {
    +  background: #f0f0d0 !important;
    +}
    +
    +table.coverage tbody td.bar {
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tbody td.ctr1 {
    +  text-align:right;
    +  padding-right:14px;
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tbody td.ctr2 {
    +  text-align:right;
    +  padding-right:14px;
    +  padding-left:2px;
    +}
    +
    +table.coverage tfoot td {
    +  white-space:nowrap;
    +  padding:2px 6px 2px 6px;
    +}
    +
    +table.coverage tfoot td.bar {
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tfoot td.ctr1 {
    +  text-align:right;
    +  padding-right:14px;
    +  border-left:#e8e8e8 1px solid;
    +}
    +
    +table.coverage tfoot td.ctr2 {
    +  text-align:right;
    +  padding-right:14px;
    +  padding-left:2px;
    +}
    +
    +.footer {
    +  margin-top:20px;
    +  border-top:#d6d3ce 1px solid;
    +  padding-top:2px;
    +  font-size:8pt;
    +  color:#a0a0a0;
    +}
    +
    +.footer a {
    +  color:#a0a0a0;
    +}
    +
    +.right {
    +  float:right;
    +}
    diff --git a/deliverables/coverage/jacoco/jacoco-resources/report.gif b/deliverables/coverage/jacoco/jacoco-resources/report.gif
    new file mode 100644
    index 00000000..8547be50
    Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/report.gif differ
    diff --git a/deliverables/coverage/jacoco/jacoco-resources/session.gif b/deliverables/coverage/jacoco/jacoco-resources/session.gif
    new file mode 100644
    index 00000000..0151bad8
    Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/session.gif differ
    diff --git a/deliverables/coverage/jacoco/jacoco-resources/sort.gif b/deliverables/coverage/jacoco/jacoco-resources/sort.gif
    new file mode 100644
    index 00000000..6757c2c3
    Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/sort.gif differ
    diff --git a/deliverables/coverage/jacoco/jacoco-resources/sort.js b/deliverables/coverage/jacoco/jacoco-resources/sort.js
    new file mode 100644
    index 00000000..e269fe3d
    --- /dev/null
    +++ b/deliverables/coverage/jacoco/jacoco-resources/sort.js
    @@ -0,0 +1,148 @@
    +/*******************************************************************************
    + * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors
    + * This program and the accompanying materials are made available under
    + * the terms of the Eclipse Public License 2.0 which is available at
    + * http://www.eclipse.org/legal/epl-2.0
    + *
    + * SPDX-License-Identifier: EPL-2.0
    + *
    + * Contributors:
    + *    Marc R. Hoffmann - initial API and implementation
    + *
    + *******************************************************************************/
    +
    +(function () {
    +
    +  /**
    +   * Sets the initial sorting derived from the hash.
    +   *
    +   * @param linkelementids
    +   *          list of element ids to search for links to add sort inidcator
    +   *          hash links
    +   */
    +  function initialSort(linkelementids) {
    +    window.linkelementids = linkelementids;
    +    var hash = window.location.hash;
    +    if (hash) {
    +      var m = hash.match(/up-./);
    +      if (m) {
    +        var header = window.document.getElementById(m[0].charAt(3));
    +        if (header) {
    +          sortColumn(header, true);
    +        }
    +        return;
    +      }
    +      var m = hash.match(/dn-./);
    +      if (m) {
    +        var header = window.document.getElementById(m[0].charAt(3));
    +        if (header) {
    +          sortColumn(header, false);
    +        }
    +        return
    +      }
    +    }
    +  }
    +
    +  /**
    +   * Sorts the columns with the given header dependening on the current sort state.
    +   */
    +  function toggleSort(header) {
    +    var sortup = header.className.indexOf('down ') == 0;
    +    sortColumn(header, sortup);
    +  }
    +
    +  /**
    +   * Sorts the columns with the given header in the given direction.
    +   */
    +  function sortColumn(header, sortup) {
    +    var table = header.parentNode.parentNode.parentNode;
    +    var body = table.tBodies[0];
    +    var colidx = getNodePosition(header);
    +
    +    resetSortedStyle(table);
    +
    +    var rows = body.rows;
    +    var sortedrows = [];
    +    for (var i = 0; i < rows.length; i++) {
    +      r = rows[i];
    +      sortedrows[parseInt(r.childNodes[colidx].id.slice(1))] = r;
    +    }
    +
    +    var hash;
    +
    +    if (sortup) {
    +      for (var i = sortedrows.length - 1; i >= 0; i--) {
    +        body.appendChild(sortedrows[i]);
    +      }
    +      header.className = 'up ' + header.className;
    +      hash = 'up-' + header.id;
    +    } else {
    +      for (var i = 0; i < sortedrows.length; i++) {
    +        body.appendChild(sortedrows[i]);
    +      }
    +      header.className = 'down ' + header.className;
    +      hash = 'dn-' + header.id;
    +    }
    +
    +    setHash(hash);
    +  }
    +
    +  /**
    +   * Adds the sort indicator as a hash to the document URL and all links.
    +   */
    +  function setHash(hash) {
    +    window.document.location.hash = hash;
    +    ids = window.linkelementids;
    +    for (var i = 0; i < ids.length; i++) {
    +        setHashOnAllLinks(document.getElementById(ids[i]), hash);
    +    }
    +  }
    +
    +  /**
    +   * Extend all links within the given tag with the given hash.
    +   */
    +  function setHashOnAllLinks(tag, hash) {
    +    links = tag.getElementsByTagName("a");
    +    for (var i = 0; i < links.length; i++) {
    +        var a = links[i];
    +        var href = a.href;
    +        var hashpos = href.indexOf("#");
    +        if (hashpos != -1) {
    +            href = href.substring(0, hashpos);
    +        }
    +        a.href = href + "#" + hash;
    +    }
    +  }
    +
    +  /**
    +   * Calculates the position of a element within its parent.
    +   */
    +  function getNodePosition(element) {
    +    var pos = -1;
    +    while (element) {
    +      element = element.previousSibling;
    +      pos++;
    +    }
    +    return pos;
    +  }
    +
    +  /**
    +   * Remove the sorting indicator style from all headers.
    +   */
    +  function resetSortedStyle(table) {
    +    for (var c = table.tHead.firstChild.firstChild; c; c = c.nextSibling) {
    +      if (c.className) {
    +        if (c.className.indexOf('down ') == 0) {
    +          c.className = c.className.slice(5);
    +        }
    +        if (c.className.indexOf('up ') == 0) {
    +          c.className = c.className.slice(3);
    +        }
    +      }
    +    }
    +  }
    +
    +  window['initialSort'] = initialSort;
    +  window['toggleSort'] = toggleSort;
    +
    +})();
    diff --git a/deliverables/coverage/jacoco/jacoco-resources/source.gif b/deliverables/coverage/jacoco/jacoco-resources/source.gif
    new file mode 100644
    index 00000000..b226e41c
    Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/source.gif differ
    diff --git a/deliverables/coverage/jacoco/jacoco-resources/up.gif b/deliverables/coverage/jacoco/jacoco-resources/up.gif
    new file mode 100644
    index 00000000..58ed2166
    Binary files /dev/null and b/deliverables/coverage/jacoco/jacoco-resources/up.gif differ
    diff --git a/deliverables/coverage/jacoco/jacoco-sessions.html b/deliverables/coverage/jacoco/jacoco-sessions.html
    new file mode 100644
    index 00000000..5914cc6c
    --- /dev/null
    +++ b/deliverables/coverage/jacoco/jacoco-sessions.html
    @@ -0,0 +1 @@
    +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>Sessions</title></head><body><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><a href="index.html" class="el_report">is23am10</a> &gt; <span class="el_session">Sessions</span></div><h1>Sessions</h1><p>This coverage report is based on execution data from the following sessions:</p><table class="coverage" cellspacing="0"><thead><tr><td>Session</td><td>Start Time</td><td>Dump Time</td></tr></thead><tbody><tr><td><span class="el_session">fbxpsmbp.local-4881f0b0</span></td><td>Jun 30, 2023, 9:08:02 AM</td><td>Jun 30, 2023, 9:08:17 AM</td></tr></tbody></table><p>Execution data for the following classes is considered in this report:</p><table class="coverage" cellspacing="0"><thead><tr><td>Class</td><td>Id</td></tr></thead><tbody><tr><td><span class="el_class">com.google.gson.FieldNamingPolicy</span></td><td><code>0a431b7ccf188940</code></td></tr><tr><td><span class="el_class">com.google.gson.FieldNamingPolicy.1</span></td><td><code>74e60530f9dfd5a6</code></td></tr><tr><td><span class="el_class">com.google.gson.FieldNamingPolicy.2</span></td><td><code>cca6591a7aa10fd3</code></td></tr><tr><td><span class="el_class">com.google.gson.FieldNamingPolicy.3</span></td><td><code>a2f613527e2eaacb</code></td></tr><tr><td><span class="el_class">com.google.gson.FieldNamingPolicy.4</span></td><td><code>25ad3abbe4ffbf08</code></td></tr><tr><td><span class="el_class">com.google.gson.FieldNamingPolicy.5</span></td><td><code>f93cdbb054f52c88</code></td></tr><tr><td><span class="el_class">com.google.gson.FieldNamingPolicy.6</span></td><td><code>2a1206b1c4908ca0</code></td></tr><tr><td><span class="el_class">com.google.gson.FieldNamingPolicy.7</span></td><td><code>35873bf09a0f69ab</code></td></tr><tr><td><span class="el_class">com.google.gson.Gson</span></td><td><code>da3bd92272cbd456</code></td></tr><tr><td><span class="el_class">com.google.gson.Gson.1</span></td><td><code>f6cd4ad1d61de94a</code></td></tr><tr><td><span class="el_class">com.google.gson.Gson.2</span></td><td><code>048c0886544ac3bd</code></td></tr><tr><td><span class="el_class">com.google.gson.Gson.4</span></td><td><code>adeea904026d13b5</code></td></tr><tr><td><span class="el_class">com.google.gson.Gson.5</span></td><td><code>ea095da195b9b882</code></td></tr><tr><td><span class="el_class">com.google.gson.Gson.FutureTypeAdapter</span></td><td><code>a097e08cbf64be63</code></td></tr><tr><td><span class="el_class">com.google.gson.GsonBuilder</span></td><td><code>20ea51d3d47bfe98</code></td></tr><tr><td><span class="el_class">com.google.gson.JsonElement</span></td><td><code>8e68bfe2990b6166</code></td></tr><tr><td><span class="el_class">com.google.gson.JsonObject</span></td><td><code>c74b674fddf98884</code></td></tr><tr><td><span class="el_class">com.google.gson.JsonParseException</span></td><td><code>be88b75c0bdd5322</code></td></tr><tr><td><span class="el_class">com.google.gson.JsonPrimitive</span></td><td><code>cb19b4b84588590d</code></td></tr><tr><td><span class="el_class">com.google.gson.LongSerializationPolicy</span></td><td><code>0383e8018575dd2d</code></td></tr><tr><td><span class="el_class">com.google.gson.LongSerializationPolicy.1</span></td><td><code>cff239f5198750ee</code></td></tr><tr><td><span class="el_class">com.google.gson.LongSerializationPolicy.2</span></td><td><code>f8175a77e442ec4a</code></td></tr><tr><td><span class="el_class">com.google.gson.ReflectionAccessFilter.FilterResult</span></td><td><code>8c9e6e5c775020a6</code></td></tr><tr><td><span class="el_class">com.google.gson.ToNumberPolicy</span></td><td><code>6b3f5eb48341c0f7</code></td></tr><tr><td><span class="el_class">com.google.gson.ToNumberPolicy.1</span></td><td><code>3e28bcbd9e18f906</code></td></tr><tr><td><span class="el_class">com.google.gson.ToNumberPolicy.2</span></td><td><code>9ed1f6c68a8f7a31</code></td></tr><tr><td><span class="el_class">com.google.gson.ToNumberPolicy.3</span></td><td><code>78745d4a07673284</code></td></tr><tr><td><span class="el_class">com.google.gson.ToNumberPolicy.4</span></td><td><code>4f0bc632663193b9</code></td></tr><tr><td><span class="el_class">com.google.gson.TypeAdapter</span></td><td><code>7a64c3a789da42ac</code></td></tr><tr><td><span class="el_class">com.google.gson.TypeAdapter.1</span></td><td><code>efdceb75ee487fe0</code></td></tr><tr><td><span class="el_class">com.google.gson.internal..Gson.Preconditions</span></td><td><code>c5a0b63a729bc255</code></td></tr><tr><td><span class="el_class">com.google.gson.internal..Gson.Types</span></td><td><code>075fefc736c60661</code></td></tr><tr><td><span class="el_class">com.google.gson.internal..Gson.Types.GenericArrayTypeImpl</span></td><td><code>4af431a845b6e29a</code></td></tr><tr><td><span class="el_class">com.google.gson.internal..Gson.Types.ParameterizedTypeImpl</span></td><td><code>a29dd84dfe58e0b4</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.ConstructorConstructor</span></td><td><code>e7948d4a6e742881</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.ConstructorConstructor.13</span></td><td><code>9d8e7ece98b5f4fb</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.ConstructorConstructor.19</span></td><td><code>3ddda7258ff1e73a</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.ConstructorConstructor.9</span></td><td><code>79516728ae41f3d7</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.Excluder</span></td><td><code>4d346e66e07e8a82</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.JsonReaderInternalAccess</span></td><td><code>a64aa20bd74e6d9e</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.LazilyParsedNumber</span></td><td><code>f48327fb8a1c7bbb</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.LinkedTreeMap</span></td><td><code>71d40fd220c6772e</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.LinkedTreeMap.1</span></td><td><code>14388577f2177aec</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.LinkedTreeMap.EntrySet</span></td><td><code>974c530850410222</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.LinkedTreeMap.EntrySet.1</span></td><td><code>ee9b9a378aab9fc7</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.LinkedTreeMap.LinkedTreeMapIterator</span></td><td><code>284f70de5a69bd63</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.LinkedTreeMap.Node</span></td><td><code>8403028d8ffca6d8</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.Primitives</span></td><td><code>ce797cf2bd15cce7</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.ReflectionAccessFilterHelper</span></td><td><code>14e383fb13a714c4</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.Streams</span></td><td><code>4c549020523e1b83</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.UnsafeAllocator</span></td><td><code>808b9fd504fffe3e</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.UnsafeAllocator.1</span></td><td><code>d23c39c23294d730</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.ArrayTypeAdapter</span></td><td><code>44a868616359d7c2</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.ArrayTypeAdapter.1</span></td><td><code>7a0963328ae3b822</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.CollectionTypeAdapterFactory</span></td><td><code>c89f9bd47ce9b7e4</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.CollectionTypeAdapterFactory.Adapter</span></td><td><code>5b304b7c5b05b2c8</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.DateTypeAdapter</span></td><td><code>a918f4b3cc484a9e</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.DateTypeAdapter.1</span></td><td><code>1e1e04a31853ce1a</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.DefaultDateTypeAdapter.DateType</span></td><td><code>f5c26e7a5fb2b2e3</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.DefaultDateTypeAdapter.DateType.1</span></td><td><code>5a51c2ba29853dfb</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.JsonAdapterAnnotationTypeAdapterFactory</span></td><td><code>bcd684c35ebe890f</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.JsonTreeReader</span></td><td><code>e6d559f121aca945</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.JsonTreeReader.1</span></td><td><code>4de013e8ce49d088</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.JsonTreeReader.2</span></td><td><code>5f524a5cd4ee79e5</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.MapTypeAdapterFactory</span></td><td><code>26cec4b55889fec9</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.NumberTypeAdapter</span></td><td><code>2c1c4b5a515ff5cc</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.NumberTypeAdapter.1</span></td><td><code>d669ec06e8eb62d8</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.ObjectTypeAdapter</span></td><td><code>a0d1b3562b6ad1da</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.ObjectTypeAdapter.1</span></td><td><code>39c37c9644321ab5</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.ReflectiveTypeAdapterFactory</span></td><td><code>0d13c1a2f1ec59b2</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.1</span></td><td><code>39b7a21528764da5</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.Adapter</span></td><td><code>9f10e97a066857d8</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.BoundField</span></td><td><code>6311ea5ac9b1e23f</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.FieldReflectionAdapter</span></td><td><code>386fe27afd672a9d</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.SerializationDelegatingTypeAdapter</span></td><td><code>9e9ec6ab49aab9b2</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TreeTypeAdapter</span></td><td><code>b213a171ea20c1d4</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TreeTypeAdapter.GsonContextImpl</span></td><td><code>256635e8345ba2cc</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TreeTypeAdapter.SingleTypeFactory</span></td><td><code>55705f4059759293</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper</span></td><td><code>ac5cf822186cb460</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters</span></td><td><code>3cf6f9a1586edf50</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.1</span></td><td><code>2ae19dadeff11dbe</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.10</span></td><td><code>5a87381584845381</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.11</span></td><td><code>a243fbb8a7aba34c</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.12</span></td><td><code>fe67f6f1b395ae6c</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.13</span></td><td><code>66273a0cdfa3ac71</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.14</span></td><td><code>9b7806c2dc1b05be</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.15</span></td><td><code>2af3adb5aea75163</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.16</span></td><td><code>69639ba2f5a52472</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.17</span></td><td><code>ce1de174c46287e9</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.18</span></td><td><code>eca77eb68dabd4f4</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.19</span></td><td><code>c7164cc7874c0864</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.2</span></td><td><code>56232bab96587059</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.20</span></td><td><code>6f0305af6638d64b</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.21</span></td><td><code>a9962cfefe6336c0</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.22</span></td><td><code>cc0eb6e9578978a8</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.23</span></td><td><code>2f3fc16b4a3792fe</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.24</span></td><td><code>fe6064304f8b2481</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.25</span></td><td><code>2d3db6039543d7a1</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.26</span></td><td><code>268e7fdf39fe2801</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.27</span></td><td><code>5043d45402e0c56a</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.28</span></td><td><code>3f53ce9c9ae6d154</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.29</span></td><td><code>ca40747350300a50</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.3</span></td><td><code>7c4a5e89dda44ff5</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.31</span></td><td><code>a88326082c38f744</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.32</span></td><td><code>88b8f1d696b8709c</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.33</span></td><td><code>ec31cc09bb404669</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.34</span></td><td><code>8c6d8c7d69cbdbde</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.35</span></td><td><code>d22fbffca4658ed0</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.4</span></td><td><code>476d80dfdaf927a9</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.5</span></td><td><code>e21d46a9cacad2ee</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.6</span></td><td><code>55f4d0643256bc39</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.7</span></td><td><code>264f55275d161fe1</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.8</span></td><td><code>15987f6d56f629d2</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.9</span></td><td><code>b028a26d1b82b67c</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.EnumTypeAdapter</span></td><td><code>779c132aeb8ba2e1</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.bind.TypeAdapters.EnumTypeAdapter.1</span></td><td><code>2cabfdb3d01b2a5d</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.reflect.ReflectionHelper</span></td><td><code>3193b2fabcde1eba</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.reflect.ReflectionHelper.RecordHelper</span></td><td><code>dada154aaa288ca5</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.reflect.ReflectionHelper.RecordSupportedHelper</span></td><td><code>62a4ee2a8af0afa9</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.sql.SqlDateTypeAdapter</span></td><td><code>759c80a351806a6a</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.sql.SqlDateTypeAdapter.1</span></td><td><code>5e8177dacb42fdcc</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.sql.SqlTimeTypeAdapter</span></td><td><code>c03cfadd1131b29a</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.sql.SqlTimeTypeAdapter.1</span></td><td><code>38f494c57c386f02</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.sql.SqlTimestampTypeAdapter</span></td><td><code>685ac2966df2335f</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.sql.SqlTimestampTypeAdapter.1</span></td><td><code>38e74c1f432005c2</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.sql.SqlTypesSupport</span></td><td><code>24f8c951b0c966e1</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.sql.SqlTypesSupport.1</span></td><td><code>85ef3fff6448d68a</code></td></tr><tr><td><span class="el_class">com.google.gson.internal.sql.SqlTypesSupport.2</span></td><td><code>0c921201327ae0f7</code></td></tr><tr><td><span class="el_class">com.google.gson.reflect.TypeToken</span></td><td><code>274c1e65eaca7251</code></td></tr><tr><td><span class="el_class">com.google.gson.stream.JsonReader</span></td><td><code>327227a088001db5</code></td></tr><tr><td><span class="el_class">com.google.gson.stream.JsonReader.1</span></td><td><code>06008cc20675a91c</code></td></tr><tr><td><span class="el_class">com.google.gson.stream.JsonToken</span></td><td><code>991a7375285784a1</code></td></tr><tr><td><span class="el_class">com.google.gson.stream.JsonWriter</span></td><td><code>5237887f4473c81a</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.client.Client</span></td><td><code>9993e61756204f38</code></td></tr><tr><td><a href="it.polimi.is23am10.client/Client$AlarmTask.html" class="el_class">it.polimi.is23am10.client.Client.AlarmTask</a></td><td><code>4380228a095e6877</code></td></tr><tr><td><a href="it.polimi.is23am10.client/Client$ClientGameStatus.html" class="el_class">it.polimi.is23am10.client.Client.ClientGameStatus</a></td><td><code>7410c9246e2f1ce7</code></td></tr><tr><td><a href="it.polimi.is23am10.client/Client$MessageDeserializer.html" class="el_class">it.polimi.is23am10.client.Client.MessageDeserializer</a></td><td><code>659b2923c8320491</code></td></tr><tr><td><a href="it.polimi.is23am10.client/LockObject.html" class="el_class">it.polimi.is23am10.client.LockObject</a></td><td><code>ef3224743eb55119</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.client.RMIClient</span></td><td><code>83046b9dd94b752a</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.client.RMIClientTest</span></td><td><code>505734e812c52105</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.client.userinterface.CommandLineInterface</span></td><td><code>48c5954ad49ebcda</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.client.userinterface.CommandLineInterfaceTest</span></td><td><code>61ceba15e176cc7f</code></td></tr><tr><td><a href="it.polimi.is23am10.client.userinterface.helpers/CLIStrings.html" class="el_class">it.polimi.is23am10.client.userinterface.helpers.CLIStrings</a></td><td><code>f36145454ff0a665</code></td></tr><tr><td><a href="it.polimi.is23am10.client.userinterface.helpers/OutputWrapper.html" class="el_class">it.polimi.is23am10.client.userinterface.helpers.OutputWrapper</a></td><td><code>0660ba4e62fdb82a</code></td></tr><tr><td><a href="it.polimi.is23am10.client.userinterface.helpers/OutputWrapper$OutputLevel.html" class="el_class">it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel</a></td><td><code>61d2e6f84a871391</code></td></tr><tr><td><a href="it.polimi.is23am10.client.userinterface.helpers/PrivatePatternsHelper.html" class="el_class">it.polimi.is23am10.client.userinterface.helpers.PrivatePatternsHelper</a></td><td><code>e718e975ef47164c</code></td></tr><tr><td><a href="it.polimi.is23am10.server/Server.html" class="el_class">it.polimi.is23am10.server.Server</a></td><td><code>70cb0b16bb165590</code></td></tr><tr><td><a href="it.polimi.is23am10.server/Server$ServerStatus.html" class="el_class">it.polimi.is23am10.server.Server.ServerStatus</a></td><td><code>87df82c316984e22</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.ServerTest</span></td><td><code>d84f2204fc3dc75d</code></td></tr><tr><td><a href="it.polimi.is23am10.server.command/AbstractCommand.html" class="el_class">it.polimi.is23am10.server.command.AbstractCommand</a></td><td><code>e0c5e1e2dd4343c8</code></td></tr><tr><td><a href="it.polimi.is23am10.server.command/AbstractCommand$Opcode.html" class="el_class">it.polimi.is23am10.server.command.AbstractCommand.Opcode</a></td><td><code>8de2a9a7490005b6</code></td></tr><tr><td><a href="it.polimi.is23am10.server.command/AddPlayerCommand.html" class="el_class">it.polimi.is23am10.server.command.AddPlayerCommand</a></td><td><code>b0729f3af82d6fd9</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.command.AddPlayerGameCommandTest</span></td><td><code>c026cd0fe765a5e2</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.command.AddPlayerGameCommandTest.1Utils</span></td><td><code>6dce80eebe955ff3</code></td></tr><tr><td><a href="it.polimi.is23am10.server.command/GetAvailableGamesCommand.html" class="el_class">it.polimi.is23am10.server.command.GetAvailableGamesCommand</a></td><td><code>2f741bad6f6001c1</code></td></tr><tr><td><a href="it.polimi.is23am10.server.command/MoveTilesCommand.html" class="el_class">it.polimi.is23am10.server.command.MoveTilesCommand</a></td><td><code>41f6e71cb7b3607c</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.command.MoveTilesCommandTest</span></td><td><code>dc842d3a0faafb8d</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.command.MoveTilesCommandTest.1Utils</span></td><td><code>0ac6691314c0d2f3</code></td></tr><tr><td><a href="it.polimi.is23am10.server.command/SnoozeGameTimerCommand.html" class="el_class">it.polimi.is23am10.server.command.SnoozeGameTimerCommand</a></td><td><code>f73a3813ae88dbd8</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.command.SnoozeGameTimerCommandTest</span></td><td><code>561f5c9665b009b5</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.command.SnoozeGameTimerCommandTest.1Utils</span></td><td><code>1ce8f9f695cc89b3</code></td></tr><tr><td><a href="it.polimi.is23am10.server.command/StartGameCommand.html" class="el_class">it.polimi.is23am10.server.command.StartGameCommand</a></td><td><code>7ff9492f5c1f8373</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.command.StartGameCommandTest</span></td><td><code>2991d79f271ad889</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.command.StartGameCommandTest.1Utils</span></td><td><code>1168a4843b61d2f5</code></td></tr><tr><td><a href="it.polimi.is23am10.server.controller/ClientConnectionChecker.html" class="el_class">it.polimi.is23am10.server.controller.ClientConnectionChecker</a></td><td><code>d1fc7bf022572267</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.controller.ClientConnectionCheckerTest</span></td><td><code>9f6cab7efd7c5277</code></td></tr><tr><td><a href="it.polimi.is23am10.server.controller/ServerControllerAction.html" class="el_class">it.polimi.is23am10.server.controller.ServerControllerAction</a></td><td><code>2f0114959c4b9aea</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.controller.ServerControllerActionTest</span></td><td><code>31f28c627767fa3d</code></td></tr><tr><td><a href="it.polimi.is23am10.server.controller/ServerControllerRmiBindings.html" class="el_class">it.polimi.is23am10.server.controller.ServerControllerRmiBindings</a></td><td><code>4e7385608870c63c</code></td></tr><tr><td><a href="it.polimi.is23am10.server.controller/ServerControllerSocket.html" class="el_class">it.polimi.is23am10.server.controller.ServerControllerSocket</a></td><td><code>62968333b7ac40a1</code></td></tr><tr><td><a href="it.polimi.is23am10.server.controller/ServerControllerSocket$CommandDeserializer.html" class="el_class">it.polimi.is23am10.server.controller.ServerControllerSocket.CommandDeserializer</a></td><td><code>bce6904fd046f766</code></td></tr><tr><td><a href="it.polimi.is23am10.server.controller/ServerControllerSocket$CoordinatesDeserializer.html" class="el_class">it.polimi.is23am10.server.controller.ServerControllerSocket.CoordinatesDeserializer</a></td><td><code>c95f448eab42c57e</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.controller.ServerControllerSocketTest</span></td><td><code>26ffa0bdd0c6f260</code></td></tr><tr><td><a href="it.polimi.is23am10.server.controller/ServerControllerState.html" class="el_class">it.polimi.is23am10.server.controller.ServerControllerState</a></td><td><code>cdc29384d0184931</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.controller.ServerControllerStateTest</span></td><td><code>ea54fab4799e7f0f</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.controller.TestingPurposesClass</span></td><td><code>f4cd160c191bd3ed</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.controller.TestingPurposesClass2</span></td><td><code>39d57c79f7c4d4c1</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.factory/GameFactory.html" class="el_class">it.polimi.is23am10.server.model.factory.GameFactory</a></td><td><code>a18cc710965a58bb</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.factory.GameFactoryTest</span></td><td><code>59eac7010ef98fa1</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.factory/PlayerFactory.html" class="el_class">it.polimi.is23am10.server.model.factory.PlayerFactory</a></td><td><code>c25a91646ab7179e</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.factory.PlayerFactoryTest</span></td><td><code>286e86ed5a96834e</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.factory/PrivatePatternFactory.html" class="el_class">it.polimi.is23am10.server.model.factory.PrivatePatternFactory</a></td><td><code>45bd7c351661a6ea</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.factory.PrivatePatternFactoryTest</span></td><td><code>008d5885d90db6fb</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.factory/SharedPatternFactory.html" class="el_class">it.polimi.is23am10.server.model.factory.SharedPatternFactory</a></td><td><code>69d015c01a9f8a9c</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.factory.SharedPatternFactoryTest</span></td><td><code>2896b9836845e3d7</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.game/Game.html" class="el_class">it.polimi.is23am10.server.model.game.Game</a></td><td><code>9d8fca679de5a84d</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.game/Game$GameStatus.html" class="el_class">it.polimi.is23am10.server.model.game.Game.GameStatus</a></td><td><code>539fa8a24ac40886</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.game.GameTest</span></td><td><code>b9b6bfbb7f9957a5</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.game.GameTest.ActivePlayerMoveTests</span></td><td><code>9508cbc0b066b289</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.game.GameTest.NextTurnTests</span></td><td><code>bdc480f0115d8130</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.items.board/Board.html" class="el_class">it.polimi.is23am10.server.model.items.board.Board</a></td><td><code>b6c3558ab76a8d70</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.items.board.BoardTest</span></td><td><code>d83fd4b1c38b61c2</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.items.bookshelf/Bookshelf.html" class="el_class">it.polimi.is23am10.server.model.items.bookshelf.Bookshelf</a></td><td><code>b6fa9adc169ba35b</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.items.bookshelf.BookshelfTest</span></td><td><code>d1cd046f998b4161</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.items.card/AbstractCard.html" class="el_class">it.polimi.is23am10.server.model.items.card.AbstractCard</a></td><td><code>1bf49e77da92852d</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.items.card/PrivateCard.html" class="el_class">it.polimi.is23am10.server.model.items.card.PrivateCard</a></td><td><code>bc9ad8046cffa9e0</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.items.card.PrivateCardTest</span></td><td><code>88da98325b08cc80</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.items.card/SharedCard.html" class="el_class">it.polimi.is23am10.server.model.items.card.SharedCard</a></td><td><code>ce391f55aba619de</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.items.card.SharedCardTest</span></td><td><code>50884a16a7ceaf97</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.items.scoreblock/ScoreBlock.html" class="el_class">it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock</a></td><td><code>58e18b2d28db355b</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.items.scoreblock.ScoreBlockTest</span></td><td><code>0356f74a94293830</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.items.tile/Tile.html" class="el_class">it.polimi.is23am10.server.model.items.tile.Tile</a></td><td><code>bae31742430c0f27</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.items.tile/Tile$TileType.html" class="el_class">it.polimi.is23am10.server.model.items.tile.Tile.TileType</a></td><td><code>a8929da26468862c</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.items.tile.TileTest</span></td><td><code>1b8d9e3d8c1d24ec</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.pattern/AbstractPattern.html" class="el_class">it.polimi.is23am10.server.model.pattern.AbstractPattern</a></td><td><code>252aa288acb86183</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.pattern/PrivatePattern.html" class="el_class">it.polimi.is23am10.server.model.pattern.PrivatePattern</a></td><td><code>27693433a3114a22</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.pattern/SharedPattern.html" class="el_class">it.polimi.is23am10.server.model.pattern.SharedPattern</a></td><td><code>26e37db634d73e80</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.player/Player.html" class="el_class">it.polimi.is23am10.server.model.player.Player</a></td><td><code>1c77775a82c602fd</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.player.PlayerTest</span></td><td><code>fbc1960fe3c6be45</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.player.PlayerTest.setBookshelf_tests</span></td><td><code>ee309021420cca5a</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.player.PlayerTest.setIsConnected_tests</span></td><td><code>ac3fd8847df025f9</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.player.PlayerTest.setPlayerID_tests</span></td><td><code>a20f56ac0b34b152</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.player.PlayerTest.setPrivateCard_tests</span></td><td><code>cf1a22583dd09704</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.player.PlayerTest.setScoreBlocks_tests</span></td><td><code>dbe6f6592b089013</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.player.PlayerTest.setScore_tests</span></td><td><code>ffd043eb8b7ea6de</code></td></tr><tr><td><a href="it.polimi.is23am10.server.model.score/Score.html" class="el_class">it.polimi.is23am10.server.model.score.Score</a></td><td><code>8de598432f0ea2b9</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.score.ScoreTest</span></td><td><code>d6cfcb9fdd9451a2</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.score.ScoreTest.setBookshelfPoints_tests</span></td><td><code>bd3b2a47e577c758</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.score.ScoreTest.setPrivatePoints_tests</span></td><td><code>f1d2f37d6393495d</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.model.score.ScoreTest.setScoreBlockPoints_tests</span></td><td><code>7eb4b37b5df70d24</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.gamehandler/CurrentPlayerHandler.html" class="el_class">it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler</a></td><td><code>65ac94602837146a</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.gamehandler/GameHandler.html" class="el_class">it.polimi.is23am10.server.network.gamehandler.GameHandler</a></td><td><code>7989064a3e193026</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.messages/AbstractMessage.html" class="el_class">it.polimi.is23am10.server.network.messages.AbstractMessage</a></td><td><code>a784c2659bff670d</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.messages/AbstractMessage$MessageType.html" class="el_class">it.polimi.is23am10.server.network.messages.AbstractMessage.MessageType</a></td><td><code>aeb3daeb4d218501</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.messages/AvailableGamesMessage.html" class="el_class">it.polimi.is23am10.server.network.messages.AvailableGamesMessage</a></td><td><code>d75d63af8f4ae60f</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.network.messages.AvailableGamesMessageTest</span></td><td><code>9df15c428f156fe3</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.messages/ChatMessage.html" class="el_class">it.polimi.is23am10.server.network.messages.ChatMessage</a></td><td><code>6189d711185a9162</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.network.messages.ChatMessageTest</span></td><td><code>92bfc156802fb24a</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.messages/ErrorMessage.html" class="el_class">it.polimi.is23am10.server.network.messages.ErrorMessage</a></td><td><code>bf1409e8640ee9cb</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.messages/ErrorMessage$ErrorSeverity.html" class="el_class">it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity</a></td><td><code>55b007e3c9aac813</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.messages/GameMessage.html" class="el_class">it.polimi.is23am10.server.network.messages.GameMessage</a></td><td><code>6fc535708445a4c1</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.network.messages.GameMessageTest</span></td><td><code>dafa30e729de3a6f</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.messages/SnoozeACKMessage.html" class="el_class">it.polimi.is23am10.server.network.messages.SnoozeACKMessage</a></td><td><code>f0960bf0b90e77d6</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.playerconnector/AbstractPlayerConnector.html" class="el_class">it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector</a></td><td><code>b87222f20e655bf2</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.playerconnector/PlayerConnectorRmi.html" class="el_class">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi</a></td><td><code>bcd3363bdbaedcbd</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.playerconnector/PlayerConnectorSocket.html" class="el_class">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket</a></td><td><code>0d3f0b1459ffc373</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocketTest</span></td><td><code>1ff2fbc42f6c17a9</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.virtualview/VirtualPlayer.html" class="el_class">it.polimi.is23am10.server.network.virtualview.VirtualPlayer</a></td><td><code>541fc5ab1c3c95c8</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.network.virtualview.VirtualPlayerTest</span></td><td><code>41052deacad1c24d</code></td></tr><tr><td><a href="it.polimi.is23am10.server.network.virtualview/VirtualView.html" class="el_class">it.polimi.is23am10.server.network.virtualview.VirtualView</a></td><td><code>245f611f14947083</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.server.network.virtualview.VirtualViewTest</span></td><td><code>8ac5280c4ceef5f6</code></td></tr><tr><td><a href="it.polimi.is23am10.utils/ArgParser.html" class="el_class">it.polimi.is23am10.utils.ArgParser</a></td><td><code>51dbcbeca1ab781c</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.utils.ArgParserTest</span></td><td><code>a3c4bf4c581ec6bc</code></td></tr><tr><td><a href="it.polimi.is23am10.utils/CommandSyntaxValidator.html" class="el_class">it.polimi.is23am10.utils.CommandSyntaxValidator</a></td><td><code>9c406ce48bf28f49</code></td></tr><tr><td><a href="it.polimi.is23am10.utils/Coordinates.html" class="el_class">it.polimi.is23am10.utils.Coordinates</a></td><td><code>a3620d554e5dd783</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.utils.CoordinatesTest</span></td><td><code>f14238ccc8cab9a0</code></td></tr><tr><td><a href="it.polimi.is23am10.utils/IndexValidator.html" class="el_class">it.polimi.is23am10.utils.IndexValidator</a></td><td><code>5a71934772c8624d</code></td></tr><tr><td><a href="it.polimi.is23am10.utils/MoveTileCommandTypeAdaptor.html" class="el_class">it.polimi.is23am10.utils.MoveTileCommandTypeAdaptor</a></td><td><code>b5041936bcd2ffc9</code></td></tr><tr><td><a href="it.polimi.is23am10.utils/MovesValidator.html" class="el_class">it.polimi.is23am10.utils.MovesValidator</a></td><td><code>df480e26672357d2</code></td></tr><tr><td><span class="el_class">it.polimi.is23am10.utils.MovesValidatorTest</span></td><td><code>8b4e87a2b66941de</code></td></tr><tr><td><a href="it.polimi.is23am10.utils/ThreadLocalTypeAdapterFactory.html" class="el_class">it.polimi.is23am10.utils.ThreadLocalTypeAdapterFactory</a></td><td><code>ee5621ed344ffcf8</code></td></tr><tr><td><a href="it.polimi.is23am10.utils.config/AppConfig.html" class="el_class">it.polimi.is23am10.utils.config.AppConfig</a></td><td><code>eb4e53a005bdcce1</code></td></tr><tr><td><a href="it.polimi.is23am10.utils.config/AppConfigContext.html" class="el_class">it.polimi.is23am10.utils.config.AppConfigContext</a></td><td><code>e511423ee6d953ad</code></td></tr><tr><td><span class="el_class">net.bytebuddy.ByteBuddy</span></td><td><code>33fbc0829b8e2652</code></td></tr><tr><td><span class="el_class">net.bytebuddy.ClassFileVersion</span></td><td><code>041e75a4a43bf8ae</code></td></tr><tr><td><span class="el_class">net.bytebuddy.ClassFileVersion.VersionLocator.Resolved</span></td><td><code>5a5903eaf399d371</code></td></tr><tr><td><span class="el_class">net.bytebuddy.ClassFileVersion.VersionLocator.Resolver</span></td><td><code>ffb81456e25e396b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.NamingStrategy.AbstractBase</span></td><td><code>77e9d686c976f6e6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.NamingStrategy.Suffixing</span></td><td><code>65bfa03c85847dc9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.NamingStrategy.Suffixing.BaseNameResolver.ForUnnamedType</span></td><td><code>1fb9c5c929a4a173</code></td></tr><tr><td><span class="el_class">net.bytebuddy.NamingStrategy.SuffixingRandom</span></td><td><code>cdbdedcf0cea0a02</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache</span></td><td><code>d02df3631a17fa08</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.LookupKey</span></td><td><code>b75da15a4577d948</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.SimpleKey</span></td><td><code>99731a44c3f39c30</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.Sort</span></td><td><code>3f135d4f310abf3c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.Sort.1</span></td><td><code>3be4336e35a8cbfd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.Sort.2</span></td><td><code>5a2bb9e71930a24a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.Sort.3</span></td><td><code>5792db85826ac4ba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.StorageKey</span></td><td><code>da984e48de27d4a8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.TypeCache.WithInlineExpunction</span></td><td><code>5c74d69cd94d649e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent</span></td><td><code>7fa0190673c20040</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AgentProvider.ForByteBuddyAgent</span></td><td><code>0c894a2c3ae8b2ed</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider</span></td><td><code>7348981c226dbebf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.Accessor.ExternalAttachment</span></td><td><code>ba00f5cc53879568</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.Accessor.Simple</span></td><td><code>e88afdf7d8d93ed3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.Accessor.Simple.WithExternalAttachment</span></td><td><code>b765b3190a115c4d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.Compound</span></td><td><code>4b36aeefa3b691c9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.ForEmulatedAttachment</span></td><td><code>5ff89573289ab57e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.ForJ9Vm</span></td><td><code>ee3230ce9b232f68</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.ForModularizedVm</span></td><td><code>9b35baec826fa0cd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.ForStandardToolsJarVm</span></td><td><code>f6b5ee0e96160b35</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentProvider.ForUserDefinedToolsJar</span></td><td><code>deb2985d6cd61567</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentTypeEvaluator.ForJava9CapableVm</span></td><td><code>6cb8c094fed3d73c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.AttachmentTypeEvaluator.InstallationAction</span></td><td><code>cda14c5d25fd4ecf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.ProcessProvider.ForCurrentVm</span></td><td><code>93c1da771dd80b20</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.ByteBuddyAgent.ProcessProvider.ForCurrentVm.ForJava9CapableVm</span></td><td><code>9d16d8dc1e140719</code></td></tr><tr><td><span class="el_class">net.bytebuddy.agent.Installer</span></td><td><code>9e98232f904ea6a2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice</span></td><td><code>fafdd893a19dbad9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.AdviceVisitor</span></td><td><code>7025a428f7490ad4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.AdviceVisitor.WithExitAdvice</span></td><td><code>5fa667402c54a559</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.AdviceVisitor.WithExitAdvice.WithoutExceptionHandling</span></td><td><code>bf5834801b966349</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.Factory</span></td><td><code>675a8582ed3da293</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.Factory.1</span></td><td><code>7b8bcf7fdb9b497b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.Factory.2</span></td><td><code>74df22636d916b49</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.ForAdvice.Default</span></td><td><code>1c56fd85e2480b98</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.ForAdvice.Default.ForMethodEnter</span></td><td><code>e936fa57bcb852d7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.ForAdvice.Default.ForMethodExit</span></td><td><code>fafea68fdd8868ee</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.ForInstrumentedMethod.Default</span></td><td><code>124ad30aaa8eeb73</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ArgumentHandler.ForInstrumentedMethod.Default.Copying</span></td><td><code>8f2d1a89ff75f32a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Delegator.ForStaticInvocation</span></td><td><code>a2e31f4f9dd35c00</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher</span></td><td><code>f0c022f5292e6e54</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inactive</span></td><td><code>5c79705b78d16cd3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining</span></td><td><code>a6102f4b3c541b37</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.CodeTranslationVisitor</span></td><td><code>2960a4fba85953e9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved</span></td><td><code>afab472eb02fd06b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner</span></td><td><code>0ac38028e712aed4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableCollector</span></td><td><code>c57bceb91f7680ac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableExtractor</span></td><td><code>e3ae1fbe92f123ff</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.AdviceMethodInliner.ExceptionTableSubstitutor</span></td><td><code>24de5ad83ff95941</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.ForMethodEnter</span></td><td><code>9e626265aa4c58db</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.ForMethodEnter.WithRetainedEnterType</span></td><td><code>90173d5aad081d9d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.ForMethodExit</span></td><td><code>932817e030770ab7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Inlining.Resolved.ForMethodExit.WithoutExceptionHandler</span></td><td><code>cdf847b5843efb47</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.Disabled</span></td><td><code>c25c598d163fb91d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForType</span></td><td><code>e1b9329fabf51d4e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue</span></td><td><code>93080d0a6dae30eb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.1</span></td><td><code>f79505e9a338c4d3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.2</span></td><td><code>c4c8e5d55e9ab235</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.3</span></td><td><code>5eb29a01e7570709</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.4</span></td><td><code>9d38ad2107c03939</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.5</span></td><td><code>17feeab07d60c784</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.Bound</span></td><td><code>a4e307e978dad70a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.ForValue.Inverted</span></td><td><code>d9bc35c25cb11f76</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.RelocationHandler.Relocation.ForLabel</span></td><td><code>45f656de0249fec7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.Resolved.AbstractBase</span></td><td><code>7bdce7ad00043984</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.SuppressionHandler.NoOp</span></td><td><code>1fef3c25331ab4f5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.Dispatcher.SuppressionHandler.Suppressing</span></td><td><code>f3c47fadf7d411f4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ExceptionHandler.Default</span></td><td><code>2f43d03d2f9527b9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ExceptionHandler.Default.1</span></td><td><code>aec0799e8eaf7bff</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ExceptionHandler.Default.2</span></td><td><code>20d5f4a2a290ca05</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.ExceptionHandler.Default.3</span></td><td><code>6d8f88b219dc2eae</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.MethodSizeHandler.Default</span></td><td><code>0baba0eeb6cf1ccf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.MethodSizeHandler.Default.ForAdvice</span></td><td><code>450fe9607d371d6d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.MethodSizeHandler.Default.WithCopiedArguments</span></td><td><code>1306a7ff5b0b37ac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.NoExceptionHandler</span></td><td><code>ef9f2c7804bbd8e9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Factory.AdviceType</span></td><td><code>7cf85d7543073f8d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Factory.Illegal</span></td><td><code>c915bc623dcf01a2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForAllArguments</span></td><td><code>f43d6c57c575f860</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForAllArguments.Factory</span></td><td><code>2ba601c5887fe50f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForArgument</span></td><td><code>8cf02ef758f7bcd9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForArgument.Unresolved</span></td><td><code>ecfc45734efbc156</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForArgument.Unresolved.Factory</span></td><td><code>8469eb6d43c7f87d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForEnterValue</span></td><td><code>e660b7655c99824a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForEnterValue.Factory</span></td><td><code>f094fc5d44d2ecbe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForExitValue.Factory</span></td><td><code>4c438f3c5a7a62dd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForField.Unresolved.Factory</span></td><td><code>c13cc0f9d584a810</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedMethod</span></td><td><code>4a4339ac782ec09d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedMethod.1</span></td><td><code>8693b8b0c27867cf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedMethod.2</span></td><td><code>0a98f50c50e4c3a9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedMethod.3</span></td><td><code>a4a61fb36513bb99</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForInstrumentedType</span></td><td><code>1f8472d5c76be6e1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForLocalValue.Factory</span></td><td><code>3be913460ef28b5b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForOrigin.Factory</span></td><td><code>82a9765c524294d5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForReturnValue</span></td><td><code>c3102930e7fb8f10</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForReturnValue.Factory</span></td><td><code>c3224dbed95a5997</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForStackManipulation</span></td><td><code>3c0f85f84946de37</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForStackManipulation.Factory</span></td><td><code>77582c7f44a326cb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForStubValue</span></td><td><code>5a1e03839b1f9362</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForThisReference</span></td><td><code>7739fb722712dc5d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForThisReference.Factory</span></td><td><code>6e96c7c77f079280</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForThrowable.Factory</span></td><td><code>cabf31660599662f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.ForUnusedValue.Factory</span></td><td><code>995c0693e5832a84</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Sort</span></td><td><code>96402809ba83de58</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Sort.1</span></td><td><code>97beb52a2377c93a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Sort.2</span></td><td><code>18719c98f7858c4e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForArray</span></td><td><code>0d85aa6b490e1f31</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForArray.ReadOnly</span></td><td><code>f34cd325f7bd9ab5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForDefaultValue</span></td><td><code>27027067bd626366</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForDefaultValue.ReadWrite</span></td><td><code>922d546b593c91a6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForStackManipulation</span></td><td><code>c08b1854f6484cf6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForVariable</span></td><td><code>1cd71b18dbb6101a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForVariable.ReadOnly</span></td><td><code>993f2ea5d00f838e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.OffsetMapping.Target.ForVariable.ReadWrite</span></td><td><code>2db8333c6a9c37da</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.PostProcessor.NoOp</span></td><td><code>0af281f0decaf29b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default</span></td><td><code>7e50d1dcc8281f3b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.ForAdvice</span></td><td><code>3a5b606c29e1654b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.Initialization</span></td><td><code>85648c93a1ca5b45</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.Initialization.1</span></td><td><code>8ff4f0d125996175</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.Initialization.2</span></td><td><code>8681990e800405d8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.TranslationMode</span></td><td><code>9d23279c15db7ab1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.TranslationMode.1</span></td><td><code>6e7a4c6f6bb8132d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.TranslationMode.2</span></td><td><code>7afc2433cc827a61</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.TranslationMode.3</span></td><td><code>1b5d4a112a787b3f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.WithPreservedArguments</span></td><td><code>fd7caa3b03568b4b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.StackMapFrameHandler.Default.WithPreservedArguments.WithArgumentCopy</span></td><td><code>dda00c20a142c15a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.Advice.WithCustomMapping</span></td><td><code>96f4473ad7d9a153</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.AbstractBase</span></td><td><code>3cd03b050731d22c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.Compound</span></td><td><code>7b1e520e5f4262e6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.ForDeclaredMethods</span></td><td><code>573191880a5a4e0d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.ForDeclaredMethods.DispatchingVisitor</span></td><td><code>ac51d486f8ec0e4b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.ForDeclaredMethods.Entry</span></td><td><code>28eb46b4467366d6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.AsmVisitorWrapper.NoOp</span></td><td><code>a613c160b15bbc65</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.MemberRemoval</span></td><td><code>005cb62907cc0df7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.asm.MemberRemoval.MemberRemovingClassVisitor</span></td><td><code>fe382217ff7273dc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.ByteCodeElement.Token.TokenList</span></td><td><code>1070489264457774</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.ModifierReviewable.AbstractBase</span></td><td><code>0b625f401d945e23</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.NamedElement.WithDescriptor</span></td><td><code>69f25e85d31086f5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.TypeVariableSource.AbstractBase</span></td><td><code>86aee374842b91be</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationDescription</span></td><td><code>7e080fcc4ab41eb1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationDescription.AbstractBase</span></td><td><code>55a8b2f7b58a15aa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationDescription.ForLoadedAnnotation</span></td><td><code>a2b247526c4d26ca</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationList.AbstractBase</span></td><td><code>c3dca45e359b717d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationList.Empty</span></td><td><code>10e1e01ec4afb6b0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationList.Explicit</span></td><td><code>b96636e855735fc3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationList.ForLoadedAnnotations</span></td><td><code>a6be8b00fa72ab7a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationSource.Empty</span></td><td><code>034fcbd435657d97</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue</span></td><td><code>e46e60f3e4357d8a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.AbstractBase</span></td><td><code>6b46c288929d794a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant</span></td><td><code>650f7b88da7502df</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType</span></td><td><code>8683233734d98d81</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.1</span></td><td><code>ecf694f5c718a013</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.2</span></td><td><code>113fe247f14fdcdd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.3</span></td><td><code>ad40ce4c8d647d57</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.4</span></td><td><code>649136274570c878</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.5</span></td><td><code>25519a3723562b18</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.6</span></td><td><code>d0a4ee1eb78e8925</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.7</span></td><td><code>5cc6d38c7688ce9e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.8</span></td><td><code>542fa217a5fe4c51</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForConstant.PropertyDelegate.ForNonArrayType.9</span></td><td><code>9adc51229ebb26c9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForDescriptionArray</span></td><td><code>8fc4099e21a005f9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForEnumerationDescription</span></td><td><code>451401174e8ca82f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForEnumerationDescription.Loaded</span></td><td><code>fda0610025cc12ff</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.ForTypeDescription</span></td><td><code>256f9475d7baab5e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.Loaded.AbstractBase</span></td><td><code>1a834bbf25c86ab4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.annotation.AnnotationValue.State</span></td><td><code>db0e0a0878d7e335</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.enumeration.EnumerationDescription.AbstractBase</span></td><td><code>36efae2fe3237ba9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.enumeration.EnumerationDescription.ForLoadedEnumeration</span></td><td><code>5b47cbeca30adac0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription</span></td><td><code>68bfcf27b64f643e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.AbstractBase</span></td><td><code>8e18b7d4e1ceddcb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.ForLoadedField</span></td><td><code>60b2439cfc69a4cf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.InDefinedShape.AbstractBase</span></td><td><code>e1174a0c69da5a57</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.Latent</span></td><td><code>f267c31e54d89fa1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.SignatureToken</span></td><td><code>3fabeebea84ce146</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldDescription.Token</span></td><td><code>3f20efc75bd15e42</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldList.AbstractBase</span></td><td><code>78739d279005d8a4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldList.Explicit</span></td><td><code>323b76a02a64f9a7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldList.ForLoadedFields</span></td><td><code>fc8cc870e5f42b89</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.field.FieldList.ForTokens</span></td><td><code>ea98dba6ef4eb758</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription</span></td><td><code>cb9472a3dd295bbd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.AbstractBase</span></td><td><code>909086af904cf59b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.ForLoadedConstructor</span></td><td><code>e3c79dd807083c08</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.ForLoadedMethod</span></td><td><code>d9fe344c56539dc6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.InDefinedShape.AbstractBase</span></td><td><code>673ca3d2d56a4b0a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.InDefinedShape.AbstractBase.ForLoadedExecutable</span></td><td><code>db01999a48adc399</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.Latent</span></td><td><code>20e100c8a3802774</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.Latent.TypeInitializer</span></td><td><code>87bee94b36e1d209</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.SignatureToken</span></td><td><code>5888f2557f6a88e0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.Token</span></td><td><code>b268931f291edf88</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.TypeSubstituting</span></td><td><code>8dc21d2e259d2c0f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodDescription.TypeToken</span></td><td><code>f7f14b8ac76ebd98</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodList.AbstractBase</span></td><td><code>b054427f9b6a48f1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodList.Explicit</span></td><td><code>b03ab4c21a93dfd0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodList.ForLoadedMethods</span></td><td><code>38bd1bf17eb05676</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodList.ForTokens</span></td><td><code>40aa960dc7616ac5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.MethodList.TypeSubstituting</span></td><td><code>f1f510557a04392e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.AbstractBase</span></td><td><code>173e1a83772e6071</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.ForLoadedParameter</span></td><td><code>8dd9bfdcb695c00c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.ForLoadedParameter.OfConstructor</span></td><td><code>a18e1a81fc7465d0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.ForLoadedParameter.OfMethod</span></td><td><code>811597af8855d53c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.InDefinedShape.AbstractBase</span></td><td><code>717f5d8d90c005f1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.Latent</span></td><td><code>1aa2e08f2ad0d5c2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.Token</span></td><td><code>36549650fa40d54b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.Token.TypeList</span></td><td><code>1890975119bdb094</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterDescription.TypeSubstituting</span></td><td><code>6cc95e3ea064743d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.AbstractBase</span></td><td><code>6fe6f7a3a2c191ea</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.Empty</span></td><td><code>8f4a45d2f54ed28b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.Explicit.ForTypes</span></td><td><code>75d84e0b4fcd99a9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.ForLoadedExecutable</span></td><td><code>1456c072c3be7105</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.ForLoadedExecutable.OfConstructor</span></td><td><code>6d7eaa8911075319</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.ForLoadedExecutable.OfMethod</span></td><td><code>f0835708e2d15fb4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.ForTokens</span></td><td><code>b77d0ee711552f0c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.method.ParameterList.TypeSubstituting</span></td><td><code>293f1f350b97c439</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.FieldManifestation</span></td><td><code>61ed9ad5f460d425</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.ModifierContributor.Resolver</span></td><td><code>4c37457cc5fe415c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.Ownership</span></td><td><code>03978521bbedeaac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.SynchronizationState</span></td><td><code>1ee1e76d573ad75b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.SyntheticState</span></td><td><code>0ea0b3d14a159257</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.TypeManifestation</span></td><td><code>823497b74af56cf0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.Visibility</span></td><td><code>eddec8671a9488f2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.modifier.Visibility.1</span></td><td><code>d7e383ada6123e01</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.PackageDescription.AbstractBase</span></td><td><code>21c62ace537a731c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.PackageDescription.ForLoadedPackage</span></td><td><code>e09e684292c5d837</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.PackageDescription.Simple</span></td><td><code>69eda86ed42d2bb9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.RecordComponentList.AbstractBase</span></td><td><code>fa2d664156de0c87</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.RecordComponentList.Empty</span></td><td><code>facb71157fa46ed2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.RecordComponentList.ForTokens</span></td><td><code>b72447d1fcbe18bd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDefinition.Sort</span></td><td><code>e252ac8a021f4082</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDefinition.SuperClassIterator</span></td><td><code>dcc41092c6176f54</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription</span></td><td><code>556ed0842dcd3465</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.AbstractBase</span></td><td><code>4c6c19763839e81a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.AbstractBase.OfSimpleType</span></td><td><code>69db0326a7bad734</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.ArrayProjection</span></td><td><code>6b7a5c44df03385e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.ForLoadedType</span></td><td><code>1d01f9c5e8968a62</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic</span></td><td><code>56c70a1f7051116d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AbstractBase</span></td><td><code>fd0c51f51c279532</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator</span></td><td><code>de36d9ad20e2b0f0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.Chained</span></td><td><code>7558098cf910a484</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedExecutableExceptionType</span></td><td><code>d5fff8bf03378188</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedExecutableParameterType</span></td><td><code>4996d253c41df4e9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedField</span></td><td><code>1f4ca9161ac135f3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedInterface</span></td><td><code>4bff1f5d8d784c94</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedMethodReturnType</span></td><td><code>01b498011a8b99b9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedSuperClass</span></td><td><code>437ce60855df41c8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.ForLoadedTypeVariable</span></td><td><code>9eb4905762cd4d43</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.Delegator.Simple</span></td><td><code>64d7d8c1c95ccbbb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForComponentType</span></td><td><code>8fcd1b7048059fc4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForTypeArgument</span></td><td><code>6058e72d25275a6e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForTypeVariableBoundType</span></td><td><code>7abf9451d0a396a7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForTypeVariableBoundType.OfFormalTypeVariable</span></td><td><code>a3a21029de090e64</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.ForWildcardUpperBoundType</span></td><td><code>54ede85d3cdd8d27</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.AnnotationReader.NoOp</span></td><td><code>1e053fccf208e232</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection</span></td><td><code>9e800f4de9f8e67a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.ForLoadedFieldType</span></td><td><code>ec088f5e6cbed895</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.ForLoadedReturnType</span></td><td><code>d1cbaafc701825f7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.ForLoadedSuperClass</span></td><td><code>e8bb65841de31236</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.OfConstructorParameter</span></td><td><code>5458ef91ab867211</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.OfMethodParameter</span></td><td><code>166cd6a7c9bbe561</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.WithEagerNavigation</span></td><td><code>f8c6ed45e722570c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.WithEagerNavigation.OfAnnotatedElement</span></td><td><code>f66f265575aff87f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.WithLazyNavigation</span></td><td><code>ce47793fa872e3e3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.WithLazyNavigation.OfAnnotatedElement</span></td><td><code>3539fe966936ddc7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.LazyProjection.WithResolvedErasure</span></td><td><code>8c44b0d0f77a173e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfGenericArray</span></td><td><code>8c17323c9acd37d3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfGenericArray.ForLoadedType</span></td><td><code>062f3d6b0874a5c9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfGenericArray.Latent</span></td><td><code>fbae4dabdc6cfa54</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfNonGenericType</span></td><td><code>a4504dc6edd68cd6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfNonGenericType.ForErasure</span></td><td><code>3db1821ca68ddf5b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfNonGenericType.ForLoadedType</span></td><td><code>986e223380b52659</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfNonGenericType.Latent</span></td><td><code>37ef0e5fa19941b1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType</span></td><td><code>f7f22a9eb23d0358</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType.ForGenerifiedErasure</span></td><td><code>e0b46fdf5031ad5f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType.ForLoadedType</span></td><td><code>23a5bcdf87d9f76a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType.ForLoadedType.ParameterArgumentTypeList</span></td><td><code>a0644f6a2bfa2302</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfParameterizedType.Latent</span></td><td><code>16bfeb4720d944cd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfTypeVariable</span></td><td><code>a5c2d5f7fa973e0e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfTypeVariable.ForLoadedType</span></td><td><code>cc1d9926ab18067d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfTypeVariable.ForLoadedType.TypeVariableBoundList</span></td><td><code>c5b1a0f68bc48e88</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfTypeVariable.Symbolic</span></td><td><code>0bd5958a8dbdf6f1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfTypeVariable.WithAnnotationOverlay</span></td><td><code>4f1a3b7626a1e4a3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfWildcardType</span></td><td><code>a01bd5a6a70766e4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfWildcardType.ForLoadedType</span></td><td><code>1112963cd5495a63</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfWildcardType.ForLoadedType.WildcardLowerBoundTypeList</span></td><td><code>bf9a39c834687055</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfWildcardType.ForLoadedType.WildcardUpperBoundTypeList</span></td><td><code>b8d9619983ce411c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.OfWildcardType.Latent</span></td><td><code>ac2dd5836f375954</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.ForRawType</span></td><td><code>81cdbc3e9e323aa7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.ForSignatureVisitor</span></td><td><code>87943f76596da78f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.ForSignatureVisitor.OfTypeArgument</span></td><td><code>cf8c08548af1937e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Reducing</span></td><td><code>6ba7675a4c6f9e76</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Reifying</span></td><td><code>42a0cb6efaa79250</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Reifying.1</span></td><td><code>4d33792e587387fc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Reifying.2</span></td><td><code>b6f2d04f33382efe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Substitutor</span></td><td><code>c89ede7a99bb5588</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Substitutor.ForAttachment</span></td><td><code>b59a8a86fd7eb87c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Substitutor.ForDetachment</span></td><td><code>eed7781949d0b181</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Substitutor.WithoutTypeSubstitution</span></td><td><code>7cf629e1c38332c8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Validator</span></td><td><code>dafe97e0990d07d8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Validator.1</span></td><td><code>ef674cd68d602c9e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Validator.2</span></td><td><code>995a36794baa754d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Validator.3</span></td><td><code>d23d6d8289986451</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeDescription.Generic.Visitor.Validator.ForTypeAnnotations</span></td><td><code>619020201bb851fe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList</span></td><td><code>da60a7cfb717d0a8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.AbstractBase</span></td><td><code>4700315364477234</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Empty</span></td><td><code>59d00ad7b53c811a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Explicit</span></td><td><code>81495dfc3a359dfe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.ForLoadedTypes</span></td><td><code>4356a7471aec6f20</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.AbstractBase</span></td><td><code>5376e1d2298a6512</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.Empty</span></td><td><code>df9431d33e66dbb4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.Explicit</span></td><td><code>1ab8c93e54ee2ac6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForDetachedTypes</span></td><td><code>1b6544725fdb45a6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForDetachedTypes.OfTypeVariables</span></td><td><code>05b85732c40f12b7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForDetachedTypes.OfTypeVariables.AttachedTypeVariable</span></td><td><code>8133514c5d90955c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForDetachedTypes.WithResolvedErasure</span></td><td><code>3ae7efc80de7c3db</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForLoadedTypes</span></td><td><code>c603bfa8790b860c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.ForLoadedTypes.OfTypeVariables</span></td><td><code>d713fc161a8b3c83</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfConstructorExceptionTypes</span></td><td><code>41a985dd07ed867c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfConstructorExceptionTypes.TypeProjection</span></td><td><code>a9a42d16f46764ff</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfLoadedInterfaceTypes</span></td><td><code>99d4f3faf0ed1337</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfLoadedInterfaceTypes.TypeProjection</span></td><td><code>7f6f3c7654719119</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfMethodExceptionTypes</span></td><td><code>74966b175ac75ab9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeList.Generic.OfMethodExceptionTypes.TypeProjection</span></td><td><code>2d651d381fd3d0a8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.description.type.TypeVariableToken</span></td><td><code>0b904605bce2d673</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.ClassFileLocator.ForClassLoader</span></td><td><code>3d93d02aae11ab20</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.ClassFileLocator.ForClassLoader.BootLoaderProxyCreationAction</span></td><td><code>92592514e911da0a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.ClassFileLocator.Resolution.Explicit</span></td><td><code>0d4fd821f05a20f9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.ClassFileLocator.Simple</span></td><td><code>f699c5335eed704c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase</span></td><td><code>75270e145cd63906</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter</span></td><td><code>07bd203beeec5267</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.FieldDefinitionAdapter</span></td><td><code>9f5304401d876ae6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.MethodDefinitionAdapter</span></td><td><code>e3a71944fa583d5d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.MethodDefinitionAdapter.AnnotationAdapter</span></td><td><code>e7b8fe4351f0538b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.MethodDefinitionAdapter.SimpleParameterAnnotationAdapter</span></td><td><code>ceb79ec5f6c81c06</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.MethodMatchAdapter</span></td><td><code>b8cc50e40a151a71</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.MethodMatchAdapter.AnnotationAdapter</span></td><td><code>94485cf54fc4bcd7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Adapter.OptionalMethodMatchAdapter</span></td><td><code>e422d5f0c3871df1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.AbstractBase.Delegator</span></td><td><code>a05019b4f9f0052c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.FieldDefinition.Optional.AbstractBase</span></td><td><code>a32270443a37f43d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.FieldDefinition.Optional.Valuable.AbstractBase</span></td><td><code>8d99c467e26879f0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.FieldDefinition.Optional.Valuable.AbstractBase.Adapter</span></td><td><code>d9f7441f5ac2676d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.AbstractBase</span></td><td><code>cccc417ee29a5050</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.AbstractBase.Adapter</span></td><td><code>e54b40849750fde9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ExceptionDefinition.AbstractBase</span></td><td><code>d5887f98f1e6e4b8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ImplementationDefinition.AbstractBase</span></td><td><code>8dc07cfd239f0cc9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ParameterDefinition.AbstractBase</span></td><td><code>b54aa1953aca6e53</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ParameterDefinition.Initial.AbstractBase</span></td><td><code>adcc1447655c94c5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ParameterDefinition.Simple.AbstractBase</span></td><td><code>ce697a0a4ca85f68</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ParameterDefinition.Simple.Annotatable.AbstractBase</span></td><td><code>5cb69ac9bda4bbd9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ParameterDefinition.Simple.Annotatable.AbstractBase.Adapter</span></td><td><code>c234394f562d67d3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.ReceiverTypeDefinition.AbstractBase</span></td><td><code>f3a488041b9994c6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition.TypeVariableDefinition.AbstractBase</span></td><td><code>1e9f7d7e33a9b032</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Default</span></td><td><code>1735fd7e9316f797</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Default.Loaded</span></td><td><code>3ce15da51999a8ca</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.DynamicType.Default.Unloaded</span></td><td><code>7dc216f75a73e9b5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.TargetType</span></td><td><code>26c139b5f2f58862</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.Compound</span></td><td><code>a5a52522b43091ef</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod</span></td><td><code>22ab387d59f6c970</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod.MethodModifierTransformer</span></td><td><code>829c18ff395159ba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod.TransformedMethod</span></td><td><code>083bfd5734c4504d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod.TransformedMethod.AttachmentVisitor</span></td><td><code>43014c50e1310fbf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod.TransformedMethod.TransformedParameter</span></td><td><code>84642c4a6f0d1bdc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.ForMethod.TransformedMethod.TransformedParameterList</span></td><td><code>54d561afbee57f99</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.Transformer.NoOp</span></td><td><code>49cd89a2b3b975a3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.TypeResolutionStrategy.Passive</span></td><td><code>d5784ee7fb36ce53</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.VisibilityBridgeStrategy.Default</span></td><td><code>ae8d9f7fd85c6aad</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.VisibilityBridgeStrategy.Default.1</span></td><td><code>63c0d42260c7599e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.VisibilityBridgeStrategy.Default.2</span></td><td><code>a8389e9d32c4ecd7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.VisibilityBridgeStrategy.Default.3</span></td><td><code>30f7afc5a8be245c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader</span></td><td><code>02cd98561e41388f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.ClassDefinitionAction</span></td><td><code>ae3b3260cea35a93</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.PackageLookupStrategy.CreationAction</span></td><td><code>ed99761ea2821fe6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.PackageLookupStrategy.ForJava9CapableVm</span></td><td><code>938d777edfb5f306</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.PersistenceHandler</span></td><td><code>811732d1db761cc5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.PersistenceHandler.1</span></td><td><code>c9ee72578a4d55a4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.PersistenceHandler.2</span></td><td><code>f7eb2a49ccc0c5d4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.SynchronizationStrategy.CreationAction</span></td><td><code>787a86bd317e5dc4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ByteArrayClassLoader.SynchronizationStrategy.ForJava8CapableVm</span></td><td><code>02e95f14cee748d7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassFilePostProcessor.NoOp</span></td><td><code>3c8088887326744a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassInjector.AbstractBase</span></td><td><code>331215a38873f162</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassInjector.UsingReflection</span></td><td><code>9b4c6d016e86d89d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassInjector.UsingReflection.Dispatcher.CreationAction</span></td><td><code>e95efd9bc7c2fbec</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassInjector.UsingReflection.Dispatcher.UsingUnsafeInjection</span></td><td><code>ee369f8a9915cac0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassInjector.UsingUnsafe</span></td><td><code>0fe8982cff47681a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassInjector.UsingUnsafe.Dispatcher.CreationAction</span></td><td><code>cee35100457096e8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassInjector.UsingUnsafe.Dispatcher.Enabled</span></td><td><code>fe60291c22873865</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassLoadingStrategy</span></td><td><code>17fb081ccc92f99c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassLoadingStrategy.Default</span></td><td><code>7390ec8634515594</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassLoadingStrategy.Default.InjectionDispatcher</span></td><td><code>759cb7a298fc98b7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassLoadingStrategy.Default.WrappingDispatcher</span></td><td><code>88c49bdd78533ba6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.ClassLoadingStrategy.ForUnsafeInjection</span></td><td><code>fae0995eb7740944</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.InjectionClassLoader</span></td><td><code>cbd809288c0dad36</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.MultipleParentClassLoader.Builder</span></td><td><code>6d4bb17bdf7b0f37</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.PackageDefinitionStrategy.Definition.Trivial</span></td><td><code>6512673aa8423352</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.PackageDefinitionStrategy.Definition.Undefined</span></td><td><code>1b8dafe51f80088c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.PackageDefinitionStrategy.NoOp</span></td><td><code>31480ec85144aa31</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.loading.PackageDefinitionStrategy.Trivial</span></td><td><code>d0ed587787d4d89f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.ClassWriterStrategy.Default</span></td><td><code>f0774d4bbe85a809</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.ClassWriterStrategy.Default.1</span></td><td><code>09a3c2cfe88a5ae4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.ClassWriterStrategy.Default.2</span></td><td><code>76afb59bd5abdd5f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.ClassWriterStrategy.FrameComputingClassWriter</span></td><td><code>6dcf362306ddc5d0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldLocator.AbstractBase</span></td><td><code>db8c5004661a0bd8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldLocator.ForClassHierarchy</span></td><td><code>0e8431af1152b965</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldLocator.ForClassHierarchy.Factory</span></td><td><code>d97235dbbc3871e9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldLocator.Resolution.Simple</span></td><td><code>7e3dca01a01498d1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldRegistry.Default</span></td><td><code>cc5265630d0906f2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldRegistry.Default.Compiled</span></td><td><code>00933225bc77b175</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldRegistry.Default.Compiled.Entry</span></td><td><code>0ec1361a69a955fd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.FieldRegistry.Default.Entry</span></td><td><code>a7413622fd851aa9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.InstrumentedType.Default</span></td><td><code>23fe149436dbe425</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.InstrumentedType.Factory.Default</span></td><td><code>cd900ae01efd903f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.InstrumentedType.Factory.Default.1</span></td><td><code>a7ce85bb2f37ff77</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.InstrumentedType.Factory.Default.2</span></td><td><code>ad157a47dace4f55</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler</span></td><td><code>fc88be698cc4a50f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.AbstractBase</span></td><td><code>ad55505e167100d9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default</span></td><td><code>a37bac0e0eceb0c9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Harmonizer.ForJavaMethod</span></td><td><code>4b92bfc82ab49b25</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Harmonizer.ForJavaMethod.Token</span></td><td><code>e2da236960e0a189</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key</span></td><td><code>421619c0f44567f3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Detached</span></td><td><code>82540bbf94c15922</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Harmonized</span></td><td><code>5d9ad1d55d82a355</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store</span></td><td><code>f948e4de58324a0f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store.Entry.Initial</span></td><td><code>1fc852958287c36a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store.Entry.Resolved</span></td><td><code>6672a261c5f5dd2e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store.Entry.Resolved.Node</span></td><td><code>0f0b18948cce4159</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Key.Store.Graph</span></td><td><code>f50e2614e64a132c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.Default.Merger.Directional</span></td><td><code>0ba0f74ab7d66be7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Compiler.ForDeclaredMethods</span></td><td><code>80835a5a4610b1d3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Empty</span></td><td><code>de57d507ae61b464</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Linked.Delegation</span></td><td><code>7341085250d5f338</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Node.Simple</span></td><td><code>f9767f80e7124acc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Node.Sort</span></td><td><code>8e20af4bf9dad8a0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Node.Unresolved</span></td><td><code>c42332646fb3e771</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.NodeList</span></td><td><code>3f435ec381113f00</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodGraph.Simple</span></td><td><code>9a1f1f9d25ac44be</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default</span></td><td><code>35ae92274e85ac88</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default.Compiled</span></td><td><code>dd840dc4ea29fc06</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default.Compiled.Entry</span></td><td><code>827864e42dc177c2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default.Entry</span></td><td><code>66b9b2c39c4a08ee</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default.Prepared</span></td><td><code>3c270a20a21353d7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Default.Prepared.Entry</span></td><td><code>e96586202cb119f0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Handler.ForImplementation</span></td><td><code>ea77701fcbc47e2c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.MethodRegistry.Handler.ForImplementation.Compiled</span></td><td><code>7b000ab44a4af2cc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.RecordComponentRegistry.Default</span></td><td><code>eec49897d441dcbe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.RecordComponentRegistry.Default.Compiled</span></td><td><code>1d64a300c478cbd4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeInitializer.Drain.Default</span></td><td><code>a3bc2736d5ad95f5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeInitializer.None</span></td><td><code>d062b02ed3f4d342</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeInitializer.Simple</span></td><td><code>3429322f4d42e2d4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeValidation</span></td><td><code>b9ab70dc0d5e3c60</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default</span></td><td><code>b1fd1390cd945339</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ClassDumpAction.Dispatcher.Disabled</span></td><td><code>c24d1fbb13ce4662</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForCreation</span></td><td><code>e49a97cbadf48f53</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining</span></td><td><code>4c7ee312040bb318</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.ContextRegistry</span></td><td><code>622ce27c3767099c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing</span></td><td><code>761174ae1b4a7883</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending</span></td><td><code>4e585938624b7ef8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.FrameWriter.NoOp</span></td><td><code>a2f03c0bb2af8a8c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithoutDrain</span></td><td><code>3fa18a9a9ad52d67</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Appending.WithoutDrain.WithoutActiveRecord</span></td><td><code>478d9c65f914e920</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.InitializationHandler.Creating</span></td><td><code>7468257483138fc2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.OpenedClassRemapper</span></td><td><code>9e487af950fd0a78</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.RedefinitionClassVisitor</span></td><td><code>bd45894298a85588</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ForInlining.WithFullProcessing.SignatureKey</span></td><td><code>596525b4e95e0fc5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.UnresolvedType</span></td><td><code>caecc137e21b50cd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor</span></td><td><code>020d1828495e6c79</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor.Constraint.Compound</span></td><td><code>af65bc53d4bfcb08</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor.Constraint.ForClass</span></td><td><code>f8c4dad603110ded</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor.Constraint.ForClassFileVersion</span></td><td><code>96ff8f7a1794971b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor.ValidatingFieldVisitor</span></td><td><code>32da744aaf76f782</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.Default.ValidatingClassVisitor.ValidatingMethodVisitor</span></td><td><code>e07fdc6d626b5d15</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.FieldPool.Record.ForExplicitField</span></td><td><code>6db88b0864fac583</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.FieldPool.Record.ForImplicitField</span></td><td><code>4d4ebb611a56f520</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.MethodPool.Record.AccessBridgeWrapper</span></td><td><code>d430962a4ae98a53</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.MethodPool.Record.ForDefinedMethod</span></td><td><code>676c34a7d131152e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.MethodPool.Record.ForDefinedMethod.WithBody</span></td><td><code>175949ac2c965a4e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.MethodPool.Record.ForNonImplementedMethod</span></td><td><code>1c0608714c9bf7eb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.TypeWriter.MethodPool.Record.Sort</span></td><td><code>ce35c6847ba06f22</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.inline.AbstractInliningDynamicTypeBuilder</span></td><td><code>24c65800fde7a670</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.inline.InliningImplementationMatcher</span></td><td><code>385ec334716921a9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.inline.MethodRebaseResolver.Disabled</span></td><td><code>687ef4457dff2d12</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.inline.RedefinitionDynamicTypeBuilder</span></td><td><code>bc21614a0113f2d7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default</span></td><td><code>0d114e09a2faac83</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default.1</span></td><td><code>16fc5c99e02d7f9f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default.2</span></td><td><code>dd199479878d5739</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default.3</span></td><td><code>792ea5ce51475037</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default.4</span></td><td><code>98fceb895a262b45</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy.Default.5</span></td><td><code>f0898605f9020c16</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder</span></td><td><code>0426764fb123b82d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder.InstrumentableMatcher</span></td><td><code>7bbde13577295432</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget</span></td><td><code>17f509a8b52b39f3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget.Factory</span></td><td><code>f6c0a700d93e9d10</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget.OriginTypeResolver</span></td><td><code>282c73cc811d5b71</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget.OriginTypeResolver.1</span></td><td><code>2eb773d398b87160</code></td></tr><tr><td><span class="el_class">net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget.OriginTypeResolver.2</span></td><td><code>903a99da03746eb8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor</span></td><td><code>0174e94238af9d2f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.FieldLocation.Relative</span></td><td><code>e3f1a92ea73df3a5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.FieldLocation.Relative.Prepared</span></td><td><code>c55029896988613b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.FieldNameExtractor.ForBeanProperty</span></td><td><code>751b847060c7cd95</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.ForImplicitProperty</span></td><td><code>623c50de803e8dff</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.FieldAccessor.ForImplicitProperty.Appender</span></td><td><code>db2e4aeceee38d5f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default</span></td><td><code>9436fa8001a9c80c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.AbstractPropertyAccessorMethod</span></td><td><code>64d4d27f3bf59427</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.AccessorMethod</span></td><td><code>0644ef9990e5aa98</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.AccessorMethodDelegation</span></td><td><code>ea3233ec172d7765</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.CacheValueField</span></td><td><code>0a79d6bd2bd7e867</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.DelegationRecord</span></td><td><code>490687e4353099fe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.Factory</span></td><td><code>655386a029730f91</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Default.FieldCacheEntry</span></td><td><code>9b63ee13339c36d9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Disabled</span></td><td><code>8a74786e0adf30af</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.Disabled.Factory</span></td><td><code>9be5c1828d8d01bd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Context.ExtractableView.AbstractBase</span></td><td><code>072a87c3ee3b1c13</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.SpecialMethodInvocation.AbstractBase</span></td><td><code>99ac1d4463895d3f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.SpecialMethodInvocation.Illegal</span></td><td><code>fe05bdf1b81d2463</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.SpecialMethodInvocation.Simple</span></td><td><code>7916d516ba029853</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Target.AbstractBase</span></td><td><code>891cf9f2a321fafd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Target.AbstractBase.DefaultMethodInvocation</span></td><td><code>29b19b204be139f3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Target.AbstractBase.DefaultMethodInvocation.1</span></td><td><code>3ba9a760aa49a971</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.Implementation.Target.AbstractBase.DefaultMethodInvocation.2</span></td><td><code>8279f38afb254f72</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.LoadedTypeInitializer.NoOp</span></td><td><code>1af8ca0d9b7adbe8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodAccessorFactory.AccessType</span></td><td><code>a8b1b417256441f1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall</span></td><td><code>91b7514dfc28bd31</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.Appender</span></td><td><code>b108fada5fdaf224</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.ArgumentLoader.ForMethodParameter</span></td><td><code>6297e85874229cba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.ArgumentLoader.ForMethodParameter.Factory</span></td><td><code>b4db521499f1fbc5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.MethodInvoker.ForContextualInvocation</span></td><td><code>7006a4aee6d99734</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.MethodInvoker.ForContextualInvocation.Factory</span></td><td><code>655146ce4ac9eab5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.MethodInvoker.ForVirtualInvocation.WithImplicitType</span></td><td><code>b28621164470f5a3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.MethodLocator.ForExplicitMethod</span></td><td><code>99f3c681fe17468e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForMethodCall</span></td><td><code>c2ccb1366736cb31</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForMethodCall.Factory</span></td><td><code>be96e54468624529</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForMethodCall.Resolved</span></td><td><code>02110acfeac01e0c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForMethodParameter</span></td><td><code>7498b3460d90e103</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForMethodParameter.Resolved</span></td><td><code>04cc8ab3c2c8bcbf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForSelfOrStaticInvocation</span></td><td><code>68d4e2e3fcb8e6a2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForSelfOrStaticInvocation.Factory</span></td><td><code>4240030260d49936</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TargetHandler.ForSelfOrStaticInvocation.Resolved</span></td><td><code>a4075eafb58b5ead</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TerminationHandler.Simple</span></td><td><code>8661202aa19373c5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TerminationHandler.Simple.1</span></td><td><code>7e75be1c6b4d6117</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TerminationHandler.Simple.2</span></td><td><code>f9781532f50651fb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.TerminationHandler.Simple.3</span></td><td><code>dfae9890b6004933</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodCall.WithoutSpecifiedTarget</span></td><td><code>d6f1bb290a2a92f5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodDelegation</span></td><td><code>a34026f28347c757</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodDelegation.Appender</span></td><td><code>c0bd24965973bfa5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodDelegation.ImplementationDelegate.Compiled.ForStaticCall</span></td><td><code>f75269107418d3a6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodDelegation.ImplementationDelegate.ForStaticMethod</span></td><td><code>44d456b1507ffbbe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.MethodDelegation.WithCustomProperties</span></td><td><code>f108031992acdb03</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.SuperMethodCall</span></td><td><code>48a9709638c71f00</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.SuperMethodCall.Appender</span></td><td><code>1278488d60ed8e86</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.SuperMethodCall.Appender.TerminationHandler</span></td><td><code>35d2e0ef6d7f630d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.SuperMethodCall.Appender.TerminationHandler.1</span></td><td><code>05664af3a3b6738b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.SuperMethodCall.Appender.TerminationHandler.2</span></td><td><code>be670f96c6d93831</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.Default</span></td><td><code>7787cf7f483d6685</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.ForTypeAnnotations</span></td><td><code>040d5aab72de4582</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.Target.OnField</span></td><td><code>52ad3ce83f52621f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.Target.OnMethod</span></td><td><code>b2534f024a4880dd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.Target.OnMethodParameter</span></td><td><code>c9f39d80b694c092</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationAppender.Target.OnType</span></td><td><code>db8f4f1dbbcf3c3e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationRetention</span></td><td><code>6dca59a58d56874f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationValueFilter.Default</span></td><td><code>190882f8828de18a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationValueFilter.Default.1</span></td><td><code>593737e47cc84848</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.AnnotationValueFilter.Default.2</span></td><td><code>a61861baa0bc96ee</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.FieldAttributeAppender.ForInstrumentedField</span></td><td><code>ca19f51ae14fb7b4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.Compound</span></td><td><code>87d24d92007e506e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.Factory.Compound</span></td><td><code>85113e9ca3ae38c3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.ForInstrumentedMethod</span></td><td><code>4e40a53e08d4cbbb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.ForInstrumentedMethod.1</span></td><td><code>a3b87b1a75d290fd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.ForInstrumentedMethod.2</span></td><td><code>10e734a991eea3bf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.MethodAttributeAppender.NoOp</span></td><td><code>aa6841038c96aed0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.TypeAttributeAppender.ForInstrumentedType</span></td><td><code>537a1dac83c99ae9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.attribute.TypeAttributeAppender.ForInstrumentedType.Differentiating</span></td><td><code>542ad65dee4078dd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.AuxiliaryType</span></td><td><code>577555a7861b5701</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.AuxiliaryType.NamingStrategy.SuffixingRandom</span></td><td><code>9ff4d19573d987f3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy</span></td><td><code>e4ad67673bba91b3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.AssignableSignatureCall</span></td><td><code>e32307e618f933aa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.ConstructorCall</span></td><td><code>0b6e2af51e015c06</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.ConstructorCall.Appender</span></td><td><code>6a4a35552c21bf78</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.MethodCall</span></td><td><code>d2f0f120376a3b4f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.MethodCall.Appender</span></td><td><code>df4a3b2e219da333</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.auxiliary.MethodCallProxy.PrecomputedMethodGraph</span></td><td><code>d3435422341aae7c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.ArgumentTypeResolver</span></td><td><code>74973272be85ce17</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.ArgumentTypeResolver.ParameterIndexToken</span></td><td><code>a8052b758f0a0361</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.DeclaringTypeResolver</span></td><td><code>d1000b5d5bf7bd79</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.1</span></td><td><code>54de841f73ee4eae</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.AmbiguityResolver</span></td><td><code>7d40b5a2d5d69397</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.AmbiguityResolver.Compound</span></td><td><code>eab4a548d2693cd2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.AmbiguityResolver.Resolution</span></td><td><code>e8ca39d95b4ade42</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.BindingResolver.Default</span></td><td><code>ed3f9e212bdf4696</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.MethodBinding.Builder</span></td><td><code>ffaacecf2e1956bd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.MethodBinding.Builder.Build</span></td><td><code>fbe15ed2c0b7c26f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.MethodBinding.Illegal</span></td><td><code>ca301be97fe35cde</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.MethodInvoker.Simple</span></td><td><code>dafea2ba3b2f164b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.ParameterBinding.Anonymous</span></td><td><code>30b0f734840f8b2c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.ParameterBinding.Illegal</span></td><td><code>470dc52d77c3898e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.ParameterBinding.Unique</span></td><td><code>c60c100f523804e4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.Processor</span></td><td><code>1dd9238ba412581f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.TerminationHandler.Default</span></td><td><code>946265fda2ca27e8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.TerminationHandler.Default.1</span></td><td><code>db109132d7373fda</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodDelegationBinder.TerminationHandler.Default.2</span></td><td><code>cb3895b610bd15d5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.MethodNameEqualityResolver</span></td><td><code>65a8d1431b34fdcd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.ParameterLengthResolver</span></td><td><code>58a025cd0f10dff1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.AllArguments.Assignment</span></td><td><code>bfcd0244baa95f1b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.AllArguments.Binder</span></td><td><code>7ed5bf64ac194c84</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Argument.Binder</span></td><td><code>9d613cfc7a8f0cd6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Argument.BindingMechanic</span></td><td><code>ad9a5463673957e4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Argument.BindingMechanic.1</span></td><td><code>5750463a9b2658fe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Argument.BindingMechanic.2</span></td><td><code>653fe2b1bb93cce4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.BindingPriority.Resolver</span></td><td><code>2fd170c18c979895</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Default.Binder</span></td><td><code>fdd8dd2baa86d3db</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.DefaultCall.Binder</span></td><td><code>d7e4b58cec267a0e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.DefaultMethod.Binder</span></td><td><code>03d209c7b50b3b07</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Empty.Binder</span></td><td><code>6af2e8e3cdad25b3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.FieldValue.Binder</span></td><td><code>ffe1f66fdf57240f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.FieldValue.Binder.Delegate</span></td><td><code>b16d4f0b5def41e9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.IgnoreForBinding.Verifier</span></td><td><code>f6eaa0a37f2ce769</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Origin.Binder</span></td><td><code>58bfe04015269f97</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.RuntimeType.Verifier</span></td><td><code>79ef98193cf36f83</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.StubValue.Binder</span></td><td><code>c5dcbbaafc956a20</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.Super.Binder</span></td><td><code>159db3adf8f80917</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.SuperCall.Binder</span></td><td><code>d504027b57aeebbe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.SuperMethod.Binder</span></td><td><code>787b81ea7c3cf9d1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder</span></td><td><code>a9644f0a487b56f8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.DelegationProcessor</span></td><td><code>08e777de45b651f6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.DelegationProcessor.Handler.Bound</span></td><td><code>fe4b74c6469cb373</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.DelegationProcessor.Handler.Unbound</span></td><td><code>53b08d554175038c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.ParameterBinder</span></td><td><code>6f273cd5a9428c36</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.ParameterBinder.ForFieldBinding</span></td><td><code>49c4acf91fc87123</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.ParameterBinder.ForFixedValue</span></td><td><code>34917bdadb610b0e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.ParameterBinder.ForFixedValue.OfConstant</span></td><td><code>50edd8158f4fee26</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder.Record</span></td><td><code>f5597b43768b5a7b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bind.annotation.This.Binder</span></td><td><code>b3e837fb5b95fa04</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.ByteCodeAppender.Compound</span></td><td><code>0f6ce72d7ea48338</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.ByteCodeAppender.Simple</span></td><td><code>3d7cd79d87926f75</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.ByteCodeAppender.Size</span></td><td><code>897030ac0b46252c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Duplication</span></td><td><code>87726ed8bb6e39de</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Duplication.1</span></td><td><code>6cbf4aae44bb9c6a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Duplication.2</span></td><td><code>204abf23cbf37c68</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Duplication.3</span></td><td><code>0631976e078609bd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Removal</span></td><td><code>6d539a300caa5092</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Removal.1</span></td><td><code>ab763f3b743f79a5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.Removal.2</span></td><td><code>fd766afb93ac2a09</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackManipulation.AbstractBase</span></td><td><code>31ac4a0904ac3e09</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackManipulation.Compound</span></td><td><code>96939a22aac4c91b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackManipulation.Illegal</span></td><td><code>d75e2eb0d394f6c3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackManipulation.Size</span></td><td><code>e69b15cd3e8d4461</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackManipulation.Trivial</span></td><td><code>56f2787cdbce4d40</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackSize</span></td><td><code>80f94e8effa2f7bb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.StackSize.1</span></td><td><code>3706a73bbafad769</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.TypeCreation</span></td><td><code>4865d2e454028bc1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.Assigner</span></td><td><code>7e67d52e9390b000</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.Assigner.Typing</span></td><td><code>b09adf7fa17d04b8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.TypeCasting</span></td><td><code>1a445bd188e2931d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveBoxingDelegate</span></td><td><code>dac9a66a711d1bdb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveBoxingDelegate.BoxingStackManipulation</span></td><td><code>96e0379915a5a251</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveTypeAwareAssigner</span></td><td><code>c888a19b998b7769</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveUnboxingDelegate</span></td><td><code>14e47d44e5cebb1d</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveUnboxingDelegate.ImplicitlyTypedUnboxingResponsible</span></td><td><code>adf7d49661fe0566</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveWideningDelegate</span></td><td><code>1008755d8fe45330</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveWideningDelegate.WideningStackManipulation</span></td><td><code>796408ff7247d988</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.primitive.VoidAwareAssigner</span></td><td><code>3df36760b29d387a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.reference.GenericTypeAwareAssigner</span></td><td><code>3623cb487284bb53</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.assign.reference.ReferenceTypeAwareAssigner</span></td><td><code>59b5f6f8641c87f2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.collection.ArrayFactory</span></td><td><code>f2dcfb1430649b3e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.collection.ArrayFactory.ArrayCreator</span></td><td><code>7ff584cc516e3f40</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.collection.ArrayFactory.ArrayCreator.ForReferenceType</span></td><td><code>2ffee25860dde2e1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.collection.ArrayFactory.ArrayStackManipulation</span></td><td><code>2420354f9fdfb502</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.ClassConstant</span></td><td><code>8c2c8e360f844ad5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.ClassConstant.ForReferenceType</span></td><td><code>a779a54b4d7fcd6c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.DefaultValue</span></td><td><code>56544d5987e5a6d8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.DoubleConstant</span></td><td><code>829c95b7b67e95cf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.FloatConstant</span></td><td><code>bdee038754940fff</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.IntegerConstant</span></td><td><code>58a28f871a6a0499</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.LongConstant</span></td><td><code>113f925135fa3020</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.MethodConstant</span></td><td><code>55d1fac9a2312bd2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.MethodConstant.CachedMethod</span></td><td><code>927dce16203d5f6c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.MethodConstant.ForMethod</span></td><td><code>5c66dba4a8bfbcea</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.NullConstant</span></td><td><code>9cf4bfc5c52a2517</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.constant.TextConstant</span></td><td><code>76b9599de59f2aeb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.FieldAccess</span></td><td><code>e098860a4703e90a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.FieldAccess.AccessDispatcher</span></td><td><code>20c90535a547e3cd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.FieldAccess.AccessDispatcher.AbstractFieldInstruction</span></td><td><code>75724b7b6b2e4a66</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.FieldAccess.AccessDispatcher.FieldGetInstruction</span></td><td><code>adcac7724ac0272c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.FieldAccess.AccessDispatcher.FieldPutInstruction</span></td><td><code>aeaedb775e139b65</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodInvocation</span></td><td><code>ccdb8e0f61d03f72</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodInvocation.Invocation</span></td><td><code>7edd2eb29addcb20</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodReturn</span></td><td><code>3cbfd6833fda70dd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodVariableAccess</span></td><td><code>7ec211e72c6c3719</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodVariableAccess.MethodLoading</span></td><td><code>0b690307be533e18</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodVariableAccess.MethodLoading.TypeCastingHandler.NoOp</span></td><td><code>3f3d0d86b569e241</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodVariableAccess.OffsetLoading</span></td><td><code>4794627822a950ec</code></td></tr><tr><td><span class="el_class">net.bytebuddy.implementation.bytecode.member.MethodVariableAccess.OffsetWriting</span></td><td><code>ec4ccc785b7c7e50</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.AnnotationVisitor</span></td><td><code>eada0caee3f956aa</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.AnnotationWriter</span></td><td><code>0932d72e909ca807</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Attribute</span></td><td><code>706e3dca943537f4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.ByteVector</span></td><td><code>202001c737179f70</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.ClassReader</span></td><td><code>d012ea74d559d27a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.ClassVisitor</span></td><td><code>31cdb4a9a90ec9ca</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.ClassWriter</span></td><td><code>5ae0ee3b90595eef</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.ConstantDynamic</span></td><td><code>dc6ffc20d56f472b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Context</span></td><td><code>e9c1b62b23feb9ea</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.FieldVisitor</span></td><td><code>476724e2a3739cdb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.FieldWriter</span></td><td><code>3c4ebfcb2bc7032e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Handle</span></td><td><code>4e18f56460ecd3ce</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Handler</span></td><td><code>763c7a3b0dc4fc7e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Label</span></td><td><code>c76a04cb58e54e7f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.MethodVisitor</span></td><td><code>196dbaf0d45984ba</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.MethodWriter</span></td><td><code>76fc9326535687d1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Opcodes</span></td><td><code>b96e4ab1fc6dc28a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Symbol</span></td><td><code>f44d88efeab63dac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.SymbolTable</span></td><td><code>00001f478e852135</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.SymbolTable.Entry</span></td><td><code>904cbca1953e75e2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.Type</span></td><td><code>45a01df29df18510</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.TypeReference</span></td><td><code>7c2c246da0bafedc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.commons.ClassRemapper</span></td><td><code>3b51d3b9fc7535e2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.commons.FieldRemapper</span></td><td><code>98cdb08947bd5f18</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.commons.Remapper</span></td><td><code>a261dd97cea13667</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.commons.SignatureRemapper</span></td><td><code>cd6e68dcee40cdbd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.commons.SimpleRemapper</span></td><td><code>d4712653bfb65af2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.signature.SignatureReader</span></td><td><code>011d12c758b95e5f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.signature.SignatureVisitor</span></td><td><code>ba629ff09a5c44a8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.jar.asm.signature.SignatureWriter</span></td><td><code>c8f0c38b6698b545</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.AnnotationTypeMatcher</span></td><td><code>4c083a293a95675e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.BooleanMatcher</span></td><td><code>fc276a6c128e2875</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.CollectionErasureMatcher</span></td><td><code>76b5d2cc623cc312</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.CollectionItemMatcher</span></td><td><code>640386844f0e29b8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.CollectionOneToOneMatcher</span></td><td><code>670278e525ff9bfc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.CollectionSizeMatcher</span></td><td><code>8f59b8be9ab4a58b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.DeclaringAnnotationMatcher</span></td><td><code>72a4630003105f69</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.DeclaringTypeMatcher</span></td><td><code>76e282c5482618bb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.DescriptorMatcher</span></td><td><code>e5d21259f82507a7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ElementMatcher.Junction.AbstractBase</span></td><td><code>d129e1a5bbea50cb</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ElementMatcher.Junction.Conjunction</span></td><td><code>6586c7d2abf8bf59</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ElementMatcher.Junction.Disjunction</span></td><td><code>78eb86ff19c5e913</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ElementMatcher.Junction.ForNonNullValues</span></td><td><code>40b97e222b442c20</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ElementMatchers</span></td><td><code>d173e8185d30d23b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.EqualityMatcher</span></td><td><code>7ddcccca3867f2c6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ErasureMatcher</span></td><td><code>327b39df894c794a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.FilterableList.AbstractBase</span></td><td><code>acc833b482b3e913</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.FilterableList.Empty</span></td><td><code>994e694dc878695f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.Disjunction</span></td><td><code>98ae2e2cf66affdf</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.ForFieldToken</span></td><td><code>9bce736b4fed0d2f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.ForFieldToken.ResolvedMatcher</span></td><td><code>cb20c74d5d2fa4f2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.ForMethodToken</span></td><td><code>3f8fdb09acae36bc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.ForMethodToken.ResolvedMatcher</span></td><td><code>0c0799981f6a5074</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.LatentMatcher.Resolved</span></td><td><code>415ddaef2832e0a1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodParameterTypeMatcher</span></td><td><code>d565dce3bed4679b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodParameterTypesMatcher</span></td><td><code>4f9a1c61c2ca1d30</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodParametersMatcher</span></td><td><code>754bf9d07553d1f9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodReturnTypeMatcher</span></td><td><code>1b6fa22a35a706bc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher</span></td><td><code>d9a4a7f8ba8d705a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort</span></td><td><code>df4da3ccf1c43fb2</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort.1</span></td><td><code>9f8edcf420246fae</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort.2</span></td><td><code>5b30e294f2304972</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort.3</span></td><td><code>9c8b9e468a9ba4ee</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort.4</span></td><td><code>4c3709005a13f932</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.MethodSortMatcher.Sort.5</span></td><td><code>93400b67a6230353</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ModifierMatcher</span></td><td><code>c0d2e66fbd31c083</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.ModifierMatcher.Mode</span></td><td><code>09bd88f8f539be92</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.NameMatcher</span></td><td><code>b901fc4b35799fa4</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.NegatingMatcher</span></td><td><code>a7d93978e9d78d7e</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.SignatureTokenMatcher</span></td><td><code>60c758b99c3d9148</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher</span></td><td><code>236df1d1d60ab580</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode</span></td><td><code>78a8ab1a5e998326</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.1</span></td><td><code>197cd818fecbf0dc</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.2</span></td><td><code>130a12e752b093e0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.3</span></td><td><code>37e1825b2b41bae8</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.4</span></td><td><code>34a59e75ad57ee16</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.5</span></td><td><code>6b18de0e0195fcc7</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.6</span></td><td><code>bdaf5299d13e3bfe</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.7</span></td><td><code>f608050eb76b29c9</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.8</span></td><td><code>7a1f43a330aa49e3</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.StringMatcher.Mode.9</span></td><td><code>d97cfe0669542624</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.SuperTypeMatcher</span></td><td><code>5f65e9ccb1649334</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.TypeSortMatcher</span></td><td><code>bea3cd319f7a9ab6</code></td></tr><tr><td><span class="el_class">net.bytebuddy.matcher.VisibilityMatcher</span></td><td><code>6f0d2c70b6ce50e1</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.AbstractBase</span></td><td><code>03ef41c73bcdac6f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.AbstractBase.Hierarchical</span></td><td><code>1ef4bf1634aa9314</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.CacheProvider.Simple</span></td><td><code>3b477cf62a71a399</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.ClassLoading</span></td><td><code>f60fbd5bc692f3c0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.Default</span></td><td><code>b27cb7242f69dd95</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.Default.ReaderMode</span></td><td><code>6279c7cb7ae80a38</code></td></tr><tr><td><span class="el_class">net.bytebuddy.pool.TypePool.Empty</span></td><td><code>8c0a9ed2a729f1ac</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.CompoundList</span></td><td><code>b8b501baeee21c20</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.ConstructorComparator</span></td><td><code>c7333b6b982e8e09</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.FieldComparator</span></td><td><code>040e57b459196f7f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.GraalImageCode</span></td><td><code>99c2d8870a99ec8c</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.JavaModule</span></td><td><code>c663e648dff68e8b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.MethodComparator</span></td><td><code>4e5549fe1a1bb16a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.OpenedClassReader</span></td><td><code>f4da9b2b059db195</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.RandomString</span></td><td><code>2eafdcdb79f5efa0</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.StreamDrainer</span></td><td><code>264534737ce95d78</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher</span></td><td><code>3c1bd07bc810ae2b</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.Dispatcher.ForInstanceCheck</span></td><td><code>7dbb26a52ed326b5</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.Dispatcher.ForNonStaticMethod</span></td><td><code>f63395a9698d65ee</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.Dispatcher.ForStaticMethod</span></td><td><code>2951db96c63571df</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.DynamicClassLoader</span></td><td><code>b0851709ab51952f</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.DynamicClassLoader.Resolver.CreationAction</span></td><td><code>649b66a6bb185e58</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.DynamicClassLoader.Resolver.ForModuleSystem</span></td><td><code>e2d793e6145a9f21</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.InvokerCreationAction</span></td><td><code>97a1f6e01df99348</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.dispatcher.JavaDispatcher.ProxiedInvocationHandler</span></td><td><code>8b115083d4a498dd</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.privilege.GetMethodAction</span></td><td><code>74124300a1be96ce</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.privilege.GetSystemPropertyAction</span></td><td><code>3dcb9c5481b99d57</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.visitor.ExceptionTableSensitiveMethodVisitor</span></td><td><code>d6e802e0f103ce5a</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.visitor.LineNumberPrependingMethodVisitor</span></td><td><code>39913d282d69be33</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.visitor.MetadataAwareClassVisitor</span></td><td><code>203f3fefd16029df</code></td></tr><tr><td><span class="el_class">net.bytebuddy.utility.visitor.StackAwareMethodVisitor</span></td><td><code>e665bc6a36ad6fe9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.Level</span></td><td><code>7f6d65d4ac5d9dea</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.LogManager</span></td><td><code>0bbf31210f920811</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.MarkerManager</span></td><td><code>686e6591f3fcfc4e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.MarkerManager.Log4jMarker</span></td><td><code>bec62c0128e68de0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.ThreadContext</span></td><td><code>4978ae4ad27d07ab</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.ThreadContext.EmptyIterator</span></td><td><code>5ad63a2e98c65d85</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.ThreadContext.EmptyThreadContextStack</span></td><td><code>be7b9911135d4f19</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.AbstractLifeCycle</span></td><td><code>0fd684a6ba2c836e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.LifeCycle.State</span></td><td><code>6b7bad7df9b35978</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.Logger</span></td><td><code>912ae18b862af149</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.Logger.PrivateConfig</span></td><td><code>56eb0ab6a0e0e0ee</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.LoggerContext</span></td><td><code>4f084ee6c6a65fcb</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.LoggerContext.1</span></td><td><code>8acd268ee74798b2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.LoggerContext.ThreadContextDataTask</span></td><td><code>37523f6d74d40ce0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.Version</span></td><td><code>51eaf8dd7e9f35aa</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.AbstractAppender</span></td><td><code>d14c22d293406aa5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.AbstractManager</span></td><td><code>a0d676e8d403af44</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender</span></td><td><code>e29d12b543a05625</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender</span></td><td><code>a089b5c6381e939f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.ConsoleManagerFactory</span></td><td><code>b83e0f70a5903949</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.FactoryData</span></td><td><code>b35b0827b9014146</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.Target</span></td><td><code>eeba81377d783c79</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.Target.1</span></td><td><code>d90ade6c972a8f41</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.ConsoleAppender.Target.2</span></td><td><code>30a3d757bc8faebc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.DefaultErrorHandler</span></td><td><code>e81d43dab865a1d3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.appender.OutputStreamManager</span></td><td><code>1de2e0ad5756908b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.async.ThreadNameCachingStrategy</span></td><td><code>dae742ca034b06e0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.async.ThreadNameCachingStrategy.1</span></td><td><code>1c8718cbba6a189d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.async.ThreadNameCachingStrategy.2</span></td><td><code>90de1765fc97b77f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.AbstractConfiguration</span></td><td><code>0aae973f2068ee34</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.AppenderControl</span></td><td><code>d6102219f245a5db</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.AppenderControlArraySet</span></td><td><code>715b2566a7031fa4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy</span></td><td><code>e00e8fba52678e9a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.ConfigurationFactory</span></td><td><code>8b2bc051e6cea326</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.ConfigurationFactory.Factory</span></td><td><code>efd2e9019d0802f8</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.ConfigurationScheduler</span></td><td><code>3bec14f566f1b4e2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.ConfigurationSource</span></td><td><code>c1fa758d08ea69a7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.DefaultAdvertiser</span></td><td><code>aa3e316d74439638</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.DefaultConfiguration</span></td><td><code>26297c47e23f31af</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.DefaultReliabilityStrategy</span></td><td><code>9d3f07860f25c0f1</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig</span></td><td><code>0268dfa062de8104</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggerConfig.RootLogger</span></td><td><code>53141a5961844f5a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.Loggers</span></td><td><code>9e296bce2aa7b788</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.LoggersPlugin</span></td><td><code>b759070df620ea4e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.Node</span></td><td><code>f7935ecd3e4e21da</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.NullConfiguration</span></td><td><code>724e7aa5bf0a0d2a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.OrderComparator</span></td><td><code>f33f92eaf49b3119</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.Property</span></td><td><code>97a80b7b9d769621</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.ReliabilityStrategyFactory</span></td><td><code>f1667d10e0e958a8</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.builder.api.ConfigurationBuilderFactory</span></td><td><code>b0c44d5d41737510</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.json.JsonConfigurationFactory</span></td><td><code>089541fdec6b711d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverterRegistry</span></td><td><code>0f38be96f979a49a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters</span></td><td><code>440edc399dc3ad2b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.BigDecimalConverter</span></td><td><code>48edbe3f862c077f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.BigIntegerConverter</span></td><td><code>689704ea775a154d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.BooleanConverter</span></td><td><code>dbf7cbfd722c0206</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.ByteArrayConverter</span></td><td><code>a86f0accc844c7da</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.ByteConverter</span></td><td><code>f2263fea65884289</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.CharArrayConverter</span></td><td><code>758f363f29ab831c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.CharacterConverter</span></td><td><code>eac072ad7d512d9f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.CharsetConverter</span></td><td><code>2fede2007e55ab70</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.ClassConverter</span></td><td><code>b244dcd91b42ad43</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.CronExpressionConverter</span></td><td><code>3f452ec1cdf9b9d0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.DoubleConverter</span></td><td><code>66d8e6320b93e046</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.DurationConverter</span></td><td><code>99f19eba40dadf9c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.FileConverter</span></td><td><code>b4d1a0ce122df3dc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.FloatConverter</span></td><td><code>b71c010b6d8cf37d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.InetAddressConverter</span></td><td><code>643424a823e1d20e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.IntegerConverter</span></td><td><code>50afc386e05edad4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.LevelConverter</span></td><td><code>0268235d2ece3d1b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.LongConverter</span></td><td><code>664e0e73e6f9d9dc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.PathConverter</span></td><td><code>dad0b87ccbcdd4b3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.PatternConverter</span></td><td><code>9c9dca6e9fd37ecd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.SecurityProviderConverter</span></td><td><code>09f2dbd8cd072fd2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.ShortConverter</span></td><td><code>8348bb828ee95539</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.StringConverter</span></td><td><code>f91ed6e97b57c9b1</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.UriConverter</span></td><td><code>aceee5d010ea0cf0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.UrlConverter</span></td><td><code>d3b93a23ea2db22e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.convert.TypeConverters.UuidConverter</span></td><td><code>66464114fac9f951</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.processor.PluginCache</span></td><td><code>37c98e7f6cbf2411</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.processor.PluginEntry</span></td><td><code>663403b530d4f793</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.util.PluginBuilder</span></td><td><code>edc23624ff7afc55</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.util.PluginManager</span></td><td><code>85ca69b233551783</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.util.PluginRegistry</span></td><td><code>8276a462c59d3943</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.util.PluginType</span></td><td><code>972f4440b549774d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.validation.ConstraintValidators</span></td><td><code>32f7af140437ff27</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.AbstractPluginVisitor</span></td><td><code>82dcd0e2a880e724</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.PluginAttributeVisitor</span></td><td><code>83ad16becc32b322</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.PluginConfigurationVisitor</span></td><td><code>343c2d1325afb701</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.PluginElementVisitor</span></td><td><code>5e7c93279e24fba9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.plugins.visitors.PluginVisitors</span></td><td><code>5203af790983637f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.properties.PropertiesConfigurationFactory</span></td><td><code>e89ef66e9b9aee86</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.status.StatusConfiguration</span></td><td><code>f85b5c7ffa8a5763</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.status.StatusConfiguration.Verbosity</span></td><td><code>cf6cc2fc05b9a65d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.xml.XmlConfiguration</span></td><td><code>27d3e6a54908361d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.xml.XmlConfigurationFactory</span></td><td><code>3bcb877c70208433</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.config.yaml.YamlConfigurationFactory</span></td><td><code>425c824479164120</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.filter.AbstractFilterable</span></td><td><code>edf7b0ffdf981abc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ContextDataInjectorFactory</span></td><td><code>ec733a2febd09175</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.Log4jContextFactory</span></td><td><code>b3cfc230a0a8c4f6</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.Log4jLogEvent</span></td><td><code>66065d8c12e7095d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.Log4jProvider</span></td><td><code>ad682083bdd9da5c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ReusableLogEventFactory</span></td><td><code>b74b6cd24ee297e2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ThreadContextDataInjector</span></td><td><code>4fc4ba960c454bfc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ThreadContextDataInjector.ForCopyOnWriteThreadContextMap</span></td><td><code>578c93fa5cec560c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ThreadContextDataProvider</span></td><td><code>aae21a06ec8005c4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.impl.ThrowableFormatOptions</span></td><td><code>2009effe8ba51883</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.jmx.ContextSelectorAdmin</span></td><td><code>00b74d513472a021</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.jmx.LoggerConfigAdmin</span></td><td><code>fe822c2c354035d7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.jmx.LoggerContextAdmin</span></td><td><code>7f1cdb3f53dd60a4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.jmx.Server</span></td><td><code>c2532fa7fe6e7889</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.jmx.StatusLoggerAdmin</span></td><td><code>ad918bec8b213332</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.layout.AbstractLayout</span></td><td><code>f8f1f5d697bd4f02</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.layout.AbstractStringLayout</span></td><td><code>269adf525e0bb61e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.layout.PatternLayout</span></td><td><code>73a7f7b0a9f76d16</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.layout.PatternLayout.Builder</span></td><td><code>ae0a9523dec86468</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.layout.PatternLayout.PatternFormatterPatternSerializer</span></td><td><code>c2470999301b0f10</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.layout.PatternLayout.SerializerBuilder</span></td><td><code>9ed2e68f45262faa</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.layout.StringBuilderEncoder</span></td><td><code>0688f81aa0b44570</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.AbstractConfigurationAwareLookup</span></td><td><code>4895c1aa044e5e45</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.AbstractLookup</span></td><td><code>d08517f189574318</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.ConfigurationStrSubstitutor</span></td><td><code>679eb87bd23de0cc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.ContextMapLookup</span></td><td><code>878545458b35c10a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.DateLookup</span></td><td><code>41dae96867d62be1</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.EnvironmentLookup</span></td><td><code>46264968f78f8c44</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.EventLookup</span></td><td><code>dd75a445f25e3918</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.Interpolator</span></td><td><code>46d4b8f1fa98331c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.JavaLookup</span></td><td><code>979c4d6d8ee98647</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.JmxRuntimeInputArgumentsLookup</span></td><td><code>bb8312e292f5d7f3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.Log4jLookup</span></td><td><code>05f637d3ef3ce0f2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.LowerLookup</span></td><td><code>496ec5a1802c2daa</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.MainMapLookup</span></td><td><code>e355770ca02a1c3a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.MapLookup</span></td><td><code>6641db33a00f46b5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.MarkerLookup</span></td><td><code>68a907cf6a9c6600</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.PropertiesLookup</span></td><td><code>7726fe02f0d12733</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.ResourceBundleLookup</span></td><td><code>ebb2e347edc4bf97</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.RuntimeStrSubstitutor</span></td><td><code>e102c9b57ca37987</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher</span></td><td><code>cf8e5d654ffb1255</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher.CharMatcher</span></td><td><code>a0ba8c97ea7bd220</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher.CharSetMatcher</span></td><td><code>361f61ffe828f628</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher.NoMatcher</span></td><td><code>451d10bb8aa78182</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher.StringMatcher</span></td><td><code>b35db1670a511d78</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrMatcher.TrimMatcher</span></td><td><code>23504890e887f112</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StrSubstitutor</span></td><td><code>88d2827b94d7d56b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.StructuredDataLookup</span></td><td><code>5691214d3d1254e7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.SystemPropertiesLookup</span></td><td><code>69c2e41c18c3f264</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.lookup.UpperLookup</span></td><td><code>59173da47d1a870c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.net.JndiManager</span></td><td><code>ebcf0b5e08dd3ff4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.net.JndiManager.JndiManagerFactory</span></td><td><code>324eae9a368afeef</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.AbstractPatternConverter</span></td><td><code>38eb5ef1d6879e91</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.DatePatternConverter</span></td><td><code>f694dc2846750c5f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.DatePatternConverter.CachedTime</span></td><td><code>dc6f9d6a0f746a8f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.DatePatternConverter.FixedFormatter</span></td><td><code>12810c6fadcb9f6c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.DatePatternConverter.Formatter</span></td><td><code>94da5bd802f8bacc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter</span></td><td><code>d6c010df81877a3e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.FormattingInfo</span></td><td><code>cd1e5942349730d0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.LevelPatternConverter</span></td><td><code>bdeebb4fb9d69469</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.LevelPatternConverter.SimpleLevelPatternConverter</span></td><td><code>df534bc4ba778893</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.LineSeparatorPatternConverter</span></td><td><code>e150738ac3b87638</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.LiteralPatternConverter</span></td><td><code>12f741297001fa32</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.LogEventPatternConverter</span></td><td><code>abbf1b25bca401d4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.LoggerPatternConverter</span></td><td><code>f54cf6756be2d691</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.MessagePatternConverter</span></td><td><code>f1c02d2a4496a2e2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.MessagePatternConverter.SimpleMessagePatternConverter</span></td><td><code>9b2ad8e82bc410ca</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.NameAbbreviator</span></td><td><code>e2fb24e20b3aec83</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.NameAbbreviator.MaxElementAbbreviator</span></td><td><code>fd02b3dacb17f660</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.NameAbbreviator.MaxElementAbbreviator.Strategy</span></td><td><code>33b090c49bd35a14</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.NameAbbreviator.MaxElementAbbreviator.Strategy.1</span></td><td><code>da9eb16dfe1ce400</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.NameAbbreviator.MaxElementAbbreviator.Strategy.2</span></td><td><code>b45d7fe30394a437</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.NameAbbreviator.NOPAbbreviator</span></td><td><code>9c61657e079b4335</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.NamePatternConverter</span></td><td><code>d2c2e8049a0e0dcb</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.PatternFormatter</span></td><td><code>5b3fd77017bddd4a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.PatternParser</span></td><td><code>2d245b23159bf338</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.PatternParser.1</span></td><td><code>29b218541b0a654e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.PatternParser.ParserState</span></td><td><code>447592be72009a81</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.PlainTextRenderer</span></td><td><code>1612b1116746c2eb</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.SimpleLiteralPatternConverter</span></td><td><code>822f885fbc4b06f5</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.SimpleLiteralPatternConverter.Space</span></td><td><code>5f58ae3f34de82ad</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.SimpleLiteralPatternConverter.StringValue</span></td><td><code>1e51cb5662844dfd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.ThreadNamePatternConverter</span></td><td><code>aa5b4accdda4272f</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.pattern.ThrowablePatternConverter</span></td><td><code>e4fa1b245db52d2c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.script.ScriptManager</span></td><td><code>d8c946c7752ede8b</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.selector.ClassLoaderContextSelector</span></td><td><code>6a8d2c191659eddf</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.time.MutableInstant</span></td><td><code>0bd7e209aceddc68</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.BasicAuthorizationProvider</span></td><td><code>0648c684855b465d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Booleans</span></td><td><code>42bf55dc1d577312</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.ClockFactory</span></td><td><code>30d4d01bec6a1f55</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.CloseShieldOutputStream</span></td><td><code>821f45dfe9d49d10</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Closer</span></td><td><code>68194ba2d2166b4c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Constants</span></td><td><code>cfd8f882dcd8aa65</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry</span></td><td><code>f3ccb99289b9a8f3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.DefaultShutdownCallbackRegistry.RegisteredCancellable</span></td><td><code>e7c66a70135e41a3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.DummyNanoClock</span></td><td><code>98d345579e110930</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.FileUtils</span></td><td><code>5ed91262c2be0bb7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Loader</span></td><td><code>a7164e9f6991c1ff</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.Log4jThreadFactory</span></td><td><code>37b55372b6067ac9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.NameUtil</span></td><td><code>398356caeda797a0</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.NetUtils</span></td><td><code>43f6a088e6be7f48</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.OptionConverter</span></td><td><code>72943c50d5076ae1</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.ReflectionUtil</span></td><td><code>c56d7fb5e4180421</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.ShutdownCallbackRegistry</span></td><td><code>d4b30ec12a4551fb</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.SystemClock</span></td><td><code>a597a6f53f40c894</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.WatchManager</span></td><td><code>54df6e8053064368</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.WatchManager.LocalUUID</span></td><td><code>373620fef99bf772</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.datetime.FixedDateFormat</span></td><td><code>d6c579bdddb91109</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.datetime.FixedDateFormat.FixedFormat</span></td><td><code>4b7cd8e6c0c4345e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.core.util.datetime.FixedDateFormat.FixedTimeZoneFormat</span></td><td><code>63225578cdf8ebc9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.internal.LogManagerStatus</span></td><td><code>d7c267a16cda8d07</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.AbstractMessageFactory</span></td><td><code>15d5c9221c72dcbd</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.DefaultFlowMessageFactory</span></td><td><code>bf83b1ca110171d4</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.ParameterizedNoReferenceMessageFactory</span></td><td><code>2fcb790285df9911</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.message.ReusableMessageFactory</span></td><td><code>bd2eacb1aa057f7c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.simple.SimpleLogger</span></td><td><code>f67e73a3666cd8d8</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.AbstractLogger</span></td><td><code>7e4f3f2c0e20d172</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.AbstractLogger.LocalLogBuilder</span></td><td><code>4d2ee612e8845e90</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.CopyOnWriteSortedArrayThreadContextMap</span></td><td><code>6c5191209b38ebee</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.DefaultThreadContextMap</span></td><td><code>110446dfda4b75ab</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.DefaultThreadContextStack</span></td><td><code>5f1be1ef78108f50</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.GarbageFreeSortedArrayThreadContextMap</span></td><td><code>4ee19a702bd7d744</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.LoggerContext</span></td><td><code>6e1d19b99880a927</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.LoggerRegistry</span></td><td><code>c4f2dcfd0eaeed50</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.LoggerRegistry.ConcurrentMapFactory</span></td><td><code>180fc5aae1eba577</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.Provider</span></td><td><code>80f64cec5c4537eb</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.StandardLevel</span></td><td><code>c0b339ac672ea2bc</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.spi.ThreadContextMapFactory</span></td><td><code>13004c109b2bc868</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.status.StatusConsoleListener</span></td><td><code>f5af0118bc05911a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.status.StatusLogger</span></td><td><code>0292dc493ff2a5a3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.status.StatusLogger.BoundedQueue</span></td><td><code>e67045e9cbf07dc8</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.Constants</span></td><td><code>a1eca695874a97bf</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.EnvironmentPropertySource</span></td><td><code>4b940b1ccc41760c</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.LoaderUtil</span></td><td><code>42bc1bbd8691ff35</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.LoaderUtil.ThreadContextClassLoaderGetter</span></td><td><code>2223e0e6d6275fab</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertiesPropertySource</span></td><td><code>6ce9a6e1e79e3980</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertiesUtil</span></td><td><code>d0079b0e2cb89d1d</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertiesUtil.Environment</span></td><td><code>2783b162bbd7918e</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertyFilePropertySource</span></td><td><code>1f4646fc06a77a86</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertySource</span></td><td><code>586664f3359979c9</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertySource.Comparator</span></td><td><code>88eda2ac2a423726</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.PropertySource.Util</span></td><td><code>1a155be7e0e9b9c7</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.ProviderUtil</span></td><td><code>66210e9f2d47d913</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.SortedArrayStringMap</span></td><td><code>66ec3e783c9089b3</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.StringBuilders</span></td><td><code>677b4e6862b6ebb2</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.Strings</span></td><td><code>67e91e225c59c66a</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.SystemPropertiesPropertySource</span></td><td><code>6a9de9fc634e3a95</code></td></tr><tr><td><span class="el_class">org.apache.logging.log4j.util.internal.DefaultObjectInputFilter</span></td><td><code>d032400c1ec0b161</code></td></tr><tr><td><span class="el_class">org.apache.maven.plugin.surefire.log.api.NullConsoleLogger</span></td><td><code>80d79e52a7499259</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.AbstractPathConfiguration</span></td><td><code>8182fa1396653f01</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.BaseProviderFactory</span></td><td><code>82593383b8ea92d6</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.BiProperty</span></td><td><code>4945e268841ae2cb</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.BooterDeserializer</span></td><td><code>5e68b147d2c4b22f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ClassLoaderConfiguration</span></td><td><code>dc8fd5c18ebb0e44</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.Classpath</span></td><td><code>c898ea9ca4a65da5</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ClasspathConfiguration</span></td><td><code>fbf5fb96600339ce</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.Command</span></td><td><code>eb1b53eb8cbe7b47</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader</span></td><td><code>0c8d3ca700ec7199</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader.1</span></td><td><code>fbfebde20e2b504c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.CommandReader.CommandRunnable</span></td><td><code>ee59ae4d74408619</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.DumpErrorSingleton</span></td><td><code>2b476b92c5a56cec</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter</span></td><td><code>7c637cf5651513d1</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.1</span></td><td><code>8e738e4578953efa</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.2</span></td><td><code>eed8c1764882af0e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.3</span></td><td><code>c484c4542ee85d76</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.4</span></td><td><code>fdd9c09c784f8eea</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.5</span></td><td><code>7b8c4d35432edce6</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.6</span></td><td><code>b897d54528b69e6d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.7</span></td><td><code>fe5121edb86030bc</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkedBooter.PingScheduler</span></td><td><code>d29065207a6b6c40</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkingReporterFactory</span></td><td><code>076a6c0176f6238b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ForkingRunListener</span></td><td><code>92d4b034b32ca2c0</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.MasterProcessCommand</span></td><td><code>da65de332c2de19d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PpidChecker</span></td><td><code>71b8c658da2ea8d3</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PpidChecker.1</span></td><td><code>a004a9a91ab49ba2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PpidChecker.ProcessInfoConsumer</span></td><td><code>73f319c21fab7e7f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ProcessInfo</span></td><td><code>b5b56cd86f3f0b31</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.PropertiesWrapper</span></td><td><code>ae4bf137cc5290c1</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.ProviderConfiguration</span></td><td><code>d19986536a351b50</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.Shutdown</span></td><td><code>ee9c65017e107986</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.StartupConfiguration</span></td><td><code>a8cc10b01ed27439</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.SystemPropertyManager</span></td><td><code>f47497b1dde50d64</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.booter.TypeEncodedValue</span></td><td><code>5ea9766678ac06a2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.cli.CommandLineOption</span></td><td><code>467fc7f51b73863b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.JUnitPlatformProvider</span></td><td><code>89b934b90ec6eb01</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.RunListenerAdapter</span></td><td><code>02cb8e87a6db2057</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.junitplatform.TestPlanScannerFilter</span></td><td><code>622558f718a42827</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.providerapi.AbstractProvider</span></td><td><code>90f3b08fe8a1c87c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ConsoleOutputCapture</span></td><td><code>b8ae904ed8536017</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ConsoleOutputCapture.ForwardingPrintStream</span></td><td><code>f912ea5d2dac308e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ConsoleOutputCapture.NullOutputStream</span></td><td><code>8d05eb67510fd586</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.ReporterConfiguration</span></td><td><code>4281487891f02f69</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.report.SimpleReportEntry</span></td><td><code>ced572f24a462295</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.io.IOUtils</span></td><td><code>31aed2fcfab3e082</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.io.output.StringBuilderWriter</span></td><td><code>6d33fec8cb3374c0</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.lang3.JavaVersion</span></td><td><code>a8452005cb20bb7d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.lang3.StringUtils</span></td><td><code>4f785afa8bb3a23f</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.lang3.SystemUtils</span></td><td><code>aba69a973b7ba06a</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.commons.lang3.math.NumberUtils</span></td><td><code>d0156407bff7b695</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.shade.org.apache.maven.shared.utils.StringUtils</span></td><td><code>483d14212b21a3ea</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.suite.RunResult</span></td><td><code>f5c7c53a954bcafa</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.DirectoryScannerParameters</span></td><td><code>2b5eeacae469cd1d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.IncludedExcludedPatterns</span></td><td><code>f39908e3b64d7090</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.ResolvedTest</span></td><td><code>a598483e424232d4</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.ResolvedTest.ClassMatcher</span></td><td><code>79be7f2fa77ad8d7</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.ResolvedTest.MethodMatcher</span></td><td><code>7c71374a51e8e61b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.ResolvedTest.Type</span></td><td><code>90e4214668937845</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.RunOrderParameters</span></td><td><code>b4c06223c3099700</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.TestArtifactInfo</span></td><td><code>f703953620e80b33</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.TestListResolver</span></td><td><code>7d372c99b98a147d</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.testset.TestRequest</span></td><td><code>0fa2c0cc34345df2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.CloseableIterator</span></td><td><code>cc15bdebae86d5d2</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.DefaultRunOrderCalculator</span></td><td><code>1aeecbcd3bf6e89b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.DefaultScanResult</span></td><td><code>7fefafdf8c793c36</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.ReflectionUtils</span></td><td><code>8d5f4b05d6d77207</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.RunOrder</span></td><td><code>d2292a6beb4b6337</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.TestsToRun</span></td><td><code>a95363e4b4ba2069</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.TestsToRun.ClassesIterator</span></td><td><code>84a139c598502c0b</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.DaemonThreadFactory</span></td><td><code>21a589f6dedb169c</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.DaemonThreadFactory.NamedThreadFactory</span></td><td><code>682458ca85b067a3</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.DumpFileUtils</span></td><td><code>506743b77fc98f6e</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.ImmutableMap</span></td><td><code>72bcae5e55b4fabb</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.ObjectUtils</span></td><td><code>69a2a92649b44645</code></td></tr><tr><td><span class="el_class">org.apache.maven.surefire.util.internal.StringUtils</span></td><td><code>3a7e4daf0a993e1e</code></td></tr><tr><td><span class="el_class">org.apiguardian.api.API.Status</span></td><td><code>95d0ffea805fc01a</code></td></tr><tr><td><span class="el_class">org.junit.Assert</span></td><td><code>eda6db924019425b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertEquals</span></td><td><code>e7a43ed17afc829d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertFalse</span></td><td><code>414d495eda26f9bb</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertNotEquals</span></td><td><code>344dddd0428fd7d5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertNotNull</span></td><td><code>c8b577b40eb7a898</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertNull</span></td><td><code>aed7910cfcac1f0c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertTrue</span></td><td><code>189741ff9d4e661d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.AssertionUtils</span></td><td><code>932bf67003486569</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.Assertions</span></td><td><code>58a85bf9838e70b7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator</span></td><td><code>ff38de3576197150</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.IndicativeSentences</span></td><td><code>d3479e0ffacb9f9f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.ReplaceUnderscores</span></td><td><code>9c83688ffdea180b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.Simple</span></td><td><code>d01947bfadff13a2</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.DisplayNameGenerator.Standard</span></td><td><code>5f69fbdb73dadd83</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.TestInstance.Lifecycle</span></td><td><code>963667ad7acf2075</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ConditionEvaluationResult</span></td><td><code>fc311dfabd3a0e23</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext</span></td><td><code>6d743ab9f0c8d392</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ExtensionContext.Namespace</span></td><td><code>cc164c19cc2ec84e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.InvocationInterceptor</span></td><td><code>78636fba04d849bd</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.api.extension.ParameterContext</span></td><td><code>4adaa4c175c4c7bc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.JupiterTestEngine</span></td><td><code>011031d0b1fe58db</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.CachingJupiterConfiguration</span></td><td><code>14c3e96d913ba609</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.DefaultJupiterConfiguration</span></td><td><code>150a59979eccb4d7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.EnumConfigurationParameterConverter</span></td><td><code>433eec982a6fabbc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter</span></td><td><code>665228d315b7ac04</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.AbstractExtensionContext</span></td><td><code>9d93b2a6a01092c9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor</span></td><td><code>49129651cf7ad1b5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassExtensionContext</span></td><td><code>67d8de68b849441a</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ClassTestDescriptor</span></td><td><code>2f87db51b4485e07</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.DisplayNameUtils</span></td><td><code>e1e9919d0d67675d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.DynamicDescendantFilter</span></td><td><code>740deb289ee6bd27</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.DynamicDescendantFilter.Mode</span></td><td><code>3595e6d9d7b29d4b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.ExtensionUtils</span></td><td><code>722183e8696c5137</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor</span></td><td><code>6354e569d97134a9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterEngineExtensionContext</span></td><td><code>25e568b41a4f507e</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.JupiterTestDescriptor</span></td><td><code>8af8f2d9d691826c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.LifecycleMethodUtils</span></td><td><code>6249a1cbea332afc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor</span></td><td><code>27c3365cc0c4e908</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.MethodExtensionContext</span></td><td><code>0508b2e2c19f7ac3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.NestedClassTestDescriptor</span></td><td><code>27903433c608934f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils</span></td><td><code>a247fc379f47df66</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor</span></td><td><code>72ce602be7bfa92c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestTemplateExtensionContext</span></td><td><code>8441e020581d53c8</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestTemplateInvocationTestDescriptor</span></td><td><code>e89a350b22346252</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor</span></td><td><code>6630caf1f676d4d3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.AbstractAnnotatedDescriptorWrapper</span></td><td><code>90b10f2d90d7b01b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.AbstractOrderingVisitor</span></td><td><code>f8eb297929c247eb</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.AbstractOrderingVisitor.DescriptorWrapperOrderer</span></td><td><code>c8e1585f8474ed61</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.ClassOrderingVisitor</span></td><td><code>1f09fc1c6b9779bb</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.ClassSelectorResolver</span></td><td><code>47bba3d717485ecb</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.DefaultClassDescriptor</span></td><td><code>9064f3528773a161</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.DiscoverySelectorResolver</span></td><td><code>5dc6be896f50996f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodFinder</span></td><td><code>621c8591e557439a</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodOrderingVisitor</span></td><td><code>7d9864cebac818e1</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver</span></td><td><code>a425905a414a12d5</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType</span></td><td><code>f4804d6ffc25a580</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType.1</span></td><td><code>aeaeeb04a7d2c1a3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType.2</span></td><td><code>4f06e6c9eef38fa4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.MethodSelectorResolver.MethodType.3</span></td><td><code>e3f41424e245bd2a</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsInnerClass</span></td><td><code>d746bcff9a71ec26</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsNestedTestClass</span></td><td><code>f75dfd9ee2347890</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsPotentialTestContainer</span></td><td><code>909f14a1b9fe84dc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestClassWithTests</span></td><td><code>34690a186bfcf3ac</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestFactoryMethod</span></td><td><code>941a8af0d47a68fd</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestMethod</span></td><td><code>f2039dbd13fce110</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestTemplateMethod</span></td><td><code>c13a4260435c18a8</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.discovery.predicates.IsTestableMethod</span></td><td><code>4be487dee199f633</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ConditionEvaluator</span></td><td><code>df91d94b180fe511</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ConstructorInvocation</span></td><td><code>60b80968f2bdedc3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.DefaultParameterContext</span></td><td><code>671e4faaab92e5e9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.DefaultTestInstances</span></td><td><code>0fc6d90567826bc4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExecutableInvoker</span></td><td><code>d2368ccaaa2037b7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExecutableInvoker.ReflectiveInterceptorCall</span></td><td><code>84813aa1a30927b7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionValuesStore</span></td><td><code>e4054d96e0311350</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionValuesStore.CompositeKey</span></td><td><code>66813dae6cf686fe</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionValuesStore.MemoizingSupplier</span></td><td><code>df3ce2070a75daaf</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.ExtensionValuesStore.StoredValue</span></td><td><code>57cb9ab75faabc0f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain</span></td><td><code>9798b2a812d2015d</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain.InterceptedInvocation</span></td><td><code>199eef1acbe0b316</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.InvocationInterceptorChain.ValidatingInvocation</span></td><td><code>f064b1c2c4a4bf86</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext</span></td><td><code>b48cc2a96dab0116</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.Builder</span></td><td><code>d1557432e23d2776</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.JupiterEngineExecutionContext.State</span></td><td><code>3926323ef1c7fb03</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.MethodInvocation</span></td><td><code>8b8fd00463d994df</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.NamespaceAwareStore</span></td><td><code>c0df02c5fe61ed0f</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.execution.TestInstancesProvider</span></td><td><code>357bca6226069e7b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.DisabledCondition</span></td><td><code>1604b4e34c1363e4</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.ExtensionRegistry</span></td><td><code>a610f9723b95715c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.MutableExtensionRegistry</span></td><td><code>4951101173afa58b</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.RepeatedTestExtension</span></td><td><code>32adc631c7f45534</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TempDirectory</span></td><td><code>55b0b3b7482f7782</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TestInfoParameterResolver</span></td><td><code>3c520f8376f91ff7</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TestReporterParameterResolver</span></td><td><code>7187071bfc76c6ac</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutConfiguration</span></td><td><code>e255baf2a634c095</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutDurationParser</span></td><td><code>bb6a412c3829dae9</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.extension.TimeoutExtension</span></td><td><code>e90faf479207d574</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.support.JupiterThrowableCollectorFactory</span></td><td><code>46546a446de4c9c0</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.engine.support.OpenTest4JAndJUnit4AwareThrowableCollector</span></td><td><code>e9ee7d4e1adecdd1</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.ParameterizedTestExtension</span></td><td><code>b87a17b20284af79</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.ParameterizedTestInvocationContext</span></td><td><code>f8d802fd372865a0</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.ParameterizedTestMethodContext</span></td><td><code>8a20e10e1956dd04</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.ParameterizedTestMethodContext.Converter</span></td><td><code>e7c4c3c3e123d2e3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.ParameterizedTestMethodContext.ResolverType</span></td><td><code>cbabfd79a20af1e0</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.ParameterizedTestMethodContext.ResolverType.1</span></td><td><code>f07ce21462843e77</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.ParameterizedTestMethodContext.ResolverType.2</span></td><td><code>47a838a041f72293</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.ParameterizedTestNameFormatter</span></td><td><code>5cb439e0ad4b70d1</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.ParameterizedTestParameterResolver</span></td><td><code>275da3055ce940cb</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.converter.DefaultArgumentConverter</span></td><td><code>b1ab81b15a2015a0</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.converter.DefaultArgumentConverter.StringToBooleanAndCharPrimitiveConverter</span></td><td><code>b031cec8222d1a48</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.converter.DefaultArgumentConverter.StringToCommonJavaTypesConverter</span></td><td><code>f0da18b621a14c26</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.converter.DefaultArgumentConverter.StringToEnumConverter</span></td><td><code>2ced234df9651fdc</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.converter.DefaultArgumentConverter.StringToJavaTimeConverter</span></td><td><code>369b17e824dd6cc3</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.converter.DefaultArgumentConverter.StringToNumericPrimitiveConverter</span></td><td><code>c4fb58023684d800</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.converter.FallbackStringToObjectConverter</span></td><td><code>f324c88368828f15</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.converter.SimpleArgumentConverter</span></td><td><code>4004085a41a45951</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.provider.Arguments</span></td><td><code>78d7f237bc483f2c</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.provider.ValueArgumentsProvider</span></td><td><code>9774c3796cece862</code></td></tr><tr><td><span class="el_class">org.junit.jupiter.params.support.AnnotationConsumerInitializer</span></td><td><code>3dd8da9156a8e7c4</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.function.Try</span></td><td><code>5200e6adc191344c</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.function.Try.Success</span></td><td><code>98cdc5b539e1abfd</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.logging.LoggerFactory</span></td><td><code>39fdfe1f67bc0eda</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.logging.LoggerFactory.DelegatingLogger</span></td><td><code>c71dcf008235901c</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.support.AnnotationSupport</span></td><td><code>183c2f1d296c27a5</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.support.ReflectionSupport</span></td><td><code>945bcc92fedf115d</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.AnnotationUtils</span></td><td><code>192a2ed89eaed125</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassLoaderUtils</span></td><td><code>bf70ae4f9e1a53b8</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassNamePatternFilterUtils</span></td><td><code>661df78b93e45465</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClassUtils</span></td><td><code>60a2276f3701443f</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ClasspathScanner</span></td><td><code>54e3df9bb2092b52</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.CollectionUtils</span></td><td><code>8a03a781a6a5c2d1</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.Preconditions</span></td><td><code>c8254e72fb8d44dd</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils</span></td><td><code>9ac3110b58c001d0</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.ReflectionUtils.HierarchyTraversalMode</span></td><td><code>3125245fc9d900bc</code></td></tr><tr><td><span class="el_class">org.junit.platform.commons.util.StringUtils</span></td><td><code>237c0cb03ac19254</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeFilter</span></td><td><code>6a52e5b4f7292f48</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.CompositeFilter.1</span></td><td><code>cc0aadc5880fb4e4</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.ConfigurationParameters</span></td><td><code>747365aa7092bdb6</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineDiscoveryListener</span></td><td><code>f7640d771a4374d6</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineDiscoveryListener.1</span></td><td><code>a4cdbe8dd38d8f57</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineExecutionListener</span></td><td><code>693fee5cbd4c2df0</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.EngineExecutionListener.1</span></td><td><code>999902b68f81dd9a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.ExecutionRequest</span></td><td><code>f80b4e071e194cb8</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.Filter</span></td><td><code>5ffaaa90df97ca04</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.FilterResult</span></td><td><code>a787a89e1f12d534</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.SelectorResolutionResult</span></td><td><code>b0cf35dcc829d3f4</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.SelectorResolutionResult.Status</span></td><td><code>c505c2274f89f01d</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor</span></td><td><code>aeaac58c9e7df241</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestDescriptor.Type</span></td><td><code>20fe3e02963cb4b9</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestExecutionResult</span></td><td><code>6b1b512d17bb680e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.TestExecutionResult.Status</span></td><td><code>ad256e9fb4407e04</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueId</span></td><td><code>f649a106c8945a6a</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueId.Segment</span></td><td><code>f77d401d3f546230</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.UniqueIdFormat</span></td><td><code>6c86362ad62a1954</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.ClassSelector</span></td><td><code>a1cacad45a144508</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.DiscoverySelectors</span></td><td><code>d9d42aa13a2aea27</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.MethodSelector</span></td><td><code>69292f007e74298d</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.NestedClassSelector</span></td><td><code>62266fe3ab370ebf</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.discovery.NestedMethodSelector</span></td><td><code>8232de14cc0fc6c2</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.AbstractTestDescriptor</span></td><td><code>b9c965daf4d9a476</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.ClassSource</span></td><td><code>37bd92069360f773</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.EngineDescriptor</span></td><td><code>8f2f77769ee0e9c9</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.descriptor.MethodSource</span></td><td><code>1d55ac49f5cabc20</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.ClassContainerSelectorResolver</span></td><td><code>dc6114dc7e983729</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution</span></td><td><code>ea497a81a10c339c</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution.DefaultContext</span></td><td><code>b39f8895aeb78b1e</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver</span></td><td><code>687cbe6b3b72b453</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.Builder</span></td><td><code>21b59a849a1e0107</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver.DefaultInitializationContext</span></td><td><code>1904819635770d62</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver</span></td><td><code>8853a3b7d6531935</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Match</span></td><td><code>922481c433789199</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Match.Type</span></td><td><code>a62615901052f237</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.discovery.SelectorResolver.Resolution</span></td><td><code>c90571b7b64f19a0</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ExclusiveResource</span></td><td><code>efa2e06c87a351c3</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ExclusiveResource.LockMode</span></td><td><code>96e95d210b150f97</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine</span></td><td><code>5c686da27ab7f7b0</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor</span></td><td><code>963cba9b029b4b19</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.LockManager</span></td><td><code>5aedd3bd3957b5a6</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.Node</span></td><td><code>d5630bd7243c23ff</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.Node.SkipResult</span></td><td><code>5aca1404ff0f9294</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeExecutionAdvisor</span></td><td><code>7c2670c7a35cfba6</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTask</span></td><td><code>f652d8cc5e11bdc5</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTask.DefaultDynamicTestExecutor</span></td><td><code>abd00dd511d28b2f</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTask.DynamicTaskState</span></td><td><code>22172225a9caa539</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTestTaskContext</span></td><td><code>bdf88cd3834282a5</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeTreeWalker</span></td><td><code>c689092b060d0b12</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeUtils</span></td><td><code>a7ec8f66d373c169</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.NodeUtils.1</span></td><td><code>5a44a7e2cbf864b4</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService</span></td><td><code>4021fb0b954634b6</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.SingleLock</span></td><td><code>2036ec8b92a38105</code></td></tr><tr><td><span class="el_class">org.junit.platform.engine.support.hierarchical.ThrowableCollector</span></td><td><code>6fd7a27676be3c50</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.EngineDiscoveryResult</span></td><td><code>9f305fb9cafa070a</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.EngineDiscoveryResult.Status</span></td><td><code>c6f73a818e869b3a</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherDiscoveryListener</span></td><td><code>4c7a9b5f0af6369d</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherDiscoveryListener.1</span></td><td><code>d946f222ae757dc1</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherSessionListener</span></td><td><code>e0db832b050d072e</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.LauncherSessionListener.1</span></td><td><code>44b3640faa83f474</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestExecutionListener</span></td><td><code>d5f44a91fb9bf46c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestIdentifier</span></td><td><code>2b393a1d76332bc4</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.TestPlan</span></td><td><code>1c1994f8265f5a45</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.CompositeTestExecutionListener</span></td><td><code>2fec5f997b539877</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultDiscoveryRequest</span></td><td><code>5706e3938a47edbc</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncher</span></td><td><code>75b262c721c1b524</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherConfig</span></td><td><code>6fbfe73d83f861ce</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherSession</span></td><td><code>c8ae22f36a4f9c66</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherSession.ClosedLauncher</span></td><td><code>33b03a5d32880c72</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DefaultLauncherSession.DelegatingLauncher</span></td><td><code>62a46fcfba060cd0</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.DelegatingEngineExecutionListener</span></td><td><code>98129d4f91790da1</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryOrchestrator</span></td><td><code>e664ca6c3b9b649f</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.Phase</span></td><td><code>268c73a2f40672ad</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineDiscoveryResultValidator</span></td><td><code>ae8e824d499c28c0</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineExecutionOrchestrator</span></td><td><code>ef50d34e593c6435</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.EngineIdValidator</span></td><td><code>6ec884e3f1252b64</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ExecutionListenerAdapter</span></td><td><code>b7c31393576744dc</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.InternalTestPlan</span></td><td><code>69b2dd891a2eff73</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfig</span></td><td><code>33646d7c20caa86c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfig.Builder</span></td><td><code>1a313fdb0cf517bd</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters</span></td><td><code>3c045d9855c3582c</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.Builder</span></td><td><code>d4314d11c6458cba</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider</span></td><td><code>dbf430fc5972aefc</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider.2</span></td><td><code>fa4e3fee03856df9</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherConfigurationParameters.ParameterProvider.3</span></td><td><code>90f56b20ab147687</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder</span></td><td><code>75b65d32610aecc6</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherDiscoveryResult</span></td><td><code>d1da1616bd553127</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.LauncherFactory</span></td><td><code>8e309d53ca525395</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ListenerRegistry</span></td><td><code>4950f6c47b32949e</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener</span></td><td><code>4c68ad66a29b4dd7</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener.Outcome</span></td><td><code>b6ca0889820c3cca</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderRegistry</span></td><td><code>b9cb7c73b65895b8</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry</span></td><td><code>f98f04d3db2fcfbb</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.SessionPerRequestLauncher</span></td><td><code>176a2050399cce8f</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.core.StreamInterceptingTestExecutionListener</span></td><td><code>36972afd5e542435</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.LegacyReportingUtils</span></td><td><code>6ff3b7b3b42e8a12</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.UniqueIdTrackingListener</span></td><td><code>267976e1a69ba0ae</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener</span></td><td><code>ee6720edc40a9ccf</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners</span></td><td><code>d311082436d55ae9</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners.LauncherDiscoveryListenerType</span></td><td><code>e18e1a0e62e22287</code></td></tr><tr><td><span class="el_class">org.junit.platform.launcher.listeners.session.LauncherSessionListeners</span></td><td><code>792ecbf10e49d607</code></td></tr><tr><td><span class="el_class">org.mockito.Answers</span></td><td><code>7bb49d321e73bbc5</code></td></tr><tr><td><span class="el_class">org.mockito.ArgumentMatchers</span></td><td><code>09d65d5d1d4b1daf</code></td></tr><tr><td><span class="el_class">org.mockito.Mock.Strictness</span></td><td><code>d94a5cd383c833ad</code></td></tr><tr><td><span class="el_class">org.mockito.Mockito</span></td><td><code>f02ccf756579a358</code></td></tr><tr><td><span class="el_class">org.mockito.MockitoAnnotations</span></td><td><code>4e582471d227b01d</code></td></tr><tr><td><span class="el_class">org.mockito.configuration.DefaultMockitoConfiguration</span></td><td><code>7c1c365c15c2133e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.MockedStaticImpl</span></td><td><code>8866e2f1b55f9bea</code></td></tr><tr><td><span class="el_class">org.mockito.internal.MockitoCore</span></td><td><code>402eae6f392115ba</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.CaptorAnnotationProcessor</span></td><td><code>b1d3667699da5bde</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.ClassPathLoader</span></td><td><code>1837784d8946effa</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.DefaultDoNotMockEnforcer</span></td><td><code>c193dbfbfd7e7112</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.DefaultInjectionEngine</span></td><td><code>9d4f4284084eab52</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.GlobalConfiguration</span></td><td><code>cee487af60df9de4</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.IndependentAnnotationEngine</span></td><td><code>6712157121b4c009</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.IndependentAnnotationEngine.1</span></td><td><code>0c571489b6a84e81</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.InjectingAnnotationEngine</span></td><td><code>093bcb2236e9e096</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.MockAnnotationProcessor</span></td><td><code>da0162e8aaf99d9a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.SpyAnnotationEngine</span></td><td><code>0e1046ea3cb07962</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.ConstructorInjection</span></td><td><code>a2e0cfed216ffbf1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.ConstructorInjection.SimpleArgumentResolver</span></td><td><code>b819c4822ab7a648</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.MockInjection</span></td><td><code>41ad05a9cf251c66</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.MockInjection.OngoingMockInjection</span></td><td><code>4c9b53365f5f9c2a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.MockInjectionStrategy</span></td><td><code>cd40af08f6405c20</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.MockInjectionStrategy.1</span></td><td><code>c6860b7b40dd6139</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.PropertyAndSetterInjection</span></td><td><code>93b665d792e25fd6</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.SpyOnInjectedFieldsHandler</span></td><td><code>6f93949c7ad54b5c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.filter.NameBasedCandidateFilter</span></td><td><code>cbf3f2390a7a068c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.filter.TerminalMockCandidateFilter</span></td><td><code>80b5d7c476edad41</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.filter.TypeBasedCandidateFilter</span></td><td><code>bb38595e57e057ee</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.scanner.InjectMocksScanner</span></td><td><code>1b7ab81c25844e8f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.injection.scanner.MockScanner</span></td><td><code>3b1d7ca146e28785</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.DefaultMockitoPlugins</span></td><td><code>a3d514713c9235ca</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.DefaultPluginSwitch</span></td><td><code>973f142b836667e1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.PluginFileReader</span></td><td><code>1c7aa64a5a5a162d</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.PluginFinder</span></td><td><code>d946fdf7c3f2c58b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.PluginInitializer</span></td><td><code>172e9a5c046703bf</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.PluginLoader</span></td><td><code>2d00b0c8836bfc7a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.PluginRegistry</span></td><td><code>7c6b38725ad08380</code></td></tr><tr><td><span class="el_class">org.mockito.internal.configuration.plugins.Plugins</span></td><td><code>ff53f63a8240eb6e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.DelegatingMethod</span></td><td><code>7ea1353e5c77b5f3</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.MockSettingsImpl</span></td><td><code>365b077b869f6bf5</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.SuspendMethod</span></td><td><code>dc8e823dfe533d87</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.ByteBuddyCrossClassLoaderSerializationSupport</span></td><td><code>91ac516637b8c4ee</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.BytecodeGenerator</span></td><td><code>896014d879c42ec9</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker</span></td><td><code>cba288e9eafa167f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator</span></td><td><code>6e93dbf821b9a251</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.ParameterWritingVisitorWrapper</span></td><td><code>278db3d9ba946d37</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.ParameterWritingVisitorWrapper.MethodParameterStrippingMethodVisitor</span></td><td><code>3def62f49dd7789f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.ParameterWritingVisitorWrapper.ParameterAddingClassVisitor</span></td><td><code>39cd81af1cdb0636</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker</span></td><td><code>4ca287b5c381ce53</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.1</span></td><td><code>ce01c3a23b0fe624</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker.InlineStaticMockControl</span></td><td><code>b7d7a5583c81f254</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockFeatures</span></td><td><code>161a6ae9389d4da3</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice</span></td><td><code>2e6cf306dbc068b8</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.ConstructorShortcut</span></td><td><code>f3a070431524d642</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.ConstructorShortcut.1</span></td><td><code>6d5acc901df77be9</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.RealMethodCall</span></td><td><code>2de7cf23de0250f8</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.ReturnValueWrapper</span></td><td><code>884b8fb93961f044</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.SelfCallInfo</span></td><td><code>f7e9c35073684234</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.SerializableRealMethodCall</span></td><td><code>a725c3f232ef8021</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodAdvice.StaticMethodCall</span></td><td><code>2cfee784cb02b754</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodInterceptor</span></td><td><code>d185526feefc5f6b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.DispatcherDefaultingToRealMethod</span></td><td><code>eb121594c82e0f72</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.ModuleHandler</span></td><td><code>77380dd282d3eb30</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.ModuleHandler.ModuleSystemFound</span></td><td><code>d8515816e294707d</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.SubclassBytecodeGenerator</span></td><td><code>b13aa2a3c3f5de88</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.SubclassInjectionLoader</span></td><td><code>47ea8dba5b15c796</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.SubclassInjectionLoader.WithReflection</span></td><td><code>55a84d6cf8f318a1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator</span></td><td><code>123a98feabc81a7a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator.MockitoMockKey</span></td><td><code>8fb34c2e10b7db99</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.bytebuddy.TypeSupport</span></td><td><code>652949fe1e4bb215</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.instance.DefaultInstantiatorProvider</span></td><td><code>3900ee0969504a34</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.instance.ObjenesisInstantiator</span></td><td><code>e451a21eadbc4d30</code></td></tr><tr><td><span class="el_class">org.mockito.internal.creation.settings.CreationSettings</span></td><td><code>08dae1a1555535b9</code></td></tr><tr><td><span class="el_class">org.mockito.internal.debugging.Localized</span></td><td><code>3453e26ea406565f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.debugging.LocationImpl</span></td><td><code>b13b42f8f18069c1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.handler.InvocationNotifierHandler</span></td><td><code>7c138f78143ab433</code></td></tr><tr><td><span class="el_class">org.mockito.internal.handler.MockHandlerFactory</span></td><td><code>236482acbbebaf4a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.handler.MockHandlerImpl</span></td><td><code>e538c869e7bfe6c6</code></td></tr><tr><td><span class="el_class">org.mockito.internal.handler.NullResultGuardian</span></td><td><code>40a1d637e9eadd05</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.ArgumentsProcessor</span></td><td><code>d50039fd637b3496</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.DefaultInvocationFactory</span></td><td><code>fa6c69aea1733666</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InterceptedInvocation</span></td><td><code>40a1bce4be9e6523</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InterceptedInvocation.1</span></td><td><code>1a1152b98b0c7d86</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InvocationMarker</span></td><td><code>f84ab0aa4401f5c6</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InvocationMatcher</span></td><td><code>0f3f05080ade9bf3</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InvocationMatcher.1</span></td><td><code>80b88eded9ee9335</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.InvocationsFinder</span></td><td><code>fb5d2489463954fb</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.MatcherApplicationStrategy</span></td><td><code>61ba3ebb5e5c5981</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.MatcherApplicationStrategy.MatcherApplicationType</span></td><td><code>338c14ae51b8af66</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.MatchersBinder</span></td><td><code>b39b9426c9814ac7</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.RealMethod.IsIllegal</span></td><td><code>842737381308d1f8</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.SerializableMethod</span></td><td><code>dd74383cfd085ec0</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.StubInfoImpl</span></td><td><code>1314bab3c1422857</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.TypeSafeMatching</span></td><td><code>0523de66dbdeab05</code></td></tr><tr><td><span class="el_class">org.mockito.internal.invocation.mockref.MockWeakReference</span></td><td><code>ac456a2a5b693d6e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.listeners.StubbingLookupNotifier</span></td><td><code>6b94cdf6e74e7282</code></td></tr><tr><td><span class="el_class">org.mockito.internal.listeners.VerificationStartedNotifier</span></td><td><code>b5b225637c7897a9</code></td></tr><tr><td><span class="el_class">org.mockito.internal.matchers.Any</span></td><td><code>0ef740a4f4344abc</code></td></tr><tr><td><span class="el_class">org.mockito.internal.matchers.Equality</span></td><td><code>e1d16aba206ff315</code></td></tr><tr><td><span class="el_class">org.mockito.internal.matchers.Equals</span></td><td><code>1bb4b6d86ac8a29b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.matchers.LocalizedMatcher</span></td><td><code>23d1d86d4409a5f9</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.ArgumentMatcherStorageImpl</span></td><td><code>83a3e5fcf460cd8d</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.MockingProgressImpl</span></td><td><code>f0bb250cbbac6b8b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.MockingProgressImpl.1</span></td><td><code>a1ad00aef40918d3</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.SequenceNumber</span></td><td><code>fd2449d941ed721b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.ThreadSafeMockingProgress</span></td><td><code>5ef9d6f1a875dc18</code></td></tr><tr><td><span class="el_class">org.mockito.internal.progress.ThreadSafeMockingProgress.1</span></td><td><code>1c85bd989b9441aa</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.BaseStubbing</span></td><td><code>0fd68c747fb3e1ac</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.ConsecutiveStubbing</span></td><td><code>1b3fea0e4598e3dc</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.DoAnswerStyleStubbing</span></td><td><code>f2057cd0aee1a50b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.InvocationContainerImpl</span></td><td><code>70d6f02b67d57b4f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.OngoingStubbingImpl</span></td><td><code>646db189ef95b765</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.StubbedInvocationMatcher</span></td><td><code>738da3903cdefa65</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.StubberImpl</span></td><td><code>51d144d9eaccd11c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.AbstractThrowsException</span></td><td><code>79cb6f21f189a6a5</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.CallsRealMethods</span></td><td><code>16da2f316c946fec</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.DefaultAnswerValidator</span></td><td><code>de0c324c57207f3c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.DoesNothing</span></td><td><code>60b69d74203ddc4e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.InvocationInfo</span></td><td><code>558393abbeee5acd</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.Returns</span></td><td><code>b865c001022cfefe</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.answers.ThrowsExceptionForClassType</span></td><td><code>97c5030cfe9fdc05</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.GloballyConfiguredAnswer</span></td><td><code>f308e3faf16f6212</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.ReturnsDeepStubs</span></td><td><code>0ba1eff301842cf2</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.ReturnsEmptyValues</span></td><td><code>fb54ce54650adcb6</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.ReturnsMocks</span></td><td><code>f72b0e3d274c564c</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.ReturnsMoreEmptyValues</span></td><td><code>4a4f9f45d874e56f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.ReturnsSmartNulls</span></td><td><code>8920a999612923c9</code></td></tr><tr><td><span class="el_class">org.mockito.internal.stubbing.defaultanswers.TriesToReturnSelf</span></td><td><code>b9eec415ba57796d</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.Checks</span></td><td><code>c6a1d20be0e11d77</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.ConsoleMockitoLogger</span></td><td><code>b50468c7ba4abdba</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.DefaultMockingDetails</span></td><td><code>eb4060f4b147ea49</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.KotlinInlineClassUtil</span></td><td><code>0581c028953ad812</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.MockCreationValidator</span></td><td><code>e30e40e6aabce2d8</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.MockNameImpl</span></td><td><code>c374206ea5426e18</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.MockUtil</span></td><td><code>22b633290ad851ce</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.ObjectMethodsGuru</span></td><td><code>2e0e0e3f520fd2eb</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.Primitives</span></td><td><code>3126a7777504288b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.StringUtil</span></td><td><code>fc180f2e2cfb19c5</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.collections.HashCodeAndEqualsMockWrapper</span></td><td><code>2ddb4b6df187f1be</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.collections.HashCodeAndEqualsSafeSet</span></td><td><code>f13e3c60a5f3dac1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.collections.HashCodeAndEqualsSafeSet.1</span></td><td><code>04a9da11a07d7dbd</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.collections.Iterables</span></td><td><code>f2f271f84160edef</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.collections.Sets</span></td><td><code>ba0259dd5d0f4cdf</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.DetachedThreadLocal</span></td><td><code>a9d73ba77d913255</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.DetachedThreadLocal.2</span></td><td><code>a27d6b80a8d8bf8e</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.DetachedThreadLocal.3</span></td><td><code>7dd9cb94952e0870</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.DetachedThreadLocal.Cleaner</span></td><td><code>a2ff4aab71c0d490</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentMap</span></td><td><code>d8c9ef1cdcd399b1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentMap.LatentKey</span></td><td><code>f3c567dfe6ce1b23</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentMap.WeakKey</span></td><td><code>b4650d7e8c02ff74</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentMap.WithInlinedExpunction</span></td><td><code>08bb38228585b485</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentSet</span></td><td><code>a3ede170dca14bf5</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentSet.1</span></td><td><code>d59e6e47b1f360e5</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.concurrent.WeakConcurrentSet.Cleaner</span></td><td><code>ffe9c1e341be01e5</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.io.IOUtil</span></td><td><code>dd048f2a9c401164</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.FieldInitializationReport</span></td><td><code>4b61273f03d669ef</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.FieldInitializer</span></td><td><code>4c6aee887e49b554</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.FieldInitializer.ParameterizedConstructorInstantiator</span></td><td><code>76c4297779b98ab3</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.FieldInitializer.ParameterizedConstructorInstantiator.1</span></td><td><code>ef1a88c53c8940ad</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.FieldReader</span></td><td><code>adeb073a2d5e6410</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.GenericMetadataSupport</span></td><td><code>85227a69a82c938b</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.GenericMetadataSupport.FromClassGenericMetadataSupport</span></td><td><code>356b7028b146ffda</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.GenericMetadataSupport.NotGenericReturnTypeSupport</span></td><td><code>f614172becdb4957</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.GenericMetadataSupport.ParameterizedReturnType</span></td><td><code>de8799dae02553cd</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.InstrumentationMemberAccessor</span></td><td><code>c76a00a7d336ca40</code></td></tr><tr><td><span class="el_class">org.mockito.internal.util.reflection.ModuleMemberAccessor</span></td><td><code>137604b9ad99ea8a</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.DefaultRegisteredInvocations</span></td><td><code>2c81cbe8de7c014f</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.MockAwareVerificationMode</span></td><td><code>7d19b8cd6993b835</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.Times</span></td><td><code>4aa9f1560e0ec411</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.VerificationDataImpl</span></td><td><code>c16c5da13b7fc7f1</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.VerificationEventImpl</span></td><td><code>4f05d64f894ba8bc</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.VerificationModeFactory</span></td><td><code>1ca686294e0a83db</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.checkers.MissingInvocationChecker</span></td><td><code>dfc0bf910d6f5cc6</code></td></tr><tr><td><span class="el_class">org.mockito.internal.verification.checkers.NumberOfInvocationsChecker</span></td><td><code>e5dd03036a7ede01</code></td></tr><tr><td><span class="el_class">org.mockito.mock.SerializableMode</span></td><td><code>35d1981ec862bf72</code></td></tr><tr><td><span class="el_class">org.mockito.plugins.AnnotationEngine.NoAction</span></td><td><code>cb985c28ad2cce16</code></td></tr><tr><td><span class="el_class">org.objenesis.ObjenesisBase</span></td><td><code>0c1d2fd83029257f</code></td></tr><tr><td><span class="el_class">org.objenesis.ObjenesisStd</span></td><td><code>f35c83a75caea811</code></td></tr><tr><td><span class="el_class">org.objenesis.instantiator.sun.SunReflectionFactoryHelper</span></td><td><code>d17e7b3403696605</code></td></tr><tr><td><span class="el_class">org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator</span></td><td><code>6156947e7d7c507c</code></td></tr><tr><td><span class="el_class">org.objenesis.strategy.BaseInstantiatorStrategy</span></td><td><code>b0aaa6460452f5ce</code></td></tr><tr><td><span class="el_class">org.objenesis.strategy.PlatformDescription</span></td><td><code>c6456f671febfd7c</code></td></tr><tr><td><span class="el_class">org.objenesis.strategy.StdInstantiatorStrategy</span></td><td><code>abae05ba56ea35a6</code></td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
    \ No newline at end of file
    diff --git a/deliverables/coverage/jacoco/jacoco.csv b/deliverables/coverage/jacoco/jacoco.csv
    new file mode 100644
    index 00000000..861c084a
    --- /dev/null
    +++ b/deliverables/coverage/jacoco/jacoco.csv
    @@ -0,0 +1,78 @@
    +GROUP,PACKAGE,CLASS,INSTRUCTION_MISSED,INSTRUCTION_COVERED,BRANCH_MISSED,BRANCH_COVERED,LINE_MISSED,LINE_COVERED,COMPLEXITY_MISSED,COMPLEXITY_COVERED,METHOD_MISSED,METHOD_COVERED
    +is23am10,it.polimi.is23am10.server.model.pattern,SharedPattern,2,22,1,3,1,5,1,4,0,3
    +is23am10,it.polimi.is23am10.server.model.pattern,PrivatePattern,2,22,1,3,1,5,1,4,0,3
    +is23am10,it.polimi.is23am10.server.model.pattern,AbstractPattern,0,15,0,0,0,6,0,3,0,3
    +is23am10,it.polimi.is23am10.server.network.virtualview,VirtualView,6,143,3,7,1,34,3,18,0,16
    +is23am10,it.polimi.is23am10.server.network.virtualview,VirtualPlayer,10,86,3,5,2,22,4,10,1,9
    +is23am10,it.polimi.is23am10.server.model.game,Game.GameStatus,0,27,0,0,0,5,0,1,0,1
    +is23am10,it.polimi.is23am10.server.model.game,Game,51,640,12,54,11,141,11,67,0,45
    +is23am10,it.polimi.is23am10.server.network.gamehandler,GameHandler,24,241,10,16,9,63,10,19,0,16
    +is23am10,it.polimi.is23am10.server.network.gamehandler,CurrentPlayerHandler,0,24,0,0,0,10,0,7,0,7
    +is23am10,it.polimi.is23am10.server,Server,8,113,4,8,2,31,4,9,0,7
    +is23am10,it.polimi.is23am10.server,Server.ServerStatus,0,15,0,0,0,3,0,1,0,1
    +is23am10,it.polimi.is23am10.server.model.items.tile,Tile,7,54,1,9,2,15,2,10,1,6
    +is23am10,it.polimi.is23am10.server.model.items.tile,Tile.TileType,0,45,0,0,0,8,0,1,0,1
    +is23am10,it.polimi.is23am10.server.model.factory,SharedPatternFactory,12,1760,28,256,6,244,28,137,0,23
    +is23am10,it.polimi.is23am10.server.model.factory,GameFactory,0,62,0,0,0,12,0,1,0,1
    +is23am10,it.polimi.is23am10.server.model.factory,PlayerFactory,0,83,0,8,0,20,0,6,0,2
    +is23am10,it.polimi.is23am10.server.model.factory,PrivatePatternFactory,48,957,0,148,24,200,0,89,0,15
    +is23am10,it.polimi.is23am10.server.controller,ServerControllerAction,12,40,3,3,3,7,3,3,1,2
    +is23am10,it.polimi.is23am10.server.controller,ClientConnectionChecker,68,192,7,17,20,49,8,10,1,5
    +is23am10,it.polimi.is23am10.server.controller,ServerControllerSocket.CommandDeserializer,12,61,2,5,2,13,2,6,0,2
    +is23am10,it.polimi.is23am10.server.controller,ServerControllerSocket,10,222,5,9,2,55,5,8,0,6
    +is23am10,it.polimi.is23am10.server.controller,ServerControllerSocket.CoordinatesDeserializer,21,6,0,0,4,1,1,1,1,1
    +is23am10,it.polimi.is23am10.server.controller,ServerControllerRmiBindings,8,30,2,2,2,16,2,6,0,6
    +is23am10,it.polimi.is23am10.server.controller,ServerControllerState,16,243,3,21,5,71,5,22,2,13
    +is23am10,it.polimi.is23am10.server.network.messages,ChatMessage,0,103,0,2,0,26,0,8,0,7
    +is23am10,it.polimi.is23am10.server.network.messages,AvailableGamesMessage,5,37,1,3,2,11,3,2,2,1
    +is23am10,it.polimi.is23am10.server.network.messages,AbstractMessage,0,9,0,0,0,3,0,3,0,3
    +is23am10,it.polimi.is23am10.server.network.messages,GameMessage,0,35,0,0,0,10,0,2,0,2
    +is23am10,it.polimi.is23am10.server.network.messages,SnoozeACKMessage,0,11,0,0,0,5,0,1,0,1
    +is23am10,it.polimi.is23am10.server.network.messages,AbstractMessage.MessageType,0,33,0,0,0,6,0,1,0,1
    +is23am10,it.polimi.is23am10.server.network.messages,ErrorMessage.ErrorSeverity,0,27,0,0,0,5,0,1,0,1
    +is23am10,it.polimi.is23am10.server.network.messages,ErrorMessage,13,37,2,0,3,13,4,2,3,2
    +is23am10,it.polimi.is23am10.server.model.items.card,AbstractCard,0,20,0,2,0,7,0,4,0,3
    +is23am10,it.polimi.is23am10.server.model.items.card,PrivateCard,3,37,0,4,2,13,1,5,1,3
    +is23am10,it.polimi.is23am10.server.model.items.card,SharedCard,9,86,0,4,3,18,2,5,2,3
    +is23am10,it.polimi.is23am10.server.model.items.bookshelf,Bookshelf,66,312,7,35,9,51,7,28,3,11
    +is23am10,it.polimi.is23am10.utils.config,AppConfig,7,121,2,10,3,47,3,24,1,20
    +is23am10,it.polimi.is23am10.utils.config,AppConfigContext,36,60,0,0,13,21,2,10,2,10
    +is23am10,it.polimi.is23am10.server.model.items.scoreblock,ScoreBlock,7,59,2,4,2,11,3,5,1,4
    +is23am10,it.polimi.is23am10.client,Client.new TypeToken() {...},6,0,0,0,1,0,1,0,1,0
    +is23am10,it.polimi.is23am10.client,Client.MessageDeserializer,61,6,6,0,13,1,6,1,1,1
    +is23am10,it.polimi.is23am10.client,Client.ClientGameStatus,0,21,0,0,0,4,0,1,0,1
    +is23am10,it.polimi.is23am10.client,Client.AlarmTask,0,13,0,0,0,5,0,2,0,2
    +is23am10,it.polimi.is23am10.client,LockObject,0,3,0,0,0,1,0,1,0,1
    +is23am10,it.polimi.is23am10.server.network.playerconnector,AbstractPlayerConnector,24,59,6,4,5,20,4,12,1,10
    +is23am10,it.polimi.is23am10.server.network.playerconnector,PlayerConnectorRmi,15,7,2,0,7,3,4,1,3,1
    +is23am10,it.polimi.is23am10.server.network.playerconnector,PlayerConnectorSocket,11,23,3,3,5,9,3,4,1,3
    +is23am10,it.polimi.is23am10.client.userinterface,VirtualViewSceneHandler,145,0,12,0,42,0,18,0,12,0
    +is23am10,it.polimi.is23am10.client.userinterface,VirtualViewPair,12,0,0,0,5,0,1,0,1,0
    +is23am10,it.polimi.is23am10.server.model.score,Score,44,405,9,39,3,80,10,33,1,18
    +is23am10,it.polimi.is23am10.client.userinterface.helpers,OutputWrapper,57,949,3,47,15,176,7,35,4,13
    +is23am10,it.polimi.is23am10.client.userinterface.helpers,CommandsBuilder,47,0,2,0,10,0,6,0,5,0
    +is23am10,it.polimi.is23am10.client.userinterface.helpers,CLIStrings,3,130,0,0,1,21,1,1,1,1
    +is23am10,it.polimi.is23am10.client.userinterface.helpers,OutputWrapper.OutputLevel,0,39,0,0,0,7,0,1,0,1
    +is23am10,it.polimi.is23am10.client.userinterface.helpers,PrivatePatternsHelper,8,97,0,0,3,14,1,2,1,2
    +is23am10,it.polimi.is23am10.client.userinterface.helpers,ANSICodes,3,0,0,0,1,0,1,0,1,0
    +is23am10,it.polimi.is23am10.server.model.items.board,Board,27,921,9,55,5,88,10,45,1,22
    +is23am10,it.polimi.is23am10.server.model.player,Player,25,143,2,16,8,46,5,26,3,19
    +is23am10,it.polimi.is23am10.server.command,AddPlayerCommand,0,58,2,6,0,15,2,7,0,5
    +is23am10,it.polimi.is23am10.server.command,AbstractCommand.Opcode,0,45,0,0,0,8,0,1,0,1
    +is23am10,it.polimi.is23am10.server.command,GetAvailableGamesCommand,0,12,0,0,0,5,0,2,0,2
    +is23am10,it.polimi.is23am10.server.command,SnoozeGameTimerCommand,0,42,1,5,0,12,1,6,0,4
    +is23am10,it.polimi.is23am10.server.command,StartGameCommand,0,53,2,6,0,15,2,7,0,5
    +is23am10,it.polimi.is23am10.server.command,SendChatMessageCommand,18,0,0,0,7,0,3,0,3,0
    +is23am10,it.polimi.is23am10.server.command,MoveTilesCommand,0,74,3,7,0,18,3,8,0,6
    +is23am10,it.polimi.is23am10.server.command,AbstractCommand,1,12,1,1,0,4,1,2,0,2
    +is23am10,it.polimi.is23am10.utils,CustomKeyDeserializer,24,0,0,0,5,0,2,0,2,0
    +is23am10,it.polimi.is23am10.utils,ThreadLocalTypeAdapterFactory,5,10,1,1,1,3,1,2,0,2
    +is23am10,it.polimi.is23am10.utils,CustomKeySerializer,19,0,0,0,5,0,2,0,2,0
    +is23am10,it.polimi.is23am10.utils,CommandSyntaxValidator,79,16,29,3,24,3,19,1,3,1
    +is23am10,it.polimi.is23am10.utils,MovesValidator,3,366,7,51,1,70,7,36,0,14
    +is23am10,it.polimi.is23am10.utils,IndexValidator,8,28,4,8,2,4,4,4,0,2
    +is23am10,it.polimi.is23am10.utils,Coordinates,18,73,3,3,2,19,4,8,1,8
    +is23am10,it.polimi.is23am10.utils,MoveCommandHelper,70,0,8,0,10,0,5,0,1,0
    +is23am10,it.polimi.is23am10.utils,ThreadLocalTypeAdapterFactory.new TypeAdapter() {...},26,0,0,0,8,0,3,0,3,0
    +is23am10,it.polimi.is23am10.utils,MoveTileCommandTypeAdaptor,48,32,2,2,7,8,2,3,0,3
    +is23am10,it.polimi.is23am10.utils,ArgParser,10,177,3,26,3,36,3,17,0,1
    diff --git a/deliverables/coverage/jacoco/jacoco.xml b/deliverables/coverage/jacoco/jacoco.xml
    new file mode 100644
    index 00000000..086ac4ad
    --- /dev/null
    +++ b/deliverables/coverage/jacoco/jacoco.xml
    @@ -0,0 +1 @@
    +<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!DOCTYPE report PUBLIC "-//JACOCO//DTD Report 1.1//EN" "report.dtd"><report name="is23am10"><sessioninfo id="fbxpsmbp.local-4881f0b0" start="1688108882593" dump="1688108897738"/><package name="it/polimi/is23am10/server/model/pattern"><class name="it/polimi/is23am10/server/model/pattern/SharedPattern" sourcefilename="SharedPattern.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Object;Ljava/lang/Integer;)V" line="18"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="28"><counter type="INSTRUCTION" missed="2" covered="13"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="40"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="2" covered="22"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/model/pattern/PrivatePattern" sourcefilename="PrivatePattern.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Object;Ljava/lang/Integer;)V" line="20"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="30"><counter type="INSTRUCTION" missed="2" covered="13"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="42"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="2" covered="22"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/model/pattern/AbstractPattern" sourcefilename="AbstractPattern.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Object;Ljava/lang/Integer;)V" line="31"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getRule" desc="()Ljava/lang/Object;" line="42"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getIndex" desc="()Ljava/lang/Integer;" line="51"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="PrivatePattern.java"><line nr="20" mi="0" ci="4" mb="0" cb="0"/><line nr="21" mi="0" ci="1" mb="0" cb="0"/><line nr="30" mi="0" ci="3" mb="1" cb="1"/><line nr="31" mi="2" ci="0" mb="0" cb="0"/><line nr="33" mi="0" ci="10" mb="0" cb="2"/><line nr="42" mi="0" ci="4" mb="0" cb="0"/><counter type="INSTRUCTION" missed="2" covered="22"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="AbstractPattern.java"><line nr="31" mi="0" ci="2" mb="0" cb="0"/><line nr="32" mi="0" ci="3" mb="0" cb="0"/><line nr="33" mi="0" ci="3" mb="0" cb="0"/><line nr="34" mi="0" ci="1" mb="0" cb="0"/><line nr="42" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="SharedPattern.java"><line nr="18" mi="0" ci="4" mb="0" cb="0"/><line nr="19" mi="0" ci="1" mb="0" cb="0"/><line nr="28" mi="0" ci="3" mb="1" cb="1"/><line nr="29" mi="2" ci="0" mb="0" cb="0"/><line nr="31" mi="0" ci="10" mb="0" cb="2"/><line nr="40" mi="0" ci="4" mb="0" cb="0"/><counter type="INSTRUCTION" missed="2" covered="22"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="4" covered="59"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="2" covered="16"/><counter type="COMPLEXITY" missed="2" covered="11"/><counter type="METHOD" missed="0" covered="9"/><counter type="CLASS" missed="0" covered="3"/></package><package name="it/polimi/is23am10/server/network/virtualview"><class name="it/polimi/is23am10/server/network/virtualview/VirtualView" sourcefilename="VirtualView.java"><method name="getGameId" desc="()Ljava/util/UUID;" line="74"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayers" desc="()Ljava/util/List;" line="83"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMaxPlayers" desc="()Ljava/lang/Integer;" line="92"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getActivePlayer" desc="()Lit/polimi/is23am10/server/network/virtualview/VirtualPlayer;" line="101"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getFirstPlayer" desc="()Lit/polimi/is23am10/server/network/virtualview/VirtualPlayer;" line="110"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getWinnerPlayer" desc="()Lit/polimi/is23am10/server/network/virtualview/VirtualPlayer;" line="119"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGameBoard" desc="()Lit/polimi/is23am10/server/model/items/board/Board;" line="128"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getSharedCards" desc="()Ljava/util/List;" line="137"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getStatus" desc="()Lit/polimi/is23am10/server/model/game/Game$GameStatus;" line="146"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getDisconnectedPlayersNum" desc="()Ljava/lang/Integer;" line="155"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/game/Game;)V" line="167"><counter type="INSTRUCTION" missed="2" covered="76"/><counter type="BRANCH" missed="1" covered="5"/><counter type="LINE" missed="0" covered="17"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="192"><counter type="INSTRUCTION" missed="2" covered="12"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="205"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$new$2" desc="(Lit/polimi/is23am10/server/model/items/card/SharedCard;)Ljava/lang/Integer;" line="181"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$new$1" desc="(Lit/polimi/is23am10/server/model/player/Player;)Lit/polimi/is23am10/server/network/virtualview/VirtualPlayer;" line="176"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getDisconnectedPlayersNum$0" desc="(Lit/polimi/is23am10/server/network/virtualview/VirtualPlayer;)Z" line="157"><counter type="INSTRUCTION" missed="2" covered="5"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="6" covered="143"/><counter type="BRANCH" missed="3" covered="7"/><counter type="LINE" missed="1" covered="34"/><counter type="COMPLEXITY" missed="3" covered="18"/><counter type="METHOD" missed="0" covered="16"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/virtualview/VirtualPlayer" sourcefilename="VirtualPlayer.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/player/Player;)V" line="56"><counter type="INSTRUCTION" missed="0" covered="38"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayerId" desc="()Ljava/util/UUID;" line="72"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getScore" desc="()Lit/polimi/is23am10/server/model/score/Score;" line="80"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getBookshelf" desc="()Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;" line="88"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPrivateCardIndex" desc="()Ljava/lang/Integer;" line="96"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayerName" desc="()Ljava/lang/String;" line="104"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getIsConnected" desc="()Z" line="112"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="obfuscatePrivateCard" desc="()V" line="121"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="130"><counter type="INSTRUCTION" missed="2" covered="22"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="1" covered="4"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="144"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="10" covered="86"/><counter type="BRANCH" missed="3" covered="5"/><counter type="LINE" missed="2" covered="22"/><counter type="COMPLEXITY" missed="4" covered="10"/><counter type="METHOD" missed="1" covered="9"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="VirtualPlayer.java"><line nr="56" mi="0" ci="2" mb="0" cb="0"/><line nr="57" mi="0" ci="2" mb="1" cb="1"/><line nr="58" mi="0" ci="4" mb="0" cb="0"/><line nr="59" mi="0" ci="4" mb="0" cb="0"/><line nr="60" mi="0" ci="7" mb="0" cb="0"/><line nr="61" mi="0" ci="7" mb="0" cb="0"/><line nr="62" mi="0" ci="7" mb="0" cb="0"/><line nr="63" mi="0" ci="4" mb="0" cb="0"/><line nr="65" mi="0" ci="1" mb="0" cb="0"/><line nr="72" mi="0" ci="3" mb="0" cb="0"/><line nr="80" mi="0" ci="3" mb="0" cb="0"/><line nr="88" mi="0" ci="3" mb="0" cb="0"/><line nr="96" mi="0" ci="3" mb="0" cb="0"/><line nr="104" mi="0" ci="3" mb="0" cb="0"/><line nr="112" mi="0" ci="3" mb="0" cb="0"/><line nr="121" mi="0" ci="4" mb="0" cb="0"/><line nr="122" mi="0" ci="3" mb="0" cb="0"/><line nr="123" mi="0" ci="1" mb="0" cb="0"/><line nr="130" mi="0" ci="3" mb="1" cb="1"/><line nr="131" mi="2" ci="0" mb="0" cb="0"/><line nr="134" mi="0" ci="3" mb="0" cb="0"/><line nr="135" mi="0" ci="10" mb="0" cb="2"/><line nr="136" mi="0" ci="6" mb="1" cb="1"/><line nr="144" mi="8" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="10" covered="86"/><counter type="BRANCH" missed="3" covered="5"/><counter type="LINE" missed="2" covered="22"/><counter type="COMPLEXITY" missed="4" covered="10"/><counter type="METHOD" missed="1" covered="9"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="VirtualView.java"><line nr="74" mi="0" ci="3" mb="0" cb="0"/><line nr="83" mi="0" ci="3" mb="0" cb="0"/><line nr="92" mi="0" ci="3" mb="0" cb="0"/><line nr="101" mi="0" ci="3" mb="0" cb="0"/><line nr="110" mi="0" ci="3" mb="0" cb="0"/><line nr="119" mi="0" ci="3" mb="0" cb="0"/><line nr="128" mi="0" ci="3" mb="0" cb="0"/><line nr="137" mi="0" ci="3" mb="0" cb="0"/><line nr="146" mi="0" ci="3" mb="0" cb="0"/><line nr="155" mi="0" ci="4" mb="0" cb="0"/><line nr="156" mi="0" ci="2" mb="0" cb="0"/><line nr="157" mi="2" ci="6" mb="1" cb="1"/><line nr="158" mi="0" ci="2" mb="0" cb="0"/><line nr="167" mi="0" ci="2" mb="0" cb="0"/><line nr="168" mi="0" ci="4" mb="0" cb="0"/><line nr="169" mi="2" ci="10" mb="1" cb="1"/><line nr="170" mi="0" ci="12" mb="0" cb="2"/><line nr="171" mi="0" ci="7" mb="0" cb="0"/><line nr="172" mi="0" ci="4" mb="0" cb="0"/><line nr="173" mi="0" ci="4" mb="0" cb="0"/><line nr="174" mi="0" ci="3" mb="0" cb="0"/><line nr="175" mi="0" ci="2" mb="0" cb="0"/><line nr="176" mi="0" ci="6" mb="0" cb="0"/><line nr="177" mi="0" ci="4" mb="0" cb="0"/><line nr="179" mi="0" ci="3" mb="0" cb="0"/><line nr="180" mi="0" ci="2" mb="0" cb="0"/><line nr="181" mi="0" ci="6" mb="0" cb="0"/><line nr="182" mi="0" ci="4" mb="0" cb="0"/><line nr="184" mi="0" ci="12" mb="0" cb="2"/><line nr="185" mi="0" ci="1" mb="0" cb="0"/><line nr="192" mi="0" ci="3" mb="1" cb="1"/><line nr="193" mi="2" ci="0" mb="0" cb="0"/><line nr="196" mi="0" ci="3" mb="0" cb="0"/><line nr="197" mi="0" ci="6" mb="0" cb="0"/><line nr="205" mi="0" ci="4" mb="0" cb="0"/><counter type="INSTRUCTION" missed="6" covered="143"/><counter type="BRANCH" missed="3" covered="7"/><counter type="LINE" missed="1" covered="34"/><counter type="COMPLEXITY" missed="3" covered="18"/><counter type="METHOD" missed="0" covered="16"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="16" covered="229"/><counter type="BRANCH" missed="6" covered="12"/><counter type="LINE" missed="3" covered="56"/><counter type="COMPLEXITY" missed="7" covered="28"/><counter type="METHOD" missed="1" covered="25"/><counter type="CLASS" missed="0" covered="2"/></package><package name="it/polimi/is23am10/server/model/game"><class name="it/polimi/is23am10/server/model/game/Game$GameStatus" sourcefilename="Game.java"><method name="&lt;clinit&gt;" desc="()V" line="130"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/model/game/Game" sourcefilename="Game.java"><method name="&lt;init&gt;" desc="()V" line="89"><counter type="INSTRUCTION" missed="0" covered="29"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getAssignedSharedPatterns" desc="()Ljava/util/List;" line="177"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getAssignedPrivatePatterns" desc="()Ljava/util/List;" line="187"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addAssignedSharedPattern" desc="(Lit/polimi/is23am10/server/model/pattern/SharedPattern;)V" line="199"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addAssignedPrivatePattern" desc="(Lit/polimi/is23am10/server/model/pattern/PrivatePattern;)V" line="214"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validMaxPlayers" desc="(Ljava/lang/Integer;)Z" line="228"><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="BRANCH" missed="1" covered="5"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setMaxPlayers" desc="(Ljava/lang/Integer;)V" line="244"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setFirstPlayer" desc="(Lit/polimi/is23am10/server/model/player/Player;)V" line="257"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addPlayer" desc="(Lit/polimi/is23am10/server/model/player/Player;)V" line="281"><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addPlayer" desc="(Ljava/lang/String;)Lit/polimi/is23am10/server/model/player/Player;" line="312"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addPlayers" desc="(Ljava/util/List;)V" line="332"><counter type="INSTRUCTION" missed="15" covered="35"/><counter type="BRANCH" missed="3" covered="5"/><counter type="LINE" missed="4" covered="7"/><counter type="COMPLEXITY" missed="3" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setGameBoard" desc="()V" line="355"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setSharedCards" desc="(Ljava/util/List;)V" line="363"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setStatus" desc="(Lit/polimi/is23am10/server/model/game/Game$GameStatus;)V" line="375"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGameId" desc="()Ljava/util/UUID;" line="385"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMaxPlayer" desc="()Ljava/lang/Integer;" line="395"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayers" desc="()Ljava/util/List;" line="405"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getFirstPlayer" desc="()Lit/polimi/is23am10/server/model/player/Player;" line="416"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGameBoard" desc="()Lit/polimi/is23am10/server/model/items/board/Board;" line="426"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getSharedCard" desc="()Ljava/util/List;" line="436"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getStatus" desc="()Lit/polimi/is23am10/server/model/game/Game$GameStatus;" line="446"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayerNames" desc="()Ljava/util/List;" line="456"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayerByName" desc="(Ljava/lang/String;)Lit/polimi/is23am10/server/model/player/Player;" line="470"><counter type="INSTRUCTION" missed="9" covered="17"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="2" covered="6"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setActivePlayer" desc="(Lit/polimi/is23am10/server/model/player/Player;)V" line="489"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setWinnerPlayer" desc="(Lit/polimi/is23am10/server/model/player/Player;)V" line="498"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getActivePlayer" desc="()Lit/polimi/is23am10/server/model/player/Player;" line="507"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getWinnerPlayer" desc="()Lit/polimi/is23am10/server/model/player/Player;" line="516"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="assignScoreBlocks" desc="()V" line="527"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="nextTurn" desc="()V" line="552"><counter type="INSTRUCTION" missed="4" covered="62"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="3" covered="13"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="takeTileAction" desc="(Lit/polimi/is23am10/utils/Coordinates;)Lit/polimi/is23am10/server/model/items/tile/Tile;" line="592"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="putTileAction" desc="(Lit/polimi/is23am10/server/model/items/tile/Tile;Lit/polimi/is23am10/utils/Coordinates;)V" line="608"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isLastPlayer" desc="(Lit/polimi/is23am10/server/model/player/Player;)Z" line="619"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkEndGame" desc="()V" line="629"><counter type="INSTRUCTION" missed="0" covered="37"/><counter type="BRANCH" missed="0" covered="10"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="decideWinner" desc="(Lit/polimi/is23am10/server/model/player/Player;Lit/polimi/is23am10/server/model/player/Player;)Lit/polimi/is23am10/server/model/player/Player;" line="651"><counter type="INSTRUCTION" missed="3" covered="79"/><counter type="BRANCH" missed="1" covered="9"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><method name="assignPlayers" desc="()V" line="673"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="endGame" desc="()V" line="684"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getDisconnectedPlayersNum" desc="()Ljava/lang/Integer;" line="696"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="activePlayerMove" desc="(Ljava/util/Map;)V" line="743"><counter type="INSTRUCTION" missed="0" covered="38"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getDisconnectedPlayersNum$5" desc="(Lit/polimi/is23am10/server/model/player/Player;)Z" line="698"><counter type="INSTRUCTION" missed="2" covered="5"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$checkEndGame$4" desc="(Lit/polimi/is23am10/server/model/player/Player;)Z" line="636"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$assignScoreBlocks$3" desc="(Lit/polimi/is23am10/server/model/items/card/SharedCard;)V" line="528"><counter type="INSTRUCTION" missed="18" covered="11"/><counter type="BRANCH" missed="3" covered="1"/><counter type="LINE" missed="2" covered="2"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getPlayerByName$2" desc="(Ljava/lang/String;Lit/polimi/is23am10/server/model/player/Player;)Z" line="474"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$setFirstPlayer$1" desc="(Lit/polimi/is23am10/server/model/player/Player;)V" line="260"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$setFirstPlayer$0" desc="(Lit/polimi/is23am10/server/model/player/Player;Lit/polimi/is23am10/server/model/player/Player;)Z" line="258"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="70"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="51" covered="640"/><counter type="BRANCH" missed="12" covered="54"/><counter type="LINE" missed="11" covered="141"/><counter type="COMPLEXITY" missed="11" covered="67"/><counter type="METHOD" missed="0" covered="45"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Game.java"><line nr="70" mi="0" ci="3" mb="0" cb="0"/><line nr="76" mi="0" ci="4" mb="0" cb="0"/><line nr="89" mi="0" ci="3" mb="0" cb="0"/><line nr="96" mi="0" ci="5" mb="0" cb="0"/><line nr="130" mi="0" ci="3" mb="0" cb="0"/><line nr="131" mi="0" ci="6" mb="0" cb="0"/><line nr="132" mi="0" ci="6" mb="0" cb="0"/><line nr="133" mi="0" ci="6" mb="0" cb="0"/><line nr="134" mi="0" ci="6" mb="0" cb="0"/><line nr="158" mi="0" ci="5" mb="0" cb="0"/><line nr="164" mi="0" ci="2" mb="0" cb="0"/><line nr="165" mi="0" ci="3" mb="0" cb="0"/><line nr="166" mi="0" ci="5" mb="0" cb="0"/><line nr="167" mi="0" ci="5" mb="0" cb="0"/><line nr="168" mi="0" ci="1" mb="0" cb="0"/><line nr="177" mi="0" ci="3" mb="0" cb="0"/><line nr="187" mi="0" ci="3" mb="0" cb="0"/><line nr="199" mi="0" ci="2" mb="0" cb="2"/><line nr="200" mi="0" ci="5" mb="0" cb="0"/><line nr="202" mi="0" ci="5" mb="0" cb="0"/><line nr="203" mi="0" ci="1" mb="0" cb="0"/><line nr="214" mi="0" ci="2" mb="0" cb="2"/><line nr="215" mi="0" ci="5" mb="0" cb="0"/><line nr="217" mi="0" ci="5" mb="0" cb="0"/><line nr="218" mi="0" ci="1" mb="0" cb="0"/><line nr="228" mi="0" ci="2" mb="0" cb="2"/><line nr="229" mi="0" ci="4" mb="0" cb="0"/><line nr="231" mi="0" ci="14" mb="1" cb="3"/><line nr="244" mi="0" ci="4" mb="0" cb="2"/><line nr="245" mi="0" ci="4" mb="0" cb="0"/><line nr="247" mi="0" ci="3" mb="0" cb="0"/><line nr="248" mi="0" ci="1" mb="0" cb="0"/><line nr="257" mi="0" ci="5" mb="0" cb="0"/><line nr="258" mi="0" ci="5" mb="0" cb="0"/><line nr="259" mi="0" ci="3" mb="0" cb="0"/><line nr="260" mi="0" ci="5" mb="0" cb="0"/><line nr="261" mi="0" ci="1" mb="0" cb="0"/><line nr="281" mi="0" ci="14" mb="0" cb="2"/><line nr="282" mi="0" ci="6" mb="0" cb="0"/><line nr="283" mi="0" ci="7" mb="0" cb="2"/><line nr="284" mi="0" ci="3" mb="0" cb="0"/><line nr="285" mi="0" ci="2" mb="0" cb="0"/><line nr="287" mi="0" ci="1" mb="0" cb="0"/><line nr="312" mi="0" ci="7" mb="0" cb="2"/><line nr="313" mi="0" ci="6" mb="0" cb="0"/><line nr="316" mi="0" ci="4" mb="0" cb="0"/><line nr="317" mi="0" ci="3" mb="0" cb="0"/><line nr="318" mi="0" ci="2" mb="0" cb="0"/><line nr="332" mi="0" ci="2" mb="1" cb="1"/><line nr="333" mi="4" ci="0" mb="0" cb="0"/><line nr="335" mi="0" ci="10" mb="1" cb="1"/><line nr="336" mi="4" ci="0" mb="0" cb="0"/><line nr="338" mi="0" ci="10" mb="0" cb="2"/><line nr="339" mi="0" ci="6" mb="1" cb="1"/><line nr="340" mi="3" ci="0" mb="0" cb="0"/><line nr="341" mi="4" ci="0" mb="0" cb="0"/><line nr="343" mi="0" ci="1" mb="0" cb="0"/><line nr="344" mi="0" ci="5" mb="0" cb="0"/><line nr="345" mi="0" ci="1" mb="0" cb="0"/><line nr="355" mi="0" ci="7" mb="0" cb="0"/><line nr="356" mi="0" ci="1" mb="0" cb="0"/><line nr="363" mi="0" ci="5" mb="0" cb="0"/><line nr="364" mi="0" ci="8" mb="0" cb="0"/><line nr="365" mi="0" ci="8" mb="0" cb="0"/><line nr="366" mi="0" ci="1" mb="0" cb="0"/><line nr="375" mi="0" ci="3" mb="0" cb="0"/><line nr="376" mi="0" ci="1" mb="0" cb="0"/><line nr="385" mi="0" ci="3" mb="0" cb="0"/><line nr="395" mi="0" ci="3" mb="0" cb="0"/><line nr="405" mi="0" ci="3" mb="0" cb="0"/><line nr="416" mi="0" ci="3" mb="0" cb="0"/><line nr="426" mi="0" ci="3" mb="0" cb="0"/><line nr="436" mi="0" ci="3" mb="0" cb="0"/><line nr="446" mi="0" ci="3" mb="0" cb="0"/><line nr="456" mi="0" ci="5" mb="0" cb="0"/><line nr="457" mi="0" ci="1" mb="0" cb="0"/><line nr="458" mi="0" ci="3" mb="0" cb="0"/><line nr="470" mi="0" ci="2" mb="1" cb="1"/><line nr="471" mi="5" ci="0" mb="0" cb="0"/><line nr="473" mi="0" ci="5" mb="0" cb="0"/><line nr="474" mi="0" ci="6" mb="0" cb="0"/><line nr="475" mi="0" ci="2" mb="0" cb="0"/><line nr="476" mi="0" ci="3" mb="1" cb="1"/><line nr="477" mi="0" ci="4" mb="0" cb="0"/><line nr="479" mi="4" ci="0" mb="0" cb="0"/><line nr="489" mi="0" ci="3" mb="0" cb="0"/><line nr="490" mi="0" ci="1" mb="0" cb="0"/><line nr="498" mi="0" ci="3" mb="0" cb="0"/><line nr="499" mi="0" ci="1" mb="0" cb="0"/><line nr="507" mi="0" ci="3" mb="0" cb="0"/><line nr="516" mi="0" ci="3" mb="0" cb="0"/><line nr="527" mi="0" ci="5" mb="0" cb="0"/><line nr="528" mi="6" ci="10" mb="3" cb="1"/><line nr="529" mi="4" ci="0" mb="0" cb="0"/><line nr="530" mi="8" ci="0" mb="0" cb="0"/><line nr="532" mi="0" ci="1" mb="0" cb="0"/><line nr="533" mi="0" ci="1" mb="0" cb="0"/><line nr="552" mi="0" ci="4" mb="0" cb="0"/><line nr="553" mi="0" ci="2" mb="0" cb="0"/><line nr="554" mi="0" ci="3" mb="0" cb="0"/><line nr="555" mi="0" ci="2" mb="0" cb="0"/><line nr="563" mi="0" ci="4" mb="0" cb="2"/><line nr="565" mi="0" ci="3" mb="0" cb="0"/><line nr="566" mi="1" ci="0" mb="0" cb="0"/><line nr="567" mi="2" ci="0" mb="0" cb="0"/><line nr="568" mi="1" ci="0" mb="0" cb="0"/><line nr="569" mi="0" ci="1" mb="0" cb="0"/><line nr="570" mi="0" ci="12" mb="0" cb="0"/><line nr="572" mi="0" ci="7" mb="0" cb="2"/><line nr="573" mi="0" ci="9" mb="0" cb="0"/><line nr="575" mi="0" ci="7" mb="0" cb="0"/><line nr="576" mi="0" ci="7" mb="0" cb="0"/><line nr="578" mi="0" ci="1" mb="0" cb="0"/><line nr="592" mi="0" ci="8" mb="0" cb="0"/><line nr="608" mi="0" ci="9" mb="0" cb="0"/><line nr="609" mi="0" ci="1" mb="0" cb="0"/><line nr="619" mi="0" ci="12" mb="0" cb="0"/><line nr="620" mi="0" ci="16" mb="1" cb="3"/><line nr="629" mi="0" ci="9" mb="0" cb="4"/><line nr="630" mi="0" ci="4" mb="0" cb="0"/><line nr="632" mi="0" ci="3" mb="0" cb="0"/><line nr="635" mi="0" ci="11" mb="0" cb="4"/><line nr="636" mi="0" ci="10" mb="0" cb="2"/><line nr="637" mi="0" ci="2" mb="0" cb="0"/><line nr="639" mi="0" ci="1" mb="0" cb="0"/><line nr="651" mi="0" ci="4" mb="0" cb="0"/><line nr="652" mi="0" ci="4" mb="0" cb="0"/><line nr="654" mi="0" ci="4" mb="0" cb="2"/><line nr="656" mi="0" ci="12" mb="0" cb="0"/><line nr="657" mi="3" ci="11" mb="1" cb="1"/><line nr="658" mi="0" ci="12" mb="0" cb="0"/><line nr="659" mi="0" ci="14" mb="0" cb="2"/><line nr="660" mi="0" ci="9" mb="0" cb="2"/><line nr="662" mi="0" ci="9" mb="0" cb="2"/><line nr="673" mi="0" ci="11" mb="0" cb="0"/><line nr="674" mi="0" ci="3" mb="0" cb="0"/><line nr="675" mi="0" ci="4" mb="0" cb="0"/><line nr="676" mi="0" ci="3" mb="0" cb="0"/><line nr="677" mi="0" ci="1" mb="0" cb="0"/><line nr="684" mi="0" ci="3" mb="0" cb="0"/><line nr="685" mi="0" ci="5" mb="0" cb="0"/><line nr="686" mi="0" ci="3" mb="0" cb="0"/><line nr="687" mi="0" ci="1" mb="0" cb="0"/><line nr="688" mi="0" ci="1" mb="0" cb="0"/><line nr="696" mi="0" ci="4" mb="0" cb="0"/><line nr="697" mi="0" ci="2" mb="0" cb="0"/><line nr="698" mi="2" ci="6" mb="1" cb="1"/><line nr="699" mi="0" ci="2" mb="0" cb="0"/><line nr="743" mi="0" ci="7" mb="0" cb="0"/><line nr="745" mi="0" ci="11" mb="0" cb="2"/><line nr="746" mi="0" ci="4" mb="0" cb="0"/><line nr="747" mi="0" ci="4" mb="0" cb="0"/><line nr="748" mi="0" ci="4" mb="0" cb="0"/><line nr="749" mi="0" ci="4" mb="0" cb="0"/><line nr="750" mi="0" ci="1" mb="0" cb="0"/><line nr="751" mi="0" ci="2" mb="0" cb="0"/><line nr="752" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="51" covered="667"/><counter type="BRANCH" missed="12" covered="54"/><counter type="LINE" missed="11" covered="146"/><counter type="COMPLEXITY" missed="11" covered="68"/><counter type="METHOD" missed="0" covered="46"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><counter type="INSTRUCTION" missed="51" covered="667"/><counter type="BRANCH" missed="12" covered="54"/><counter type="LINE" missed="11" covered="146"/><counter type="COMPLEXITY" missed="11" covered="68"/><counter type="METHOD" missed="0" covered="46"/><counter type="CLASS" missed="0" covered="2"/></package><package name="it/polimi/is23am10/server/network/gamehandler"><class name="it/polimi/is23am10/server/network/gamehandler/GameHandler" sourcefilename="GameHandler.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/Integer;)V" line="56"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="updateCurrentPlayerHandler" desc="()V" line="117"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCurrentPlayerHandler" desc="()Lit/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler;" line="129"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayerConnectorFromPlayer" desc="(Lit/polimi/is23am10/server/model/player/Player;)Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;" line="139"><counter type="INSTRUCTION" missed="4" covered="25"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="2" covered="8"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGame" desc="()Lit/polimi/is23am10/server/model/game/Game;" line="163"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayerConnectors" desc="()Ljava/util/Set;" line="173"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addPlayerConnector" desc="(Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)V" line="186"><counter type="INSTRUCTION" missed="4" covered="8"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="pushGameState" desc="()V" line="200"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="removePlayerByGame" desc="(Ljava/util/UUID;Lit/polimi/is23am10/server/model/player/Player;)V" line="229"><counter type="INSTRUCTION" missed="7" covered="60"/><counter type="BRANCH" missed="4" covered="4"/><counter type="LINE" missed="3" covered="17"/><counter type="COMPLEXITY" missed="4" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="263"><counter type="INSTRUCTION" missed="2" covered="14"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="275"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$removePlayerByGame$4" desc="(Ljava/util/UUID;Lit/polimi/is23am10/server/model/player/Player;Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)Z" line="238"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$pushGameState$3" desc="(Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)V" line="202"><counter type="INSTRUCTION" missed="7" covered="32"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="2" covered="11"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$pushGameState$2" desc="(Lit/polimi/is23am10/server/network/virtualview/VirtualPlayer;)V" line="210"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$pushGameState$1" desc="(Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;Lit/polimi/is23am10/server/network/virtualview/VirtualPlayer;)Z" line="209"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getPlayerConnectorFromPlayer$0" desc="(Lit/polimi/is23am10/server/model/player/Player;Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)Z" line="145"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="24" covered="241"/><counter type="BRANCH" missed="10" covered="16"/><counter type="LINE" missed="9" covered="63"/><counter type="COMPLEXITY" missed="10" covered="19"/><counter type="METHOD" missed="0" covered="16"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler" sourcefilename="CurrentPlayerHandler.java"><method name="&lt;init&gt;" desc="()V" line="14"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setPlayer" desc="(Lit/polimi/is23am10/server/model/player/Player;)V" line="41"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setStartPlayingTimeMs" desc="(J)V" line="51"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setNotified" desc="(Z)V" line="61"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayer" desc="()Lit/polimi/is23am10/server/model/player/Player;" line="71"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getStartPlayingTimeMs" desc="()J" line="80"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getNotified" desc="()Z" line="88"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="CurrentPlayerHandler.java"><line nr="14" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="1" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="52" mi="0" ci="1" mb="0" cb="0"/><line nr="61" mi="0" ci="3" mb="0" cb="0"/><line nr="62" mi="0" ci="1" mb="0" cb="0"/><line nr="71" mi="0" ci="3" mb="0" cb="0"/><line nr="80" mi="0" ci="3" mb="0" cb="0"/><line nr="88" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="GameHandler.java"><line nr="56" mi="0" ci="4" mb="0" cb="0"/><line nr="68" mi="0" ci="4" mb="0" cb="0"/><line nr="69" mi="0" ci="2" mb="0" cb="0"/><line nr="106" mi="0" ci="2" mb="0" cb="0"/><line nr="107" mi="0" ci="5" mb="0" cb="0"/><line nr="108" mi="0" ci="5" mb="0" cb="0"/><line nr="109" mi="0" ci="2" mb="0" cb="0"/><line nr="110" mi="0" ci="1" mb="0" cb="0"/><line nr="117" mi="0" ci="6" mb="0" cb="0"/><line nr="118" mi="0" ci="4" mb="0" cb="0"/><line nr="119" mi="0" ci="4" mb="0" cb="0"/><line nr="120" mi="0" ci="1" mb="0" cb="0"/><line nr="129" mi="0" ci="3" mb="0" cb="0"/><line nr="139" mi="0" ci="2" mb="1" cb="1"/><line nr="140" mi="2" ci="0" mb="0" cb="0"/><line nr="143" mi="0" ci="5" mb="0" cb="0"/><line nr="144" mi="0" ci="5" mb="0" cb="0"/><line nr="145" mi="0" ci="6" mb="0" cb="0"/><line nr="146" mi="0" ci="2" mb="0" cb="0"/><line nr="147" mi="0" ci="3" mb="0" cb="0"/><line nr="149" mi="0" ci="3" mb="1" cb="1"/><line nr="150" mi="0" ci="4" mb="0" cb="0"/><line nr="152" mi="2" ci="0" mb="0" cb="0"/><line nr="163" mi="0" ci="3" mb="0" cb="0"/><line nr="173" mi="0" ci="3" mb="0" cb="0"/><line nr="186" mi="0" ci="2" mb="1" cb="1"/><line nr="187" mi="4" ci="0" mb="0" cb="0"/><line nr="189" mi="0" ci="5" mb="0" cb="0"/><line nr="190" mi="0" ci="1" mb="0" cb="0"/><line nr="200" mi="0" ci="5" mb="0" cb="0"/><line nr="201" mi="0" ci="6" mb="0" cb="0"/><line nr="202" mi="0" ci="4" mb="0" cb="2"/><line nr="203" mi="0" ci="1" mb="0" cb="0"/><line nr="205" mi="0" ci="6" mb="0" cb="0"/><line nr="206" mi="0" ci="5" mb="1" cb="1"/><line nr="207" mi="0" ci="2" mb="0" cb="0"/><line nr="208" mi="0" ci="3" mb="0" cb="0"/><line nr="209" mi="0" ci="13" mb="0" cb="2"/><line nr="210" mi="0" ci="4" mb="0" cb="0"/><line nr="214" mi="0" ci="6" mb="0" cb="0"/><line nr="215" mi="1" ci="0" mb="0" cb="0"/><line nr="216" mi="6" ci="0" mb="0" cb="0"/><line nr="217" mi="0" ci="1" mb="0" cb="0"/><line nr="218" mi="0" ci="1" mb="0" cb="0"/><line nr="219" mi="0" ci="3" mb="0" cb="0"/><line nr="220" mi="0" ci="1" mb="0" cb="0"/><line nr="229" mi="0" ci="4" mb="2" cb="2"/><line nr="230" mi="1" ci="0" mb="0" cb="0"/><line nr="235" mi="0" ci="5" mb="0" cb="0"/><line nr="236" mi="0" ci="6" mb="0" cb="0"/><line nr="237" mi="0" ci="1" mb="0" cb="0"/><line nr="238" mi="0" ci="14" mb="1" cb="3"/><line nr="239" mi="0" ci="2" mb="0" cb="0"/><line nr="240" mi="0" ci="3" mb="0" cb="0"/><line nr="241" mi="0" ci="3" mb="1" cb="1"/><line nr="242" mi="0" ci="4" mb="0" cb="0"/><line nr="243" mi="0" ci="4" mb="1" cb="1"/><line nr="245" mi="0" ci="3" mb="0" cb="0"/><line nr="246" mi="0" ci="5" mb="0" cb="0"/><line nr="247" mi="0" ci="3" mb="0" cb="0"/><line nr="248" mi="0" ci="3" mb="0" cb="0"/><line nr="249" mi="1" ci="0" mb="0" cb="0"/><line nr="250" mi="5" ci="0" mb="0" cb="0"/><line nr="251" mi="0" ci="1" mb="0" cb="0"/><line nr="253" mi="0" ci="5" mb="0" cb="0"/><line nr="254" mi="0" ci="7" mb="0" cb="0"/><line nr="256" mi="0" ci="1" mb="0" cb="0"/><line nr="263" mi="0" ci="3" mb="1" cb="1"/><line nr="264" mi="2" ci="0" mb="0" cb="0"/><line nr="266" mi="0" ci="3" mb="0" cb="0"/><line nr="267" mi="0" ci="8" mb="0" cb="0"/><line nr="275" mi="0" ci="5" mb="0" cb="0"/><counter type="INSTRUCTION" missed="24" covered="241"/><counter type="BRANCH" missed="10" covered="16"/><counter type="LINE" missed="9" covered="63"/><counter type="COMPLEXITY" missed="10" covered="19"/><counter type="METHOD" missed="0" covered="16"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="24" covered="265"/><counter type="BRANCH" missed="10" covered="16"/><counter type="LINE" missed="9" covered="73"/><counter type="COMPLEXITY" missed="10" covered="26"/><counter type="METHOD" missed="0" covered="23"/><counter type="CLASS" missed="0" covered="2"/></package><package name="it/polimi/is23am10/server"><class name="it/polimi/is23am10/server/Server" sourcefilename="Server.java"><method name="&lt;init&gt;" desc="(Ljava/net/ServerSocket;Ljava/util/concurrent/ExecutorService;Lit/polimi/is23am10/server/controller/interfaces/IServerControllerAction;Ljava/rmi/registry/Registry;)V" line="47"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="start" desc="(Lit/polimi/is23am10/utils/config/AppConfigContext;)V" line="96"><counter type="INSTRUCTION" missed="8" covered="66"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="stop" desc="()V" line="130"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="status" desc="()Lit/polimi/is23am10/server/Server$ServerStatus;" line="142"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getSocketClientsConnected" desc="()I" line="154"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setSocketClientConnected" desc="(I)V" line="164"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="59"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="8" covered="113"/><counter type="BRANCH" missed="4" covered="8"/><counter type="LINE" missed="2" covered="31"/><counter type="COMPLEXITY" missed="4" covered="9"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/Server$ServerStatus" sourcefilename="Server.java"><method name="&lt;clinit&gt;" desc="()V" line="38"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Server.java"><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="39" mi="0" ci="6" mb="0" cb="0"/><line nr="40" mi="0" ci="6" mb="0" cb="0"/><line nr="47" mi="0" ci="4" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="0" cb="0"/><line nr="80" mi="0" ci="2" mb="0" cb="0"/><line nr="81" mi="0" ci="3" mb="0" cb="0"/><line nr="82" mi="0" ci="3" mb="0" cb="0"/><line nr="83" mi="0" ci="2" mb="0" cb="0"/><line nr="84" mi="0" ci="2" mb="0" cb="0"/><line nr="85" mi="0" ci="1" mb="0" cb="0"/><line nr="96" mi="0" ci="4" mb="0" cb="0"/><line nr="99" mi="0" ci="8" mb="0" cb="0"/><line nr="102" mi="0" ci="4" mb="0" cb="2"/><line nr="104" mi="0" ci="5" mb="1" cb="1"/><line nr="105" mi="0" ci="4" mb="0" cb="0"/><line nr="106" mi="0" ci="4" mb="0" cb="0"/><line nr="107" mi="0" ci="4" mb="0" cb="0"/><line nr="108" mi="0" ci="16" mb="0" cb="0"/><line nr="112" mi="0" ci="7" mb="0" cb="0"/><line nr="113" mi="0" ci="1" mb="0" cb="0"/><line nr="114" mi="4" ci="0" mb="0" cb="0"/><line nr="115" mi="4" ci="0" mb="0" cb="0"/><line nr="117" mi="0" ci="1" mb="0" cb="0"/><line nr="118" mi="0" ci="5" mb="0" cb="0"/><line nr="119" mi="0" ci="2" mb="0" cb="0"/><line nr="121" mi="0" ci="1" mb="0" cb="0"/><line nr="130" mi="0" ci="7" mb="2" cb="2"/><line nr="131" mi="0" ci="3" mb="0" cb="0"/><line nr="133" mi="0" ci="1" mb="0" cb="0"/><line nr="142" mi="0" ci="8" mb="1" cb="3"/><line nr="143" mi="0" ci="2" mb="0" cb="0"/><line nr="144" mi="0" ci="1" mb="0" cb="0"/><line nr="154" mi="0" ci="2" mb="0" cb="0"/><line nr="164" mi="0" ci="2" mb="0" cb="0"/><line nr="165" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="8" covered="128"/><counter type="BRANCH" missed="4" covered="8"/><counter type="LINE" missed="2" covered="34"/><counter type="COMPLEXITY" missed="4" covered="10"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><counter type="INSTRUCTION" missed="8" covered="128"/><counter type="BRANCH" missed="4" covered="8"/><counter type="LINE" missed="2" covered="34"/><counter type="COMPLEXITY" missed="4" covered="10"/><counter type="METHOD" missed="0" covered="8"/><counter type="CLASS" missed="0" covered="2"/></package><package name="it/polimi/is23am10/server/model/items/tile"><class name="it/polimi/is23am10/server/model/items/tile/Tile" sourcefilename="Tile.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/items/tile/Tile$TileType;)V" line="41"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/items/tile/Tile;)V" line="50"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getType" desc="()Lit/polimi/is23am10/server/model/items/tile/Tile$TileType;" line="62"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setTile" desc="(Lit/polimi/is23am10/server/model/items/tile/Tile$TileType;)V" line="73"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="86"><counter type="INSTRUCTION" missed="2" covered="15"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="99"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="isEmpty" desc="()Z" line="109"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="7" covered="54"/><counter type="BRANCH" missed="1" covered="9"/><counter type="LINE" missed="2" covered="15"/><counter type="COMPLEXITY" missed="2" covered="10"/><counter type="METHOD" missed="1" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/model/items/tile/Tile$TileType" sourcefilename="Tile.java"><method name="&lt;clinit&gt;" desc="()V" line="19"><counter type="INSTRUCTION" missed="0" covered="45"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="45"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Tile.java"><line nr="19" mi="0" ci="3" mb="0" cb="0"/><line nr="20" mi="0" ci="6" mb="0" cb="0"/><line nr="21" mi="0" ci="6" mb="0" cb="0"/><line nr="22" mi="0" ci="6" mb="0" cb="0"/><line nr="23" mi="0" ci="6" mb="0" cb="0"/><line nr="24" mi="0" ci="6" mb="0" cb="0"/><line nr="25" mi="0" ci="6" mb="0" cb="0"/><line nr="26" mi="0" ci="6" mb="0" cb="0"/><line nr="41" mi="0" ci="2" mb="0" cb="0"/><line nr="42" mi="0" ci="7" mb="0" cb="2"/><line nr="43" mi="0" ci="1" mb="0" cb="0"/><line nr="50" mi="0" ci="2" mb="0" cb="0"/><line nr="51" mi="0" ci="4" mb="0" cb="0"/><line nr="52" mi="0" ci="1" mb="0" cb="0"/><line nr="62" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="2" mb="0" cb="2"/><line nr="74" mi="0" ci="5" mb="0" cb="0"/><line nr="76" mi="0" ci="3" mb="0" cb="0"/><line nr="77" mi="0" ci="1" mb="0" cb="0"/><line nr="86" mi="0" ci="3" mb="1" cb="1"/><line nr="87" mi="2" ci="0" mb="0" cb="0"/><line nr="89" mi="0" ci="3" mb="0" cb="0"/><line nr="90" mi="0" ci="9" mb="0" cb="2"/><line nr="99" mi="5" ci="0" mb="0" cb="0"/><line nr="109" mi="0" ci="8" mb="0" cb="2"/><counter type="INSTRUCTION" missed="7" covered="99"/><counter type="BRANCH" missed="1" covered="9"/><counter type="LINE" missed="2" covered="23"/><counter type="COMPLEXITY" missed="2" covered="11"/><counter type="METHOD" missed="1" covered="7"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><counter type="INSTRUCTION" missed="7" covered="99"/><counter type="BRANCH" missed="1" covered="9"/><counter type="LINE" missed="2" covered="23"/><counter type="COMPLEXITY" missed="2" covered="11"/><counter type="METHOD" missed="1" covered="7"/><counter type="CLASS" missed="0" covered="2"/></package><package name="it/polimi/is23am10/server/model/factory"><class name="it/polimi/is23am10/server/model/factory/SharedPatternFactory" sourcefilename="SharedPatternFactory.java"><method name="isValidSquare" desc="(II[[Lit/polimi/is23am10/server/model/items/tile/Tile;)Z" line="201"><counter type="INSTRUCTION" missed="2" covered="72"/><counter type="BRANCH" missed="5" covered="11"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="5" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkAscDiagonal" desc="(I[[Lit/polimi/is23am10/server/model/items/tile/Tile;)Z" line="306"><counter type="INSTRUCTION" missed="2" covered="60"/><counter type="BRANCH" missed="3" covered="9"/><counter type="LINE" missed="1" covered="8"/><counter type="COMPLEXITY" missed="3" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkDescDiagonal" desc="(I[[Lit/polimi/is23am10/server/model/items/tile/Tile;)Z" line="329"><counter type="INSTRUCTION" missed="2" covered="71"/><counter type="BRANCH" missed="2" covered="8"/><counter type="LINE" missed="1" covered="9"/><counter type="COMPLEXITY" missed="2" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkXShape" desc="(II[[Lit/polimi/is23am10/server/model/items/tile/Tile;)Z" line="467"><counter type="INSTRUCTION" missed="2" covered="85"/><counter type="BRANCH" missed="6" covered="12"/><counter type="LINE" missed="1" covered="5"/><counter type="COMPLEXITY" missed="6" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getNotUsedPattern" desc="(Ljava/util/List;)Lit/polimi/is23am10/server/model/pattern/SharedPattern;" line="593"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getNotUsedPattern$16" desc="(Ljava/util/List;Lit/polimi/is23am10/server/model/pattern/SharedPattern;)Z" line="597"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$15" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="501"><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="BRANCH" missed="0" covered="8"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$14" desc="([[Lit/polimi/is23am10/server/model/items/tile/Tile;)Z" line="546"><counter type="INSTRUCTION" missed="0" covered="60"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$13" desc="([[Lit/polimi/is23am10/server/model/items/tile/Tile;)Z" line="532"><counter type="INSTRUCTION" missed="0" covered="56"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$12" desc="([[Lit/polimi/is23am10/server/model/items/tile/Tile;)Z" line="518"><counter type="INSTRUCTION" missed="0" covered="46"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$11" desc="([[Lit/polimi/is23am10/server/model/items/tile/Tile;)Z" line="504"><counter type="INSTRUCTION" missed="0" covered="44"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$10" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="482"><counter type="INSTRUCTION" missed="0" covered="34"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$9" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="435"><counter type="INSTRUCTION" missed="0" covered="69"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$8" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="402"><counter type="INSTRUCTION" missed="0" covered="67"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$7" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="371"><counter type="INSTRUCTION" missed="0" covered="77"/><counter type="BRANCH" missed="0" covered="16"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="0" covered="9"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$6" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="351"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$5" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="278"><counter type="INSTRUCTION" missed="0" covered="94"/><counter type="BRANCH" missed="0" covered="10"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$4" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="246"><counter type="INSTRUCTION" missed="0" covered="77"/><counter type="BRANCH" missed="0" covered="16"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="0" covered="9"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$3" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="217"><counter type="INSTRUCTION" missed="0" covered="78"/><counter type="BRANCH" missed="1" covered="9"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$2" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="147"><counter type="INSTRUCTION" missed="2" covered="303"/><counter type="BRANCH" missed="7" covered="37"/><counter type="LINE" missed="1" covered="31"/><counter type="COMPLEXITY" missed="7" covered="16"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$1" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="131"><counter type="INSTRUCTION" missed="0" covered="68"/><counter type="BRANCH" missed="1" covered="7"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="1" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$0" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Z" line="93"><counter type="INSTRUCTION" missed="2" covered="169"/><counter type="BRANCH" missed="3" covered="25"/><counter type="LINE" missed="1" covered="21"/><counter type="COMPLEXITY" missed="3" covered="12"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="84"><counter type="INSTRUCTION" missed="0" covered="141"/><counter type="LINE" missed="0" covered="26"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="12" covered="1760"/><counter type="BRANCH" missed="28" covered="256"/><counter type="LINE" missed="6" covered="244"/><counter type="COMPLEXITY" missed="28" covered="137"/><counter type="METHOD" missed="0" covered="23"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/model/factory/GameFactory" sourcefilename="GameFactory.java"><method name="getNewGame" desc="(Ljava/lang/String;Ljava/lang/Integer;)Lit/polimi/is23am10/server/model/game/Game;" line="78"><counter type="INSTRUCTION" missed="0" covered="62"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="62"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/model/factory/PlayerFactory" sourcefilename="PlayerFactory.java"><method name="isPlayerNameDuplicate" desc="(Ljava/lang/String;Ljava/util/List;)Z" line="49"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getNewPlayer" desc="(Ljava/lang/String;Lit/polimi/is23am10/server/model/game/Game;)Lit/polimi/is23am10/server/model/player/Player;" line="82"><counter type="INSTRUCTION" missed="0" covered="64"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="83"/><counter type="BRANCH" missed="0" covered="8"/><counter type="LINE" missed="0" covered="20"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/model/factory/PrivatePatternFactory" sourcefilename="PrivatePatternFactory.java"><method name="getNotUsedPattern" desc="(Ljava/util/List;)Lit/polimi/is23am10/server/model/pattern/PrivatePattern;" line="462"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getNotUsedPattern$12" desc="(Ljava/util/List;Lit/polimi/is23am10/server/model/pattern/PrivatePattern;)Z" line="466"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$11" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="407"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$10" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="374"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$9" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="341"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$8" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="308"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$7" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="275"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$6" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="242"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$5" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="209"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$4" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="176"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$3" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="143"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$2" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="110"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$1" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="77"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$static$0" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)Ljava/lang/Integer;" line="44"><counter type="INSTRUCTION" missed="4" covered="65"/><counter type="BRANCH" missed="0" covered="12"/><counter type="LINE" missed="2" covered="14"/><counter type="COMPLEXITY" missed="0" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="37"><counter type="INSTRUCTION" missed="0" covered="141"/><counter type="LINE" missed="0" covered="26"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="48" covered="957"/><counter type="BRANCH" missed="0" covered="148"/><counter type="LINE" missed="24" covered="200"/><counter type="COMPLEXITY" missed="0" covered="89"/><counter type="METHOD" missed="0" covered="15"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="GameFactory.java"><line nr="78" mi="0" ci="4" mb="0" cb="0"/><line nr="79" mi="0" ci="3" mb="0" cb="0"/><line nr="80" mi="0" ci="8" mb="0" cb="0"/><line nr="81" mi="0" ci="5" mb="0" cb="0"/><line nr="82" mi="0" ci="8" mb="0" cb="0"/><line nr="83" mi="0" ci="5" mb="0" cb="0"/><line nr="85" mi="0" ci="4" mb="0" cb="0"/><line nr="87" mi="0" ci="5" mb="0" cb="0"/><line nr="88" mi="0" ci="2" mb="0" cb="0"/><line nr="89" mi="0" ci="13" mb="0" cb="0"/><line nr="90" mi="0" ci="3" mb="0" cb="0"/><line nr="92" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="62"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="PrivatePatternFactory.java"><line nr="37" mi="0" ci="4" mb="0" cb="0"/><line nr="43" mi="0" ci="2" mb="0" cb="0"/><line nr="44" mi="0" ci="2" mb="0" cb="0"/><line nr="47" mi="0" ci="9" mb="0" cb="2"/><line nr="48" mi="0" ci="1" mb="0" cb="0"/><line nr="50" mi="0" ci="9" mb="0" cb="2"/><line nr="51" mi="0" ci="1" mb="0" cb="0"/><line nr="53" mi="0" ci="9" mb="0" cb="2"/><line nr="54" mi="0" ci="1" mb="0" cb="0"/><line nr="56" mi="0" ci="9" mb="0" cb="2"/><line nr="57" mi="0" ci="1" mb="0" cb="0"/><line nr="59" mi="0" ci="9" mb="0" cb="2"/><line nr="60" mi="0" ci="1" mb="0" cb="0"/><line nr="62" mi="0" ci="9" mb="0" cb="2"/><line nr="63" mi="0" ci="1" mb="0" cb="0"/><line nr="65" mi="0" ci="3" mb="0" cb="0"/><line nr="66" mi="1" ci="0" mb="0" cb="0"/><line nr="68" mi="3" ci="0" mb="0" cb="0"/><line nr="76" mi="0" ci="2" mb="0" cb="0"/><line nr="77" mi="0" ci="2" mb="0" cb="0"/><line nr="80" mi="0" ci="9" mb="0" cb="2"/><line nr="81" mi="0" ci="1" mb="0" cb="0"/><line nr="83" mi="0" ci="9" mb="0" cb="2"/><line nr="84" mi="0" ci="1" mb="0" cb="0"/><line nr="86" mi="0" ci="9" mb="0" cb="2"/><line nr="87" mi="0" ci="1" mb="0" cb="0"/><line nr="89" mi="0" ci="9" mb="0" cb="2"/><line nr="90" mi="0" ci="1" mb="0" cb="0"/><line nr="92" mi="0" ci="9" mb="0" cb="2"/><line nr="93" mi="0" ci="1" mb="0" cb="0"/><line nr="95" mi="0" ci="9" mb="0" cb="2"/><line nr="96" mi="0" ci="1" mb="0" cb="0"/><line nr="98" mi="0" ci="3" mb="0" cb="0"/><line nr="99" mi="1" ci="0" mb="0" cb="0"/><line nr="101" mi="3" ci="0" mb="0" cb="0"/><line nr="109" mi="0" ci="2" mb="0" cb="0"/><line nr="110" mi="0" ci="2" mb="0" cb="0"/><line nr="113" mi="0" ci="9" mb="0" cb="2"/><line nr="114" mi="0" ci="1" mb="0" cb="0"/><line nr="116" mi="0" ci="9" mb="0" cb="2"/><line nr="117" mi="0" ci="1" mb="0" cb="0"/><line nr="119" mi="0" ci="9" mb="0" cb="2"/><line nr="120" mi="0" ci="1" mb="0" cb="0"/><line nr="122" mi="0" ci="9" mb="0" cb="2"/><line nr="123" mi="0" ci="1" mb="0" cb="0"/><line nr="125" mi="0" ci="9" mb="0" cb="2"/><line nr="126" mi="0" ci="1" mb="0" cb="0"/><line nr="128" mi="0" ci="9" mb="0" cb="2"/><line nr="129" mi="0" ci="1" mb="0" cb="0"/><line nr="131" mi="0" ci="3" mb="0" cb="0"/><line nr="132" mi="1" ci="0" mb="0" cb="0"/><line nr="134" mi="3" ci="0" mb="0" cb="0"/><line nr="142" mi="0" ci="2" mb="0" cb="0"/><line nr="143" mi="0" ci="2" mb="0" cb="0"/><line nr="146" mi="0" ci="9" mb="0" cb="2"/><line nr="147" mi="0" ci="1" mb="0" cb="0"/><line nr="149" mi="0" ci="9" mb="0" cb="2"/><line nr="150" mi="0" ci="1" mb="0" cb="0"/><line nr="152" mi="0" ci="9" mb="0" cb="2"/><line nr="153" mi="0" ci="1" mb="0" cb="0"/><line nr="155" mi="0" ci="9" mb="0" cb="2"/><line nr="156" mi="0" ci="1" mb="0" cb="0"/><line nr="158" mi="0" ci="9" mb="0" cb="2"/><line nr="159" mi="0" ci="1" mb="0" cb="0"/><line nr="161" mi="0" ci="9" mb="0" cb="2"/><line nr="162" mi="0" ci="1" mb="0" cb="0"/><line nr="164" mi="0" ci="3" mb="0" cb="0"/><line nr="165" mi="1" ci="0" mb="0" cb="0"/><line nr="167" mi="3" ci="0" mb="0" cb="0"/><line nr="175" mi="0" ci="2" mb="0" cb="0"/><line nr="176" mi="0" ci="2" mb="0" cb="0"/><line nr="179" mi="0" ci="9" mb="0" cb="2"/><line nr="180" mi="0" ci="1" mb="0" cb="0"/><line nr="182" mi="0" ci="9" mb="0" cb="2"/><line nr="183" mi="0" ci="1" mb="0" cb="0"/><line nr="185" mi="0" ci="9" mb="0" cb="2"/><line nr="186" mi="0" ci="1" mb="0" cb="0"/><line nr="188" mi="0" ci="9" mb="0" cb="2"/><line nr="189" mi="0" ci="1" mb="0" cb="0"/><line nr="191" mi="0" ci="9" mb="0" cb="2"/><line nr="192" mi="0" ci="1" mb="0" cb="0"/><line nr="194" mi="0" ci="9" mb="0" cb="2"/><line nr="195" mi="0" ci="1" mb="0" cb="0"/><line nr="197" mi="0" ci="3" mb="0" cb="0"/><line nr="198" mi="1" ci="0" mb="0" cb="0"/><line nr="200" mi="3" ci="0" mb="0" cb="0"/><line nr="208" mi="0" ci="2" mb="0" cb="0"/><line nr="209" mi="0" ci="2" mb="0" cb="0"/><line nr="212" mi="0" ci="9" mb="0" cb="2"/><line nr="213" mi="0" ci="1" mb="0" cb="0"/><line nr="215" mi="0" ci="9" mb="0" cb="2"/><line nr="216" mi="0" ci="1" mb="0" cb="0"/><line nr="218" mi="0" ci="9" mb="0" cb="2"/><line nr="219" mi="0" ci="1" mb="0" cb="0"/><line nr="221" mi="0" ci="9" mb="0" cb="2"/><line nr="222" mi="0" ci="1" mb="0" cb="0"/><line nr="224" mi="0" ci="9" mb="0" cb="2"/><line nr="225" mi="0" ci="1" mb="0" cb="0"/><line nr="227" mi="0" ci="9" mb="0" cb="2"/><line nr="228" mi="0" ci="1" mb="0" cb="0"/><line nr="230" mi="0" ci="3" mb="0" cb="0"/><line nr="231" mi="1" ci="0" mb="0" cb="0"/><line nr="233" mi="3" ci="0" mb="0" cb="0"/><line nr="241" mi="0" ci="2" mb="0" cb="0"/><line nr="242" mi="0" ci="2" mb="0" cb="0"/><line nr="245" mi="0" ci="9" mb="0" cb="2"/><line nr="246" mi="0" ci="1" mb="0" cb="0"/><line nr="248" mi="0" ci="9" mb="0" cb="2"/><line nr="249" mi="0" ci="1" mb="0" cb="0"/><line nr="251" mi="0" ci="9" mb="0" cb="2"/><line nr="252" mi="0" ci="1" mb="0" cb="0"/><line nr="254" mi="0" ci="9" mb="0" cb="2"/><line nr="255" mi="0" ci="1" mb="0" cb="0"/><line nr="257" mi="0" ci="9" mb="0" cb="2"/><line nr="258" mi="0" ci="1" mb="0" cb="0"/><line nr="260" mi="0" ci="9" mb="0" cb="2"/><line nr="261" mi="0" ci="1" mb="0" cb="0"/><line nr="263" mi="0" ci="3" mb="0" cb="0"/><line nr="264" mi="1" ci="0" mb="0" cb="0"/><line nr="266" mi="3" ci="0" mb="0" cb="0"/><line nr="274" mi="0" ci="2" mb="0" cb="0"/><line nr="275" mi="0" ci="2" mb="0" cb="0"/><line nr="278" mi="0" ci="9" mb="0" cb="2"/><line nr="279" mi="0" ci="1" mb="0" cb="0"/><line nr="281" mi="0" ci="9" mb="0" cb="2"/><line nr="282" mi="0" ci="1" mb="0" cb="0"/><line nr="284" mi="0" ci="9" mb="0" cb="2"/><line nr="285" mi="0" ci="1" mb="0" cb="0"/><line nr="287" mi="0" ci="9" mb="0" cb="2"/><line nr="288" mi="0" ci="1" mb="0" cb="0"/><line nr="290" mi="0" ci="9" mb="0" cb="2"/><line nr="291" mi="0" ci="1" mb="0" cb="0"/><line nr="293" mi="0" ci="9" mb="0" cb="2"/><line nr="294" mi="0" ci="1" mb="0" cb="0"/><line nr="296" mi="0" ci="3" mb="0" cb="0"/><line nr="297" mi="1" ci="0" mb="0" cb="0"/><line nr="299" mi="3" ci="0" mb="0" cb="0"/><line nr="307" mi="0" ci="2" mb="0" cb="0"/><line nr="308" mi="0" ci="2" mb="0" cb="0"/><line nr="311" mi="0" ci="9" mb="0" cb="2"/><line nr="312" mi="0" ci="1" mb="0" cb="0"/><line nr="314" mi="0" ci="9" mb="0" cb="2"/><line nr="315" mi="0" ci="1" mb="0" cb="0"/><line nr="317" mi="0" ci="9" mb="0" cb="2"/><line nr="318" mi="0" ci="1" mb="0" cb="0"/><line nr="320" mi="0" ci="9" mb="0" cb="2"/><line nr="321" mi="0" ci="1" mb="0" cb="0"/><line nr="323" mi="0" ci="9" mb="0" cb="2"/><line nr="324" mi="0" ci="1" mb="0" cb="0"/><line nr="326" mi="0" ci="9" mb="0" cb="2"/><line nr="327" mi="0" ci="1" mb="0" cb="0"/><line nr="329" mi="0" ci="3" mb="0" cb="0"/><line nr="330" mi="1" ci="0" mb="0" cb="0"/><line nr="332" mi="3" ci="0" mb="0" cb="0"/><line nr="340" mi="0" ci="2" mb="0" cb="0"/><line nr="341" mi="0" ci="2" mb="0" cb="0"/><line nr="344" mi="0" ci="9" mb="0" cb="2"/><line nr="345" mi="0" ci="1" mb="0" cb="0"/><line nr="347" mi="0" ci="9" mb="0" cb="2"/><line nr="348" mi="0" ci="1" mb="0" cb="0"/><line nr="350" mi="0" ci="9" mb="0" cb="2"/><line nr="351" mi="0" ci="1" mb="0" cb="0"/><line nr="353" mi="0" ci="9" mb="0" cb="2"/><line nr="354" mi="0" ci="1" mb="0" cb="0"/><line nr="356" mi="0" ci="9" mb="0" cb="2"/><line nr="357" mi="0" ci="1" mb="0" cb="0"/><line nr="359" mi="0" ci="9" mb="0" cb="2"/><line nr="360" mi="0" ci="1" mb="0" cb="0"/><line nr="362" mi="0" ci="3" mb="0" cb="0"/><line nr="363" mi="1" ci="0" mb="0" cb="0"/><line nr="365" mi="3" ci="0" mb="0" cb="0"/><line nr="373" mi="0" ci="2" mb="0" cb="0"/><line nr="374" mi="0" ci="2" mb="0" cb="0"/><line nr="377" mi="0" ci="9" mb="0" cb="2"/><line nr="378" mi="0" ci="1" mb="0" cb="0"/><line nr="380" mi="0" ci="9" mb="0" cb="2"/><line nr="381" mi="0" ci="1" mb="0" cb="0"/><line nr="383" mi="0" ci="9" mb="0" cb="2"/><line nr="384" mi="0" ci="1" mb="0" cb="0"/><line nr="386" mi="0" ci="9" mb="0" cb="2"/><line nr="387" mi="0" ci="1" mb="0" cb="0"/><line nr="389" mi="0" ci="9" mb="0" cb="2"/><line nr="390" mi="0" ci="1" mb="0" cb="0"/><line nr="392" mi="0" ci="9" mb="0" cb="2"/><line nr="393" mi="0" ci="1" mb="0" cb="0"/><line nr="395" mi="0" ci="3" mb="0" cb="0"/><line nr="396" mi="1" ci="0" mb="0" cb="0"/><line nr="398" mi="3" ci="0" mb="0" cb="0"/><line nr="406" mi="0" ci="2" mb="0" cb="0"/><line nr="407" mi="0" ci="2" mb="0" cb="0"/><line nr="410" mi="0" ci="9" mb="0" cb="2"/><line nr="411" mi="0" ci="1" mb="0" cb="0"/><line nr="413" mi="0" ci="9" mb="0" cb="2"/><line nr="414" mi="0" ci="1" mb="0" cb="0"/><line nr="416" mi="0" ci="9" mb="0" cb="2"/><line nr="417" mi="0" ci="1" mb="0" cb="0"/><line nr="419" mi="0" ci="9" mb="0" cb="2"/><line nr="420" mi="0" ci="1" mb="0" cb="0"/><line nr="422" mi="0" ci="9" mb="0" cb="2"/><line nr="423" mi="0" ci="1" mb="0" cb="0"/><line nr="425" mi="0" ci="9" mb="0" cb="2"/><line nr="426" mi="0" ci="1" mb="0" cb="0"/><line nr="428" mi="0" ci="3" mb="0" cb="0"/><line nr="429" mi="1" ci="0" mb="0" cb="0"/><line nr="431" mi="3" ci="0" mb="0" cb="0"/><line nr="439" mi="0" ci="11" mb="0" cb="0"/><line nr="440" mi="0" ci="9" mb="0" cb="0"/><line nr="441" mi="0" ci="9" mb="0" cb="0"/><line nr="442" mi="0" ci="9" mb="0" cb="0"/><line nr="443" mi="0" ci="9" mb="0" cb="0"/><line nr="444" mi="0" ci="9" mb="0" cb="0"/><line nr="445" mi="0" ci="9" mb="0" cb="0"/><line nr="446" mi="0" ci="9" mb="0" cb="0"/><line nr="447" mi="0" ci="9" mb="0" cb="0"/><line nr="448" mi="0" ci="9" mb="0" cb="0"/><line nr="449" mi="0" ci="9" mb="0" cb="0"/><line nr="450" mi="0" ci="9" mb="0" cb="0"/><line nr="451" mi="0" ci="3" mb="0" cb="0"/><line nr="462" mi="0" ci="3" mb="0" cb="2"/><line nr="463" mi="0" ci="8" mb="0" cb="0"/><line nr="465" mi="0" ci="4" mb="0" cb="0"/><line nr="466" mi="0" ci="9" mb="0" cb="2"/><line nr="467" mi="0" ci="4" mb="0" cb="0"/><line nr="468" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="48" covered="957"/><counter type="BRANCH" missed="0" covered="148"/><counter type="LINE" missed="24" covered="200"/><counter type="COMPLEXITY" missed="0" covered="89"/><counter type="METHOD" missed="0" covered="15"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="PlayerFactory.java"><line nr="49" mi="0" ci="10" mb="0" cb="2"/><line nr="50" mi="0" ci="4" mb="0" cb="2"/><line nr="51" mi="0" ci="2" mb="0" cb="0"/><line nr="53" mi="0" ci="1" mb="0" cb="0"/><line nr="54" mi="0" ci="2" mb="0" cb="0"/><line nr="82" mi="0" ci="2" mb="0" cb="2"/><line nr="83" mi="0" ci="5" mb="0" cb="0"/><line nr="87" mi="0" ci="5" mb="0" cb="2"/><line nr="88" mi="0" ci="6" mb="0" cb="0"/><line nr="92" mi="0" ci="4" mb="0" cb="0"/><line nr="93" mi="0" ci="6" mb="0" cb="0"/><line nr="94" mi="0" ci="5" mb="0" cb="0"/><line nr="96" mi="0" ci="5" mb="0" cb="0"/><line nr="97" mi="0" ci="3" mb="0" cb="0"/><line nr="98" mi="0" ci="5" mb="0" cb="0"/><line nr="99" mi="0" ci="5" mb="0" cb="0"/><line nr="100" mi="0" ci="3" mb="0" cb="0"/><line nr="101" mi="0" ci="5" mb="0" cb="0"/><line nr="102" mi="0" ci="3" mb="0" cb="0"/><line nr="104" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="83"/><counter type="BRANCH" missed="0" covered="8"/><counter type="LINE" missed="0" covered="20"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="SharedPatternFactory.java"><line nr="84" mi="0" ci="4" mb="0" cb="0"/><line nr="92" mi="0" ci="2" mb="0" cb="0"/><line nr="93" mi="0" ci="2" mb="0" cb="0"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="4" mb="0" cb="0"/><line nr="97" mi="0" ci="8" mb="0" cb="2"/><line nr="98" mi="0" ci="10" mb="0" cb="2"/><line nr="99" mi="0" ci="29" mb="0" cb="6"/><line nr="100" mi="0" ci="10" mb="0" cb="2"/><line nr="101" mi="0" ci="6" mb="1" cb="1"/><line nr="102" mi="0" ci="8" mb="0" cb="0"/><line nr="103" mi="0" ci="10" mb="0" cb="0"/><line nr="104" mi="0" ci="1" mb="0" cb="0"/><line nr="105" mi="0" ci="3" mb="0" cb="2"/><line nr="106" mi="0" ci="2" mb="0" cb="0"/><line nr="110" mi="0" ci="33" mb="0" cb="6"/><line nr="111" mi="0" ci="8" mb="0" cb="2"/><line nr="112" mi="0" ci="8" mb="1" cb="1"/><line nr="113" mi="0" ci="8" mb="0" cb="0"/><line nr="114" mi="0" ci="10" mb="0" cb="0"/><line nr="115" mi="0" ci="1" mb="0" cb="0"/><line nr="116" mi="0" ci="3" mb="1" cb="1"/><line nr="117" mi="2" ci="0" mb="0" cb="0"/><line nr="122" mi="0" ci="2" mb="0" cb="0"/><line nr="130" mi="0" ci="2" mb="0" cb="0"/><line nr="131" mi="0" ci="3" mb="0" cb="0"/><line nr="132" mi="0" ci="7" mb="0" cb="2"/><line nr="133" mi="0" ci="2" mb="0" cb="0"/><line nr="135" mi="0" ci="31" mb="0" cb="2"/><line nr="136" mi="0" ci="20" mb="0" cb="2"/><line nr="137" mi="0" ci="5" mb="1" cb="1"/><line nr="146" mi="0" ci="2" mb="0" cb="0"/><line nr="147" mi="0" ci="2" mb="0" cb="0"/><line nr="148" mi="0" ci="3" mb="0" cb="0"/><line nr="149" mi="0" ci="4" mb="0" cb="0"/><line nr="151" mi="0" ci="8" mb="0" cb="2"/><line nr="152" mi="0" ci="10" mb="0" cb="2"/><line nr="153" mi="0" ci="46" mb="0" cb="6"/><line nr="154" mi="0" ci="11" mb="0" cb="4"/><line nr="155" mi="0" ci="10" mb="0" cb="2"/><line nr="156" mi="0" ci="10" mb="1" cb="1"/><line nr="157" mi="0" ci="10" mb="1" cb="1"/><line nr="158" mi="0" ci="6" mb="1" cb="1"/><line nr="159" mi="0" ci="8" mb="0" cb="0"/><line nr="160" mi="0" ci="10" mb="0" cb="0"/><line nr="161" mi="0" ci="10" mb="0" cb="0"/><line nr="162" mi="0" ci="10" mb="0" cb="0"/><line nr="163" mi="0" ci="1" mb="0" cb="0"/><line nr="164" mi="0" ci="3" mb="1" cb="1"/><line nr="165" mi="2" ci="0" mb="0" cb="0"/><line nr="169" mi="0" ci="48" mb="0" cb="6"/><line nr="170" mi="0" ci="11" mb="0" cb="4"/><line nr="171" mi="0" ci="8" mb="0" cb="2"/><line nr="172" mi="0" ci="10" mb="1" cb="1"/><line nr="173" mi="0" ci="10" mb="1" cb="1"/><line nr="174" mi="0" ci="8" mb="1" cb="1"/><line nr="175" mi="0" ci="8" mb="0" cb="0"/><line nr="176" mi="0" ci="10" mb="0" cb="0"/><line nr="177" mi="0" ci="10" mb="0" cb="0"/><line nr="178" mi="0" ci="10" mb="0" cb="0"/><line nr="179" mi="0" ci="1" mb="0" cb="0"/><line nr="180" mi="0" ci="3" mb="0" cb="2"/><line nr="181" mi="0" ci="2" mb="0" cb="0"/><line nr="186" mi="0" ci="2" mb="0" cb="0"/><line nr="201" mi="0" ci="14" mb="4" cb="4"/><line nr="202" mi="2" ci="0" mb="0" cb="0"/><line nr="204" mi="0" ci="7" mb="0" cb="0"/><line nr="205" mi="0" ci="27" mb="0" cb="2"/><line nr="206" mi="0" ci="16" mb="0" cb="2"/><line nr="207" mi="0" ci="8" mb="1" cb="3"/><line nr="216" mi="0" ci="2" mb="0" cb="0"/><line nr="217" mi="0" ci="3" mb="0" cb="0"/><line nr="218" mi="0" ci="5" mb="0" cb="0"/><line nr="220" mi="0" ci="10" mb="0" cb="2"/><line nr="221" mi="0" ci="12" mb="0" cb="2"/><line nr="222" mi="0" ci="7" mb="0" cb="0"/><line nr="223" mi="0" ci="5" mb="0" cb="2"/><line nr="224" mi="0" ci="4" mb="0" cb="2"/><line nr="225" mi="0" ci="7" mb="0" cb="0"/><line nr="227" mi="0" ci="6" mb="0" cb="0"/><line nr="228" mi="0" ci="8" mb="0" cb="0"/><line nr="229" mi="0" ci="7" mb="1" cb="1"/><line nr="230" mi="0" ci="2" mb="0" cb="0"/><line nr="236" mi="0" ci="2" mb="0" cb="0"/><line nr="245" mi="0" ci="2" mb="0" cb="0"/><line nr="246" mi="0" ci="2" mb="0" cb="0"/><line nr="247" mi="0" ci="3" mb="0" cb="0"/><line nr="250" mi="0" ci="10" mb="0" cb="2"/><line nr="251" mi="0" ci="4" mb="0" cb="0"/><line nr="252" mi="0" ci="2" mb="0" cb="0"/><line nr="253" mi="0" ci="8" mb="0" cb="2"/><line nr="254" mi="0" ci="7" mb="0" cb="2"/><line nr="255" mi="0" ci="2" mb="0" cb="0"/><line nr="257" mi="0" ci="16" mb="0" cb="4"/><line nr="258" mi="0" ci="9" mb="0" cb="0"/><line nr="261" mi="0" ci="6" mb="0" cb="4"/><line nr="262" mi="0" ci="1" mb="0" cb="0"/><line nr="263" mi="0" ci="3" mb="0" cb="2"/><line nr="264" mi="0" ci="2" mb="0" cb="0"/><line nr="268" mi="0" ci="2" mb="0" cb="0"/><line nr="277" mi="0" ci="2" mb="0" cb="0"/><line nr="278" mi="0" ci="3" mb="0" cb="0"/><line nr="279" mi="0" ci="5" mb="0" cb="0"/><line nr="280" mi="0" ci="8" mb="0" cb="2"/><line nr="281" mi="0" ci="10" mb="0" cb="2"/><line nr="282" mi="0" ci="7" mb="0" cb="2"/><line nr="283" mi="0" ci="9" mb="0" cb="2"/><line nr="284" mi="0" ci="12" mb="0" cb="0"/><line nr="286" mi="0" ci="11" mb="0" cb="0"/><line nr="287" mi="0" ci="13" mb="0" cb="0"/><line nr="289" mi="0" ci="12" mb="0" cb="2"/><line nr="290" mi="0" ci="2" mb="0" cb="0"/><line nr="295" mi="0" ci="2" mb="0" cb="0"/><line nr="306" mi="0" ci="6" mb="2" cb="2"/><line nr="307" mi="2" ci="0" mb="0" cb="0"/><line nr="309" mi="0" ci="12" mb="1" cb="1"/><line nr="310" mi="0" ci="27" mb="0" cb="2"/><line nr="311" mi="0" ci="2" mb="0" cb="2"/><line nr="312" mi="0" ci="1" mb="0" cb="0"/><line nr="314" mi="0" ci="8" mb="0" cb="2"/><line nr="315" mi="0" ci="2" mb="0" cb="0"/><line nr="318" mi="0" ci="2" mb="0" cb="0"/><line nr="329" mi="0" ci="4" mb="1" cb="1"/><line nr="330" mi="2" ci="0" mb="0" cb="0"/><line nr="332" mi="0" ci="12" mb="1" cb="1"/><line nr="333" mi="0" ci="26" mb="0" cb="0"/><line nr="334" mi="0" ci="14" mb="0" cb="2"/><line nr="335" mi="0" ci="2" mb="0" cb="2"/><line nr="336" mi="0" ci="1" mb="0" cb="0"/><line nr="338" mi="0" ci="8" mb="0" cb="2"/><line nr="339" mi="0" ci="2" mb="0" cb="0"/><line nr="342" mi="0" ci="2" mb="0" cb="0"/><line nr="350" mi="0" ci="2" mb="0" cb="0"/><line nr="351" mi="0" ci="3" mb="0" cb="0"/><line nr="355" mi="0" ci="7" mb="0" cb="2"/><line nr="356" mi="0" ci="8" mb="0" cb="4"/><line nr="357" mi="0" ci="2" mb="0" cb="0"/><line nr="361" mi="0" ci="2" mb="0" cb="0"/><line nr="370" mi="0" ci="2" mb="0" cb="0"/><line nr="371" mi="0" ci="2" mb="0" cb="0"/><line nr="372" mi="0" ci="3" mb="0" cb="0"/><line nr="373" mi="0" ci="8" mb="0" cb="2"/><line nr="374" mi="0" ci="4" mb="0" cb="0"/><line nr="375" mi="0" ci="2" mb="0" cb="0"/><line nr="376" mi="0" ci="10" mb="0" cb="2"/><line nr="377" mi="0" ci="7" mb="0" cb="2"/><line nr="378" mi="0" ci="2" mb="0" cb="0"/><line nr="380" mi="0" ci="16" mb="0" cb="4"/><line nr="381" mi="0" ci="9" mb="0" cb="0"/><line nr="385" mi="0" ci="6" mb="0" cb="4"/><line nr="386" mi="0" ci="1" mb="0" cb="0"/><line nr="387" mi="0" ci="3" mb="0" cb="2"/><line nr="388" mi="0" ci="2" mb="0" cb="0"/><line nr="392" mi="0" ci="2" mb="0" cb="0"/><line nr="401" mi="0" ci="2" mb="0" cb="0"/><line nr="402" mi="0" ci="2" mb="0" cb="0"/><line nr="403" mi="0" ci="3" mb="0" cb="0"/><line nr="409" mi="0" ci="10" mb="0" cb="2"/><line nr="410" mi="0" ci="4" mb="0" cb="0"/><line nr="411" mi="0" ci="8" mb="0" cb="2"/><line nr="412" mi="0" ci="16" mb="0" cb="4"/><line nr="413" mi="0" ci="1" mb="0" cb="0"/><line nr="415" mi="0" ci="9" mb="0" cb="0"/><line nr="416" mi="0" ci="6" mb="0" cb="2"/><line nr="417" mi="0" ci="1" mb="0" cb="0"/><line nr="420" mi="0" ci="3" mb="0" cb="2"/><line nr="421" mi="0" ci="2" mb="0" cb="0"/><line nr="424" mi="0" ci="2" mb="0" cb="0"/><line nr="434" mi="0" ci="2" mb="0" cb="0"/><line nr="435" mi="0" ci="2" mb="0" cb="0"/><line nr="436" mi="0" ci="3" mb="0" cb="0"/><line nr="437" mi="0" ci="8" mb="0" cb="2"/><line nr="438" mi="0" ci="4" mb="0" cb="0"/><line nr="439" mi="0" ci="10" mb="0" cb="2"/><line nr="440" mi="0" ci="16" mb="0" cb="4"/><line nr="441" mi="0" ci="1" mb="0" cb="0"/><line nr="443" mi="0" ci="9" mb="0" cb="0"/><line nr="444" mi="0" ci="8" mb="0" cb="2"/><line nr="445" mi="0" ci="1" mb="0" cb="0"/><line nr="448" mi="0" ci="3" mb="0" cb="2"/><line nr="449" mi="0" ci="2" mb="0" cb="0"/><line nr="452" mi="0" ci="2" mb="0" cb="0"/><line nr="467" mi="0" ci="14" mb="4" cb="4"/><line nr="468" mi="2" ci="0" mb="0" cb="0"/><line nr="470" mi="0" ci="29" mb="0" cb="2"/><line nr="471" mi="0" ci="16" mb="0" cb="2"/><line nr="472" mi="0" ci="14" mb="1" cb="1"/><line nr="473" mi="0" ci="12" mb="1" cb="3"/><line nr="481" mi="0" ci="2" mb="0" cb="0"/><line nr="482" mi="0" ci="3" mb="0" cb="0"/><line nr="484" mi="0" ci="10" mb="0" cb="2"/><line nr="485" mi="0" ci="12" mb="0" cb="2"/><line nr="486" mi="0" ci="5" mb="0" cb="2"/><line nr="487" mi="0" ci="2" mb="0" cb="0"/><line nr="491" mi="0" ci="2" mb="0" cb="0"/><line nr="500" mi="0" ci="2" mb="0" cb="0"/><line nr="501" mi="0" ci="3" mb="0" cb="0"/><line nr="503" mi="0" ci="2" mb="0" cb="0"/><line nr="504" mi="0" ci="8" mb="0" cb="2"/><line nr="505" mi="0" ci="10" mb="0" cb="2"/><line nr="506" mi="0" ci="10" mb="0" cb="4"/><line nr="507" mi="0" ci="2" mb="0" cb="0"/><line nr="509" mi="0" ci="10" mb="0" cb="4"/><line nr="510" mi="0" ci="2" mb="0" cb="0"/><line nr="514" mi="0" ci="2" mb="0" cb="0"/><line nr="517" mi="0" ci="2" mb="0" cb="0"/><line nr="518" mi="0" ci="8" mb="0" cb="2"/><line nr="519" mi="0" ci="10" mb="0" cb="2"/><line nr="520" mi="0" ci="11" mb="0" cb="4"/><line nr="521" mi="0" ci="2" mb="0" cb="0"/><line nr="523" mi="0" ci="11" mb="0" cb="4"/><line nr="524" mi="0" ci="2" mb="0" cb="0"/><line nr="528" mi="0" ci="2" mb="0" cb="0"/><line nr="531" mi="0" ci="2" mb="0" cb="0"/><line nr="532" mi="0" ci="8" mb="0" cb="2"/><line nr="533" mi="0" ci="10" mb="0" cb="2"/><line nr="534" mi="0" ci="16" mb="0" cb="4"/><line nr="535" mi="0" ci="2" mb="0" cb="0"/><line nr="537" mi="0" ci="16" mb="0" cb="4"/><line nr="538" mi="0" ci="2" mb="0" cb="0"/><line nr="542" mi="0" ci="2" mb="0" cb="0"/><line nr="545" mi="0" ci="2" mb="0" cb="0"/><line nr="546" mi="0" ci="8" mb="0" cb="2"/><line nr="547" mi="0" ci="10" mb="0" cb="2"/><line nr="548" mi="0" ci="18" mb="0" cb="4"/><line nr="549" mi="0" ci="2" mb="0" cb="0"/><line nr="551" mi="0" ci="18" mb="0" cb="4"/><line nr="552" mi="0" ci="2" mb="0" cb="0"/><line nr="556" mi="0" ci="2" mb="0" cb="0"/><line nr="559" mi="0" ci="15" mb="0" cb="6"/><line nr="560" mi="0" ci="5" mb="0" cb="2"/><line nr="570" mi="0" ci="11" mb="0" cb="0"/><line nr="571" mi="0" ci="9" mb="0" cb="0"/><line nr="572" mi="0" ci="9" mb="0" cb="0"/><line nr="573" mi="0" ci="9" mb="0" cb="0"/><line nr="574" mi="0" ci="9" mb="0" cb="0"/><line nr="575" mi="0" ci="9" mb="0" cb="0"/><line nr="576" mi="0" ci="9" mb="0" cb="0"/><line nr="577" mi="0" ci="9" mb="0" cb="0"/><line nr="578" mi="0" ci="9" mb="0" cb="0"/><line nr="579" mi="0" ci="9" mb="0" cb="0"/><line nr="580" mi="0" ci="9" mb="0" cb="0"/><line nr="581" mi="0" ci="9" mb="0" cb="0"/><line nr="582" mi="0" ci="3" mb="0" cb="0"/><line nr="593" mi="0" ci="3" mb="0" cb="2"/><line nr="594" mi="0" ci="8" mb="0" cb="0"/><line nr="596" mi="0" ci="4" mb="0" cb="0"/><line nr="597" mi="0" ci="9" mb="0" cb="2"/><line nr="598" mi="0" ci="4" mb="0" cb="0"/><line nr="599" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="12" covered="1760"/><counter type="BRANCH" missed="28" covered="256"/><counter type="LINE" missed="6" covered="244"/><counter type="COMPLEXITY" missed="28" covered="137"/><counter type="METHOD" missed="0" covered="23"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="60" covered="2862"/><counter type="BRANCH" missed="28" covered="412"/><counter type="LINE" missed="30" covered="476"/><counter type="COMPLEXITY" missed="28" covered="233"/><counter type="METHOD" missed="0" covered="41"/><counter type="CLASS" missed="0" covered="4"/></package><package name="it/polimi/is23am10/server/controller"><class name="it/polimi/is23am10/server/controller/ServerControllerAction" sourcefilename="ServerControllerAction.java"><method name="&lt;init&gt;" desc="()V" line="23"><counter type="INSTRUCTION" missed="0" covered="22"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="execute" desc="(Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;Lit/polimi/is23am10/server/command/AbstractCommand;)V" line="49"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="execute" desc="(Lit/polimi/is23am10/server/command/GetAvailableGamesCommand;)Lit/polimi/is23am10/server/network/messages/AvailableGamesMessage;" line="61"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="12" covered="40"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="3" covered="7"/><counter type="COMPLEXITY" missed="3" covered="3"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/controller/ClientConnectionChecker" sourcefilename="ClientConnectionChecker.java"><method name="&lt;init&gt;" desc="(J)V" line="40"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="run" desc="()V" line="86"><counter type="INSTRUCTION" missed="23" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="advanceGame" desc="(Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)V" line="124"><counter type="INSTRUCTION" missed="5" covered="21"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="2" covered="7"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkAllPlayers" desc="()V" line="144"><counter type="INSTRUCTION" missed="15" covered="50"/><counter type="BRANCH" missed="1" covered="5"/><counter type="LINE" missed="4" covered="11"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="checkActivePlayersInactivity" desc="()V" line="173"><counter type="INSTRUCTION" missed="25" covered="98"/><counter type="BRANCH" missed="4" covered="8"/><counter type="LINE" missed="6" covered="25"/><counter type="COMPLEXITY" missed="4" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="expired" desc="(JJJ)Z" line="231"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="68" covered="192"/><counter type="BRANCH" missed="7" covered="17"/><counter type="LINE" missed="20" covered="49"/><counter type="COMPLEXITY" missed="8" covered="10"/><counter type="METHOD" missed="1" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/controller/ServerControllerSocket$CommandDeserializer" sourcefilename="ServerControllerSocket.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/controller/ServerControllerSocket;)V" line="193"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserialize" desc="(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lit/polimi/is23am10/server/command/AbstractCommand;" line="198"><counter type="INSTRUCTION" missed="12" covered="55"/><counter type="BRANCH" missed="2" covered="5"/><counter type="LINE" missed="2" covered="12"/><counter type="COMPLEXITY" missed="2" covered="5"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="12" covered="61"/><counter type="BRANCH" missed="2" covered="5"/><counter type="LINE" missed="2" covered="13"/><counter type="COMPLEXITY" missed="2" covered="6"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/controller/ServerControllerSocket" sourcefilename="ServerControllerSocket.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket;Lit/polimi/is23am10/server/controller/ServerControllerAction;)V" line="55"><counter type="INSTRUCTION" missed="0" covered="31"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="run" desc="()V" line="102"><counter type="INSTRUCTION" missed="0" covered="75"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="23"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="update" desc="()V" line="148"><counter type="INSTRUCTION" missed="2" covered="43"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="buildCommand" desc="()Lit/polimi/is23am10/server/command/AbstractCommand;" line="174"><counter type="INSTRUCTION" missed="0" covered="42"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$run$1" desc="(Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)V" line="128"><counter type="INSTRUCTION" missed="7" covered="19"/><counter type="LINE" missed="2" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$run$0" desc="(Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)Z" line="125"><counter type="INSTRUCTION" missed="1" covered="12"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="10" covered="222"/><counter type="BRANCH" missed="5" covered="9"/><counter type="LINE" missed="2" covered="55"/><counter type="COMPLEXITY" missed="5" covered="8"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/controller/ServerControllerSocket$CoordinatesDeserializer" sourcefilename="ServerControllerSocket.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/controller/ServerControllerSocket;)V" line="231"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserialize" desc="(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lit/polimi/is23am10/utils/Coordinates;" line="235"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="21" covered="6"/><counter type="LINE" missed="4" covered="1"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="1" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/controller/ServerDebugPrefixString" sourcefilename="ServerDebugPrefixString.java"/><class name="it/polimi/is23am10/server/controller/ServerControllerRmiBindings" sourcefilename="ServerControllerRmiBindings.java"><method name="getRmiRegistry" desc="()Ljava/rmi/registry/Registry;" line="52"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setRmiRegistry" desc="(Ljava/rmi/registry/Registry;)V" line="62"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getServerControllerActionRmiStub" desc="()Lit/polimi/is23am10/server/controller/interfaces/IServerControllerAction;" line="72"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setServerControllerActionServer" desc="(Lit/polimi/is23am10/server/controller/interfaces/IServerControllerAction;)V" line="82"><counter type="INSTRUCTION" missed="4" covered="5"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setServerControllerActionStub" desc="(Lit/polimi/is23am10/server/controller/interfaces/IServerControllerAction;)V" line="95"><counter type="INSTRUCTION" missed="4" covered="5"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="rebindServerControllerAction" desc="(Lit/polimi/is23am10/server/controller/interfaces/IServerControllerAction;)V" line="108"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="8" covered="30"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="2" covered="16"/><counter type="COMPLEXITY" missed="2" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/controller/ServerControllerState" sourcefilename="ServerControllerState.java"><method name="addGameHandler" desc="(Lit/polimi/is23am10/server/network/gamehandler/GameHandler;)V" line="78"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="removeGameHandlerById" desc="(Ljava/util/UUID;)V" line="95"><counter type="INSTRUCTION" missed="0" covered="45"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="17"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addPlayerConnector" desc="(Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)V" line="130"><counter type="INSTRUCTION" missed="0" covered="36"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="removePlayerByGame" desc="(Ljava/util/UUID;Lit/polimi/is23am10/server/model/player/Player;)V" line="156"><counter type="INSTRUCTION" missed="5" covered="57"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="2" covered="18"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGameHandlerByUUID" desc="(Ljava/util/UUID;)Lit/polimi/is23am10/server/network/gamehandler/GameHandler;" line="195"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayersPool" desc="()Ljava/util/Set;" line="214"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGamePools" desc="()Ljava/util/Set;" line="224"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addRmiProxyConnector" desc="(Ljava/util/UUID;Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)V" line="235"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getRmiProxyConnector" desc="(Ljava/util/UUID;)Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;" line="245"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$getGameHandlerByUUID$4" desc="(Ljava/util/UUID;Lit/polimi/is23am10/server/network/gamehandler/GameHandler;)Z" line="197"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$removePlayerByGame$3" desc="(Ljava/util/UUID;Lit/polimi/is23am10/server/model/player/Player;Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)Z" line="165"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$addPlayerConnector$2" desc="(Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)Z" line="136"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$removeGameHandlerById$1" desc="(Lit/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector;)V" line="113"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$removeGameHandlerById$0" desc="(Ljava/util/UUID;Lit/polimi/is23am10/server/network/gamehandler/GameHandler;)Z" line="103"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="39"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="16" covered="243"/><counter type="BRANCH" missed="3" covered="21"/><counter type="LINE" missed="5" covered="71"/><counter type="COMPLEXITY" missed="5" covered="22"/><counter type="METHOD" missed="2" covered="13"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="ServerDebugPrefixString.java"/><sourcefile name="ServerControllerRmiBindings.java"><line nr="52" mi="0" ci="2" mb="0" cb="0"/><line nr="62" mi="0" ci="2" mb="0" cb="0"/><line nr="63" mi="0" ci="1" mb="0" cb="0"/><line nr="72" mi="0" ci="2" mb="0" cb="0"/><line nr="82" mi="0" ci="2" mb="1" cb="1"/><line nr="83" mi="4" ci="0" mb="0" cb="0"/><line nr="85" mi="0" ci="2" mb="0" cb="0"/><line nr="86" mi="0" ci="1" mb="0" cb="0"/><line nr="95" mi="0" ci="2" mb="1" cb="1"/><line nr="96" mi="4" ci="0" mb="0" cb="0"/><line nr="98" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="1" mb="0" cb="0"/><line nr="108" mi="0" ci="2" mb="0" cb="0"/><line nr="109" mi="0" ci="2" mb="0" cb="0"/><line nr="110" mi="0" ci="3" mb="0" cb="0"/><line nr="111" mi="0" ci="4" mb="0" cb="0"/><line nr="112" mi="0" ci="1" mb="0" cb="0"/><line nr="113" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="8" covered="30"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="2" covered="16"/><counter type="COMPLEXITY" missed="2" covered="6"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ServerControllerSocket.java"><line nr="55" mi="0" ci="4" mb="0" cb="0"/><line nr="71" mi="0" ci="9" mb="0" cb="0"/><line nr="72" mi="0" ci="6" mb="0" cb="0"/><line nr="73" mi="0" ci="1" mb="0" cb="0"/><line nr="74" mi="0" ci="2" mb="0" cb="0"/><line nr="90" mi="0" ci="2" mb="0" cb="0"/><line nr="91" mi="0" ci="3" mb="0" cb="0"/><line nr="92" mi="0" ci="3" mb="0" cb="0"/><line nr="93" mi="0" ci="1" mb="0" cb="0"/><line nr="102" mi="0" ci="8" mb="1" cb="3"/><line nr="104" mi="0" ci="3" mb="0" cb="0"/><line nr="105" mi="0" ci="6" mb="0" cb="0"/><line nr="106" mi="0" ci="2" mb="0" cb="0"/><line nr="107" mi="0" ci="1" mb="0" cb="0"/><line nr="108" mi="0" ci="5" mb="0" cb="0"/><line nr="109" mi="0" ci="1" mb="0" cb="0"/><line nr="110" mi="0" ci="1" mb="0" cb="0"/><line nr="111" mi="0" ci="5" mb="0" cb="0"/><line nr="112" mi="0" ci="1" mb="0" cb="0"/><line nr="113" mi="0" ci="5" mb="0" cb="0"/><line nr="116" mi="0" ci="3" mb="0" cb="0"/><line nr="119" mi="0" ci="5" mb="0" cb="0"/><line nr="120" mi="0" ci="8" mb="0" cb="0"/><line nr="122" mi="0" ci="3" mb="0" cb="0"/><line nr="123" mi="0" ci="2" mb="0" cb="0"/><line nr="124" mi="0" ci="3" mb="0" cb="0"/><line nr="125" mi="1" ci="15" mb="1" cb="1"/><line nr="126" mi="0" ci="1" mb="0" cb="0"/><line nr="128" mi="0" ci="11" mb="0" cb="0"/><line nr="129" mi="0" ci="3" mb="0" cb="0"/><line nr="130" mi="0" ci="3" mb="0" cb="0"/><line nr="131" mi="1" ci="0" mb="0" cb="0"/><line nr="132" mi="6" ci="0" mb="0" cb="0"/><line nr="133" mi="0" ci="1" mb="0" cb="0"/><line nr="134" mi="0" ci="1" mb="0" cb="0"/><line nr="135" mi="0" ci="1" mb="0" cb="0"/><line nr="136" mi="0" ci="6" mb="0" cb="0"/><line nr="137" mi="0" ci="1" mb="0" cb="0"/><line nr="138" mi="0" ci="1" mb="0" cb="0"/><line nr="148" mi="0" ci="4" mb="0" cb="0"/><line nr="149" mi="0" ci="2" mb="0" cb="2"/><line nr="151" mi="0" ci="6" mb="0" cb="0"/><line nr="152" mi="0" ci="10" mb="0" cb="0"/><line nr="154" mi="0" ci="6" mb="0" cb="0"/><line nr="155" mi="0" ci="3" mb="0" cb="0"/><line nr="156" mi="2" ci="11" mb="1" cb="1"/><line nr="158" mi="0" ci="1" mb="0" cb="0"/><line nr="174" mi="0" ci="2" mb="0" cb="0"/><line nr="175" mi="0" ci="6" mb="0" cb="0"/><line nr="176" mi="0" ci="6" mb="0" cb="0"/><line nr="177" mi="0" ci="5" mb="0" cb="0"/><line nr="178" mi="0" ci="3" mb="1" cb="1"/><line nr="179" mi="0" ci="3" mb="0" cb="0"/><line nr="181" mi="0" ci="3" mb="0" cb="0"/><line nr="182" mi="0" ci="2" mb="1" cb="1"/><line nr="183" mi="0" ci="5" mb="0" cb="0"/><line nr="185" mi="0" ci="7" mb="0" cb="0"/><line nr="193" mi="0" ci="6" mb="0" cb="0"/><line nr="198" mi="0" ci="3" mb="0" cb="0"/><line nr="200" mi="0" ci="2" mb="0" cb="0"/><line nr="202" mi="0" ci="5" mb="0" cb="0"/><line nr="203" mi="0" ci="1" mb="0" cb="0"/><line nr="204" mi="0" ci="5" mb="0" cb="0"/><line nr="205" mi="0" ci="1" mb="0" cb="0"/><line nr="207" mi="0" ci="8" mb="2" cb="5"/><line nr="209" mi="0" ci="6" mb="0" cb="0"/><line nr="211" mi="0" ci="6" mb="0" cb="0"/><line nr="213" mi="0" ci="6" mb="0" cb="0"/><line nr="215" mi="0" ci="6" mb="0" cb="0"/><line nr="217" mi="6" ci="0" mb="0" cb="0"/><line nr="219" mi="6" ci="0" mb="0" cb="0"/><line nr="221" mi="0" ci="6" mb="0" cb="0"/><line nr="231" mi="0" ci="6" mb="0" cb="0"/><line nr="235" mi="3" ci="0" mb="0" cb="0"/><line nr="236" mi="5" ci="0" mb="0" cb="0"/><line nr="237" mi="5" ci="0" mb="0" cb="0"/><line nr="238" mi="8" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="43" covered="289"/><counter type="BRANCH" missed="7" covered="14"/><counter type="LINE" missed="8" covered="69"/><counter type="COMPLEXITY" missed="8" covered="15"/><counter type="METHOD" missed="1" covered="9"/><counter type="CLASS" missed="0" covered="3"/></sourcefile><sourcefile name="ClientConnectionChecker.java"><line nr="40" mi="0" ci="4" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="2" mb="0" cb="0"/><line nr="74" mi="0" ci="3" mb="0" cb="0"/><line nr="75" mi="0" ci="1" mb="0" cb="0"/><line nr="86" mi="2" ci="0" mb="0" cb="0"/><line nr="87" mi="2" ci="0" mb="0" cb="0"/><line nr="88" mi="2" ci="0" mb="0" cb="0"/><line nr="89" mi="1" ci="0" mb="0" cb="0"/><line nr="92" mi="7" ci="0" mb="0" cb="0"/><line nr="97" mi="1" ci="0" mb="0" cb="0"/><line nr="98" mi="5" ci="0" mb="0" cb="0"/><line nr="99" mi="3" ci="0" mb="0" cb="0"/><line nr="124" mi="0" ci="2" mb="1" cb="1"/><line nr="125" mi="4" ci="0" mb="0" cb="0"/><line nr="126" mi="1" ci="0" mb="0" cb="0"/><line nr="129" mi="0" ci="4" mb="0" cb="0"/><line nr="130" mi="0" ci="7" mb="1" cb="1"/><line nr="131" mi="0" ci="3" mb="0" cb="0"/><line nr="132" mi="0" ci="2" mb="0" cb="0"/><line nr="133" mi="0" ci="2" mb="0" cb="0"/><line nr="135" mi="0" ci="1" mb="0" cb="0"/><line nr="144" mi="0" ci="3" mb="0" cb="0"/><line nr="145" mi="0" ci="5" mb="0" cb="0"/><line nr="146" mi="0" ci="11" mb="0" cb="2"/><line nr="147" mi="0" ci="11" mb="1" cb="3"/><line nr="148" mi="0" ci="7" mb="0" cb="0"/><line nr="149" mi="0" ci="4" mb="0" cb="0"/><line nr="152" mi="0" ci="3" mb="0" cb="0"/><line nr="154" mi="0" ci="1" mb="0" cb="0"/><line nr="155" mi="0" ci="3" mb="0" cb="0"/><line nr="156" mi="1" ci="0" mb="0" cb="0"/><line nr="160" mi="6" ci="0" mb="0" cb="0"/><line nr="161" mi="1" ci="0" mb="0" cb="0"/><line nr="162" mi="6" ci="0" mb="0" cb="0"/><line nr="163" mi="1" ci="1" mb="0" cb="0"/><line nr="164" mi="0" ci="1" mb="0" cb="0"/><line nr="173" mi="0" ci="3" mb="0" cb="0"/><line nr="174" mi="0" ci="5" mb="0" cb="0"/><line nr="175" mi="0" ci="11" mb="0" cb="2"/><line nr="176" mi="0" ci="3" mb="0" cb="0"/><line nr="177" mi="0" ci="6" mb="1" cb="1"/><line nr="178" mi="0" ci="2" mb="1" cb="1"/><line nr="179" mi="0" ci="1" mb="0" cb="0"/><line nr="180" mi="0" ci="3" mb="0" cb="0"/><line nr="182" mi="0" ci="5" mb="0" cb="0"/><line nr="184" mi="0" ci="3" mb="0" cb="2"/><line nr="185" mi="0" ci="7" mb="0" cb="0"/><line nr="186" mi="0" ci="4" mb="0" cb="0"/><line nr="187" mi="0" ci="2" mb="1" cb="1"/><line nr="188" mi="0" ci="10" mb="0" cb="0"/><line nr="190" mi="5" ci="0" mb="0" cb="0"/><line nr="195" mi="0" ci="4" mb="0" cb="0"/><line nr="198" mi="0" ci="3" mb="0" cb="0"/><line nr="199" mi="0" ci="3" mb="0" cb="0"/><line nr="200" mi="0" ci="2" mb="1" cb="1"/><line nr="201" mi="0" ci="9" mb="0" cb="0"/><line nr="202" mi="0" ci="3" mb="0" cb="0"/><line nr="203" mi="0" ci="3" mb="0" cb="0"/><line nr="205" mi="5" ci="0" mb="0" cb="0"/><line nr="209" mi="0" ci="1" mb="0" cb="0"/><line nr="210" mi="0" ci="3" mb="0" cb="0"/><line nr="211" mi="1" ci="0" mb="0" cb="0"/><line nr="215" mi="6" ci="0" mb="0" cb="0"/><line nr="216" mi="1" ci="0" mb="0" cb="0"/><line nr="217" mi="6" ci="0" mb="0" cb="0"/><line nr="218" mi="1" ci="1" mb="0" cb="0"/><line nr="219" mi="0" ci="1" mb="0" cb="0"/><line nr="231" mi="0" ci="10" mb="0" cb="2"/><counter type="INSTRUCTION" missed="68" covered="192"/><counter type="BRANCH" missed="7" covered="17"/><counter type="LINE" missed="20" covered="49"/><counter type="COMPLEXITY" missed="8" covered="10"/><counter type="METHOD" missed="1" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ServerControllerAction.java"><line nr="23" mi="0" ci="2" mb="0" cb="0"/><line nr="29" mi="0" ci="4" mb="0" cb="0"/><line nr="35" mi="0" ci="16" mb="0" cb="0"/><line nr="49" mi="0" ci="4" mb="1" cb="3"/><line nr="50" mi="0" ci="1" mb="0" cb="0"/><line nr="52" mi="0" ci="12" mb="0" cb="0"/><line nr="53" mi="0" ci="1" mb="0" cb="0"/><line nr="61" mi="2" ci="0" mb="2" cb="0"/><line nr="62" mi="2" ci="0" mb="0" cb="0"/><line nr="64" mi="8" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="12" covered="40"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="3" covered="7"/><counter type="COMPLEXITY" missed="3" covered="3"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ServerControllerState.java"><line nr="39" mi="0" ci="3" mb="0" cb="0"/><line nr="45" mi="0" ci="5" mb="0" cb="0"/><line nr="52" mi="0" ci="3" mb="0" cb="0"/><line nr="53" mi="0" ci="2" mb="0" cb="0"/><line nr="59" mi="0" ci="4" mb="0" cb="0"/><line nr="60" mi="0" ci="2" mb="0" cb="0"/><line nr="78" mi="0" ci="2" mb="0" cb="2"/><line nr="79" mi="0" ci="4" mb="0" cb="0"/><line nr="82" mi="0" ci="4" mb="0" cb="0"/><line nr="83" mi="0" ci="4" mb="0" cb="0"/><line nr="84" mi="0" ci="2" mb="0" cb="0"/><line nr="85" mi="0" ci="1" mb="0" cb="0"/><line nr="95" mi="0" ci="2" mb="0" cb="2"/><line nr="96" mi="0" ci="1" mb="0" cb="0"/><line nr="101" mi="0" ci="4" mb="0" cb="0"/><line nr="102" mi="0" ci="4" mb="0" cb="0"/><line nr="103" mi="0" ci="7" mb="0" cb="0"/><line nr="104" mi="0" ci="2" mb="0" cb="0"/><line nr="105" mi="0" ci="3" mb="0" cb="0"/><line nr="106" mi="0" ci="3" mb="0" cb="2"/><line nr="107" mi="0" ci="4" mb="0" cb="0"/><line nr="108" mi="0" ci="4" mb="0" cb="0"/><line nr="109" mi="0" ci="2" mb="0" cb="0"/><line nr="110" mi="0" ci="2" mb="0" cb="0"/><line nr="112" mi="0" ci="1" mb="0" cb="0"/><line nr="113" mi="0" ci="6" mb="0" cb="0"/><line nr="114" mi="0" ci="3" mb="0" cb="0"/><line nr="115" mi="0" ci="4" mb="0" cb="0"/><line nr="116" mi="0" ci="4" mb="0" cb="0"/><line nr="118" mi="0" ci="1" mb="0" cb="0"/><line nr="130" mi="0" ci="2" mb="0" cb="2"/><line nr="131" mi="0" ci="4" mb="0" cb="0"/><line nr="134" mi="0" ci="4" mb="0" cb="0"/><line nr="135" mi="0" ci="4" mb="0" cb="0"/><line nr="136" mi="0" ci="9" mb="0" cb="0"/><line nr="137" mi="0" ci="2" mb="0" cb="0"/><line nr="138" mi="0" ci="3" mb="0" cb="0"/><line nr="139" mi="0" ci="3" mb="0" cb="2"/><line nr="140" mi="0" ci="5" mb="0" cb="0"/><line nr="143" mi="0" ci="4" mb="0" cb="0"/><line nr="144" mi="0" ci="3" mb="0" cb="0"/><line nr="145" mi="0" ci="1" mb="0" cb="0"/><line nr="156" mi="0" ci="4" mb="1" cb="3"/><line nr="157" mi="0" ci="1" mb="0" cb="0"/><line nr="162" mi="0" ci="4" mb="0" cb="0"/><line nr="163" mi="0" ci="5" mb="0" cb="0"/><line nr="164" mi="0" ci="1" mb="0" cb="0"/><line nr="165" mi="0" ci="14" mb="1" cb="3"/><line nr="166" mi="0" ci="2" mb="0" cb="0"/><line nr="167" mi="0" ci="3" mb="0" cb="0"/><line nr="168" mi="0" ci="3" mb="0" cb="2"/><line nr="169" mi="0" ci="4" mb="0" cb="0"/><line nr="170" mi="0" ci="4" mb="1" cb="1"/><line nr="172" mi="0" ci="3" mb="0" cb="0"/><line nr="173" mi="0" ci="5" mb="0" cb="0"/><line nr="174" mi="0" ci="3" mb="0" cb="0"/><line nr="175" mi="0" ci="3" mb="0" cb="0"/><line nr="176" mi="1" ci="0" mb="0" cb="0"/><line nr="177" mi="4" ci="0" mb="0" cb="0"/><line nr="178" mi="0" ci="1" mb="0" cb="0"/><line nr="180" mi="0" ci="4" mb="0" cb="0"/><line nr="181" mi="0" ci="6" mb="0" cb="0"/><line nr="183" mi="0" ci="1" mb="0" cb="0"/><line nr="195" mi="0" ci="4" mb="0" cb="0"/><line nr="196" mi="0" ci="4" mb="0" cb="0"/><line nr="197" mi="0" ci="7" mb="0" cb="0"/><line nr="198" mi="0" ci="2" mb="0" cb="0"/><line nr="199" mi="0" ci="3" mb="0" cb="0"/><line nr="200" mi="0" ci="3" mb="0" cb="2"/><line nr="201" mi="0" ci="4" mb="0" cb="0"/><line nr="203" mi="0" ci="4" mb="0" cb="0"/><line nr="214" mi="0" ci="2" mb="0" cb="0"/><line nr="224" mi="0" ci="2" mb="0" cb="0"/><line nr="235" mi="5" ci="0" mb="0" cb="0"/><line nr="236" mi="1" ci="0" mb="0" cb="0"/><line nr="245" mi="5" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="16" covered="243"/><counter type="BRANCH" missed="3" covered="21"/><counter type="LINE" missed="5" covered="71"/><counter type="COMPLEXITY" missed="5" covered="22"/><counter type="METHOD" missed="2" covered="13"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="147" covered="794"/><counter type="BRANCH" missed="22" covered="57"/><counter type="LINE" missed="38" covered="212"/><counter type="COMPLEXITY" missed="26" covered="56"/><counter type="METHOD" missed="5" covered="35"/><counter type="CLASS" missed="0" covered="7"/></package><package name="it/polimi/is23am10/server/network/messages"><class name="it/polimi/is23am10/server/network/messages/ChatMessage" sourcefilename="ChatMessage.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/player/Player;Ljava/lang/String;Lit/polimi/is23am10/server/model/player/Player;)V" line="23"><counter type="INSTRUCTION" missed="0" covered="30"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/player/Player;Ljava/lang/String;Ljava/lang/String;)V" line="23"><counter type="INSTRUCTION" missed="0" covered="30"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/player/Player;Ljava/lang/String;)V" line="23"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isBroadcast" desc="()Z" line="95"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getReceiver" desc="()Lit/polimi/is23am10/server/model/player/Player;" line="104"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getReceiverName" desc="()Ljava/lang/String;" line="113"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getSender" desc="()Lit/polimi/is23am10/server/model/player/Player;" line="122"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="103"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="26"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/messages/AvailableGamesMessage" sourcefilename="AvailableGamesMessage.java"><method name="&lt;init&gt;" desc="(Ljava/util/List;[Lit/polimi/is23am10/server/model/player/Player;)V" line="27"><counter type="INSTRUCTION" missed="0" covered="37"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isBroadcast" desc="()Z" line="64"><counter type="INSTRUCTION" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getReceiver" desc="()Lit/polimi/is23am10/server/model/player/Player;" line="73"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="5" covered="37"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="2" covered="11"/><counter type="COMPLEXITY" missed="3" covered="2"/><counter type="METHOD" missed="2" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/messages/AbstractMessage" sourcefilename="AbstractMessage.java"><method name="&lt;init&gt;" desc="()V" line="13"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMessage" desc="()Ljava/lang/String;" line="58"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMessageType" desc="()Lit/polimi/is23am10/server/network/messages/AbstractMessage$MessageType;" line="67"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/messages/GameMessage" sourcefilename="GameMessage.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/network/virtualview/VirtualView;)V" line="23"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGame" desc="()Lit/polimi/is23am10/server/network/virtualview/VirtualView;" line="51"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="35"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/messages/SnoozeACKMessage" sourcefilename="SnoozeACKMessage.java"><method name="&lt;init&gt;" desc="()V" line="18"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/messages/AbstractMessage$MessageType" sourcefilename="AbstractMessage.java"><method name="&lt;clinit&gt;" desc="()V" line="23"><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/messages/ErrorMessage$ErrorSeverity" sourcefilename="ErrorMessage.java"><method name="&lt;clinit&gt;" desc="()V" line="38"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/messages/ErrorMessage" sourcefilename="ErrorMessage.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Lit/polimi/is23am10/server/model/player/Player;Lit/polimi/is23am10/server/network/messages/ErrorMessage$ErrorSeverity;)V" line="21"><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;Lit/polimi/is23am10/server/network/messages/ErrorMessage$ErrorSeverity;)V" line="21"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isBroadcast" desc="()Z" line="77"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getReceiver" desc="()Lit/polimi/is23am10/server/model/player/Player;" line="86"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getErrorSeverity" desc="()Lit/polimi/is23am10/server/network/messages/ErrorMessage$ErrorSeverity;" line="95"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="13" covered="37"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="13"/><counter type="COMPLEXITY" missed="4" covered="2"/><counter type="METHOD" missed="3" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="GameMessage.java"><line nr="23" mi="0" ci="2" mb="0" cb="0"/><line nr="24" mi="0" ci="3" mb="0" cb="0"/><line nr="29" mi="0" ci="7" mb="0" cb="0"/><line nr="30" mi="0" ci="1" mb="0" cb="0"/><line nr="31" mi="0" ci="2" mb="0" cb="0"/><line nr="39" mi="0" ci="2" mb="0" cb="0"/><line nr="40" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="6" mb="0" cb="0"/><line nr="42" mi="0" ci="1" mb="0" cb="0"/><line nr="51" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="35"/><counter type="LINE" missed="0" covered="10"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="SnoozeACKMessage.java"><line nr="18" mi="0" ci="2" mb="0" cb="0"/><line nr="19" mi="0" ci="3" mb="0" cb="0"/><line nr="25" mi="0" ci="2" mb="0" cb="0"/><line nr="26" mi="0" ci="3" mb="0" cb="0"/><line nr="27" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ErrorMessage.java"><line nr="21" mi="0" ci="4" mb="0" cb="0"/><line nr="22" mi="0" ci="6" mb="0" cb="0"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="39" mi="0" ci="6" mb="0" cb="0"/><line nr="40" mi="0" ci="6" mb="0" cb="0"/><line nr="41" mi="0" ci="6" mb="0" cb="0"/><line nr="42" mi="0" ci="6" mb="0" cb="0"/><line nr="53" mi="0" ci="2" mb="0" cb="0"/><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="55" mi="0" ci="3" mb="0" cb="0"/><line nr="56" mi="0" ci="3" mb="0" cb="0"/><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="1" mb="0" cb="0"/><line nr="65" mi="0" ci="2" mb="0" cb="0"/><line nr="66" mi="0" ci="3" mb="0" cb="0"/><line nr="67" mi="0" ci="3" mb="0" cb="0"/><line nr="68" mi="0" ci="3" mb="0" cb="0"/><line nr="69" mi="0" ci="1" mb="0" cb="0"/><line nr="77" mi="7" ci="0" mb="2" cb="0"/><line nr="86" mi="3" ci="0" mb="0" cb="0"/><line nr="95" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="13" covered="64"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="3" covered="18"/><counter type="COMPLEXITY" missed="4" covered="3"/><counter type="METHOD" missed="3" covered="3"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="AvailableGamesMessage.java"><line nr="27" mi="0" ci="2" mb="0" cb="0"/><line nr="28" mi="0" ci="3" mb="0" cb="0"/><line nr="33" mi="0" ci="7" mb="0" cb="0"/><line nr="34" mi="0" ci="1" mb="0" cb="0"/><line nr="35" mi="0" ci="2" mb="0" cb="0"/><line nr="49" mi="0" ci="2" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="6" mb="0" cb="0"/><line nr="52" mi="0" ci="5" mb="1" cb="3"/><line nr="53" mi="0" ci="5" mb="0" cb="0"/><line nr="55" mi="0" ci="1" mb="0" cb="0"/><line nr="64" mi="2" ci="0" mb="0" cb="0"/><line nr="73" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="5" covered="37"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="2" covered="11"/><counter type="COMPLEXITY" missed="3" covered="2"/><counter type="METHOD" missed="2" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ChatMessage.java"><line nr="23" mi="0" ci="6" mb="0" cb="0"/><line nr="24" mi="0" ci="9" mb="0" cb="0"/><line nr="29" mi="0" ci="21" mb="0" cb="0"/><line nr="30" mi="0" ci="3" mb="0" cb="0"/><line nr="31" mi="0" ci="6" mb="0" cb="0"/><line nr="56" mi="0" ci="2" mb="0" cb="0"/><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="3" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="0" cb="0"/><line nr="60" mi="0" ci="3" mb="0" cb="0"/><line nr="61" mi="0" ci="1" mb="0" cb="0"/><line nr="70" mi="0" ci="2" mb="0" cb="0"/><line nr="71" mi="0" ci="3" mb="0" cb="0"/><line nr="72" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="3" mb="0" cb="0"/><line nr="74" mi="0" ci="3" mb="0" cb="0"/><line nr="75" mi="0" ci="1" mb="0" cb="0"/><line nr="83" mi="0" ci="2" mb="0" cb="0"/><line nr="84" mi="0" ci="3" mb="0" cb="0"/><line nr="85" mi="0" ci="3" mb="0" cb="0"/><line nr="86" mi="0" ci="3" mb="0" cb="0"/><line nr="87" mi="0" ci="1" mb="0" cb="0"/><line nr="95" mi="0" ci="7" mb="0" cb="2"/><line nr="104" mi="0" ci="3" mb="0" cb="0"/><line nr="113" mi="0" ci="3" mb="0" cb="0"/><line nr="122" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="103"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="26"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="7"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="AbstractMessage.java"><line nr="13" mi="0" ci="3" mb="0" cb="0"/><line nr="23" mi="0" ci="3" mb="0" cb="0"/><line nr="27" mi="0" ci="6" mb="0" cb="0"/><line nr="31" mi="0" ci="6" mb="0" cb="0"/><line nr="35" mi="0" ci="6" mb="0" cb="0"/><line nr="39" mi="0" ci="6" mb="0" cb="0"/><line nr="44" mi="0" ci="6" mb="0" cb="0"/><line nr="58" mi="0" ci="3" mb="0" cb="0"/><line nr="67" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="42"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><counter type="INSTRUCTION" missed="18" covered="292"/><counter type="BRANCH" missed="3" covered="5"/><counter type="LINE" missed="5" covered="79"/><counter type="COMPLEXITY" missed="7" covered="20"/><counter type="METHOD" missed="5" covered="18"/><counter type="CLASS" missed="0" covered="8"/></package><package name="it/polimi/is23am10/server/model/items/card"><class name="it/polimi/is23am10/server/model/items/card/AbstractCard" sourcefilename="AbstractCard.java"><method name="&lt;init&gt;" desc="()V" line="17"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setPattern" desc="(Lit/polimi/is23am10/server/model/pattern/AbstractPattern;)V" line="35"><counter type="INSTRUCTION" missed="0" covered="14"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPattern" desc="()Lit/polimi/is23am10/server/model/pattern/AbstractPattern;" line="48"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/model/items/card/PrivateCard" sourcefilename="PrivateCard.java"><method name="&lt;init&gt;" desc="(Ljava/util/List;)V" line="40"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="()V" line="49"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setMatchedBlocksCount" desc="(Ljava/lang/Integer;)V" line="64"><counter type="INSTRUCTION" missed="0" covered="23"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMatchedBlocksCount" desc="()Ljava/lang/Integer;" line="82"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="37"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="2" covered="13"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="1" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/model/items/card/SharedCard" sourcefilename="SharedCard.java"><method name="&lt;init&gt;" desc="(Ljava/util/List;Ljava/lang/Integer;)V" line="46"><counter type="INSTRUCTION" missed="0" covered="70"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setScoreBlocks" desc="(Ljava/util/List;)V" line="78"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getScoreBlocks" desc="()Ljava/util/List;" line="92"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCardWinners" desc="()Ljava/util/List;" line="102"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addCardWinner" desc="(Lit/polimi/is23am10/server/model/player/Player;)V" line="113"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="9" covered="86"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="3" covered="18"/><counter type="COMPLEXITY" missed="2" covered="5"/><counter type="METHOD" missed="2" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="AbstractCard.java"><line nr="17" mi="0" ci="3" mb="0" cb="0"/><line nr="35" mi="0" ci="3" mb="0" cb="2"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="37" mi="0" ci="4" mb="0" cb="0"/><line nr="39" mi="0" ci="3" mb="0" cb="0"/><line nr="40" mi="0" ci="1" mb="0" cb="0"/><line nr="48" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="PrivateCard.java"><line nr="40" mi="0" ci="2" mb="0" cb="0"/><line nr="41" mi="0" ci="4" mb="0" cb="0"/><line nr="42" mi="0" ci="4" mb="0" cb="0"/><line nr="43" mi="0" ci="1" mb="0" cb="0"/><line nr="49" mi="2" ci="0" mb="0" cb="0"/><line nr="50" mi="1" ci="0" mb="0" cb="0"/><line nr="64" mi="0" ci="2" mb="0" cb="2"/><line nr="65" mi="0" ci="3" mb="0" cb="0"/><line nr="66" mi="0" ci="4" mb="0" cb="0"/><line nr="68" mi="0" ci="3" mb="0" cb="2"/><line nr="69" mi="0" ci="3" mb="0" cb="0"/><line nr="70" mi="0" ci="4" mb="0" cb="0"/><line nr="72" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="1" mb="0" cb="0"/><line nr="82" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="37"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="2" covered="13"/><counter type="COMPLEXITY" missed="1" covered="5"/><counter type="METHOD" missed="1" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="SharedCard.java"><line nr="46" mi="0" ci="4" mb="0" cb="0"/><line nr="47" mi="0" ci="7" mb="0" cb="0"/><line nr="48" mi="0" ci="9" mb="0" cb="0"/><line nr="49" mi="0" ci="10" mb="0" cb="0"/><line nr="61" mi="0" ci="2" mb="0" cb="0"/><line nr="62" mi="0" ci="5" mb="0" cb="0"/><line nr="63" mi="0" ci="5" mb="0" cb="0"/><line nr="64" mi="0" ci="14" mb="0" cb="2"/><line nr="65" mi="0" ci="8" mb="0" cb="0"/><line nr="66" mi="0" ci="1" mb="0" cb="0"/><line nr="67" mi="0" ci="4" mb="0" cb="0"/><line nr="68" mi="0" ci="1" mb="0" cb="0"/><line nr="78" mi="0" ci="2" mb="0" cb="2"/><line nr="79" mi="0" ci="3" mb="0" cb="0"/><line nr="80" mi="0" ci="4" mb="0" cb="0"/><line nr="82" mi="0" ci="3" mb="0" cb="0"/><line nr="83" mi="0" ci="1" mb="0" cb="0"/><line nr="92" mi="0" ci="3" mb="0" cb="0"/><line nr="102" mi="3" ci="0" mb="0" cb="0"/><line nr="113" mi="5" ci="0" mb="0" cb="0"/><line nr="114" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="9" covered="86"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="3" covered="18"/><counter type="COMPLEXITY" missed="2" covered="5"/><counter type="METHOD" missed="2" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="12" covered="143"/><counter type="BRANCH" missed="0" covered="10"/><counter type="LINE" missed="5" covered="38"/><counter type="COMPLEXITY" missed="3" covered="14"/><counter type="METHOD" missed="3" covered="9"/><counter type="CLASS" missed="0" covered="3"/></package><package name="it/polimi/is23am10/server/model/items/bookshelf"><class name="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf" sourcefilename="Bookshelf.java"><method name="&lt;init&gt;" desc="()V" line="40"><counter type="INSTRUCTION" missed="0" covered="49"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getBookshelfString" desc="()Ljava/lang/String;" line="78"><counter type="INSTRUCTION" missed="42" covered="0"/><counter type="BRANCH" missed="4" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)V" line="40"><counter type="INSTRUCTION" missed="0" covered="30"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="40"><counter type="INSTRUCTION" missed="0" covered="98"/><counter type="BRANCH" missed="0" covered="10"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setBookshelfGridIndex" desc="(Ljava/lang/Integer;Ljava/lang/Integer;Lit/polimi/is23am10/server/model/items/tile/Tile;)V" line="161"><counter type="INSTRUCTION" missed="0" covered="37"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getBookshelfGrid" desc="()[[Lit/polimi/is23am10/server/model/items/tile/Tile;" line="180"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getBookshelfGridAt" desc="(Ljava/lang/Integer;Ljava/lang/Integer;)Lit/polimi/is23am10/server/model/items/tile/Tile;" line="197"><counter type="INSTRUCTION" missed="0" covered="29"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isBookshelfFull" desc="()Z" line="212"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="BRANCH" missed="0" covered="6"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="4"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getFreeRowsInCol" desc="(I)I" line="236"><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="251"><counter type="INSTRUCTION" missed="2" covered="12"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="264"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$new$2" desc="(I)[[Lit/polimi/is23am10/server/model/items/tile/Tile;" line="98"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$new$1" desc="(Ljava/lang/Object;)[Lit/polimi/is23am10/server/model/items/tile/Tile;" line="97"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$getBookshelfString$0" desc="(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;)Z" line="84"><counter type="INSTRUCTION" missed="18" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="66" covered="312"/><counter type="BRANCH" missed="7" covered="35"/><counter type="LINE" missed="9" covered="51"/><counter type="COMPLEXITY" missed="7" covered="28"/><counter type="METHOD" missed="3" covered="11"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Bookshelf.java"><line nr="40" mi="0" ci="51" mb="0" cb="0"/><line nr="63" mi="0" ci="2" mb="0" cb="0"/><line nr="64" mi="0" ci="5" mb="0" cb="0"/><line nr="65" mi="0" ci="7" mb="0" cb="2"/><line nr="66" mi="0" ci="7" mb="0" cb="2"/><line nr="67" mi="0" ci="10" mb="0" cb="0"/><line nr="70" mi="0" ci="1" mb="0" cb="0"/><line nr="78" mi="4" ci="0" mb="0" cb="0"/><line nr="79" mi="7" ci="0" mb="2" cb="0"/><line nr="80" mi="7" ci="0" mb="2" cb="0"/><line nr="82" mi="3" ci="0" mb="0" cb="0"/><line nr="83" mi="3" ci="0" mb="0" cb="0"/><line nr="84" mi="33" ci="0" mb="2" cb="0"/><line nr="87" mi="3" ci="0" mb="0" cb="0"/><line nr="95" mi="0" ci="2" mb="0" cb="0"/><line nr="96" mi="0" ci="5" mb="0" cb="0"/><line nr="97" mi="0" ci="7" mb="0" cb="0"/><line nr="98" mi="0" ci="6" mb="0" cb="0"/><line nr="99" mi="0" ci="1" mb="0" cb="0"/><line nr="118" mi="0" ci="2" mb="0" cb="0"/><line nr="120" mi="0" ci="4" mb="0" cb="2"/><line nr="121" mi="0" ci="5" mb="0" cb="0"/><line nr="124" mi="0" ci="4" mb="0" cb="0"/><line nr="125" mi="0" ci="16" mb="0" cb="2"/><line nr="126" mi="0" ci="5" mb="0" cb="2"/><line nr="127" mi="0" ci="5" mb="0" cb="0"/><line nr="131" mi="0" ci="5" mb="0" cb="0"/><line nr="139" mi="0" ci="7" mb="0" cb="2"/><line nr="140" mi="0" ci="7" mb="0" cb="2"/><line nr="141" mi="0" ci="20" mb="0" cb="0"/><line nr="144" mi="0" ci="1" mb="0" cb="0"/><line nr="161" mi="0" ci="5" mb="0" cb="2"/><line nr="162" mi="0" ci="5" mb="0" cb="0"/><line nr="164" mi="0" ci="5" mb="0" cb="2"/><line nr="165" mi="0" ci="5" mb="0" cb="0"/><line nr="167" mi="0" ci="2" mb="0" cb="2"/><line nr="168" mi="0" ci="5" mb="0" cb="0"/><line nr="170" mi="0" ci="9" mb="0" cb="0"/><line nr="171" mi="0" ci="1" mb="0" cb="0"/><line nr="180" mi="0" ci="3" mb="0" cb="0"/><line nr="197" mi="0" ci="5" mb="0" cb="2"/><line nr="198" mi="0" ci="5" mb="0" cb="0"/><line nr="200" mi="0" ci="5" mb="0" cb="2"/><line nr="201" mi="0" ci="5" mb="0" cb="0"/><line nr="203" mi="0" ci="9" mb="0" cb="0"/><line nr="212" mi="0" ci="7" mb="0" cb="2"/><line nr="213" mi="0" ci="7" mb="0" cb="2"/><line nr="214" mi="0" ci="8" mb="0" cb="2"/><line nr="215" mi="0" ci="2" mb="0" cb="0"/><line nr="219" mi="0" ci="2" mb="0" cb="0"/><line nr="236" mi="0" ci="2" mb="0" cb="0"/><line nr="237" mi="0" ci="7" mb="0" cb="2"/><line nr="238" mi="0" ci="8" mb="0" cb="2"/><line nr="239" mi="0" ci="1" mb="0" cb="0"/><line nr="242" mi="0" ci="2" mb="0" cb="0"/><line nr="251" mi="0" ci="3" mb="1" cb="1"/><line nr="252" mi="2" ci="0" mb="0" cb="0"/><line nr="254" mi="0" ci="3" mb="0" cb="0"/><line nr="255" mi="0" ci="6" mb="0" cb="0"/><line nr="264" mi="4" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="66" covered="312"/><counter type="BRANCH" missed="7" covered="35"/><counter type="LINE" missed="9" covered="51"/><counter type="COMPLEXITY" missed="7" covered="28"/><counter type="METHOD" missed="3" covered="11"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="66" covered="312"/><counter type="BRANCH" missed="7" covered="35"/><counter type="LINE" missed="9" covered="51"/><counter type="COMPLEXITY" missed="7" covered="28"/><counter type="METHOD" missed="3" covered="11"/><counter type="CLASS" missed="0" covered="1"/></package><package name="it/polimi/is23am10/utils/config"><class name="it/polimi/is23am10/utils/config/AppConfig" sourcefilename="AppConfig.java"><method name="setServerSocketPort" desc="(Ljava/lang/Integer;)V" line="121"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setServerRmiPort" desc="(Ljava/lang/Integer;)V" line="134"><counter type="INSTRUCTION" missed="4" covered="13"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setMaxConnections" desc="(Ljava/lang/Integer;)V" line="148"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setKeepAlive" desc="(Z)V" line="161"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setIsServer" desc="(Z)V" line="171"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setShowGUI" desc="(Z)V" line="181"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setUseRMI" desc="(Z)V" line="191"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setShowDebug" desc="(Z)V" line="201"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setServerAddress" desc="(Ljava/lang/String;)V" line="211"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setMaxInactivityTimeMs" desc="(J)V" line="220"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getServerSocketPort" desc="()Ljava/lang/Integer;" line="230"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getServerRmiPort" desc="()Ljava/lang/Integer;" line="240"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMaxConnections" desc="()Ljava/lang/Integer;" line="250"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getKeepAlive" desc="()Z" line="260"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getIsServer" desc="()Z" line="270"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getShowGUI" desc="()Z" line="280"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getUseRMI" desc="()Z" line="290"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getServerAddress" desc="()Ljava/lang/String;" line="300"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getShowDebug" desc="()Z" line="310"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMaxInactivityTime" desc="()J" line="320"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="30"><counter type="INSTRUCTION" missed="0" covered="36"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="7" covered="121"/><counter type="BRANCH" missed="2" covered="10"/><counter type="LINE" missed="3" covered="47"/><counter type="COMPLEXITY" missed="3" covered="24"/><counter type="METHOD" missed="1" covered="20"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/utils/config/AppConfigContext" sourcefilename="AppConfigContext.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Integer;Ljava/lang/Integer;Ljava/lang/Integer;ZZZZLjava/lang/String;ZJ)V" line="88"><counter type="INSTRUCTION" missed="33" covered="0"/><counter type="LINE" missed="12" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="()V" line="107"><counter type="INSTRUCTION" missed="0" covered="33"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getServerSocketPort" desc="()Ljava/lang/Integer;" line="127"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getServerRmiPort" desc="()Ljava/lang/Integer;" line="137"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMaxConnections" desc="()Ljava/lang/Integer;" line="147"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getKeepAlive" desc="()Z" line="157"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getIsServer" desc="()Z" line="167"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getShowGUI" desc="()Z" line="177"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getUseRMI" desc="()Z" line="187"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getServerAddress" desc="()Ljava/lang/String;" line="197"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getShowDebug" desc="()Z" line="207"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getMaxInactivityTime" desc="()J" line="217"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="36" covered="60"/><counter type="LINE" missed="13" covered="21"/><counter type="COMPLEXITY" missed="2" covered="10"/><counter type="METHOD" missed="2" covered="10"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="AppConfig.java"><line nr="30" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="3" mb="0" cb="0"/><line nr="48" mi="0" ci="3" mb="0" cb="0"/><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="60" mi="0" ci="3" mb="0" cb="0"/><line nr="67" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="2" mb="0" cb="0"/><line nr="79" mi="0" ci="2" mb="0" cb="0"/><line nr="87" mi="0" ci="2" mb="0" cb="0"/><line nr="95" mi="0" ci="2" mb="0" cb="0"/><line nr="101" mi="0" ci="2" mb="0" cb="0"/><line nr="107" mi="0" ci="2" mb="0" cb="0"/><line nr="112" mi="0" ci="3" mb="0" cb="0"/><line nr="121" mi="0" ci="10" mb="0" cb="4"/><line nr="122" mi="0" ci="4" mb="0" cb="0"/><line nr="124" mi="0" ci="2" mb="0" cb="0"/><line nr="125" mi="0" ci="1" mb="0" cb="0"/><line nr="134" mi="0" ci="10" mb="2" cb="2"/><line nr="135" mi="4" ci="0" mb="0" cb="0"/><line nr="137" mi="0" ci="2" mb="0" cb="0"/><line nr="138" mi="0" ci="1" mb="0" cb="0"/><line nr="148" mi="0" ci="10" mb="0" cb="4"/><line nr="149" mi="0" ci="4" mb="0" cb="0"/><line nr="151" mi="0" ci="2" mb="0" cb="0"/><line nr="152" mi="0" ci="1" mb="0" cb="0"/><line nr="161" mi="0" ci="2" mb="0" cb="0"/><line nr="162" mi="0" ci="1" mb="0" cb="0"/><line nr="171" mi="0" ci="2" mb="0" cb="0"/><line nr="172" mi="0" ci="1" mb="0" cb="0"/><line nr="181" mi="0" ci="2" mb="0" cb="0"/><line nr="182" mi="0" ci="1" mb="0" cb="0"/><line nr="191" mi="0" ci="2" mb="0" cb="0"/><line nr="192" mi="0" ci="1" mb="0" cb="0"/><line nr="201" mi="2" ci="0" mb="0" cb="0"/><line nr="202" mi="1" ci="0" mb="0" cb="0"/><line nr="211" mi="0" ci="2" mb="0" cb="0"/><line nr="212" mi="0" ci="1" mb="0" cb="0"/><line nr="220" mi="0" ci="2" mb="0" cb="0"/><line nr="221" mi="0" ci="1" mb="0" cb="0"/><line nr="230" mi="0" ci="2" mb="0" cb="0"/><line nr="240" mi="0" ci="2" mb="0" cb="0"/><line nr="250" mi="0" ci="2" mb="0" cb="0"/><line nr="260" mi="0" ci="2" mb="0" cb="0"/><line nr="270" mi="0" ci="2" mb="0" cb="0"/><line nr="280" mi="0" ci="2" mb="0" cb="0"/><line nr="290" mi="0" ci="2" mb="0" cb="0"/><line nr="300" mi="0" ci="2" mb="0" cb="0"/><line nr="310" mi="0" ci="2" mb="0" cb="0"/><line nr="320" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="7" covered="121"/><counter type="BRANCH" missed="2" covered="10"/><counter type="LINE" missed="3" covered="47"/><counter type="COMPLEXITY" missed="3" covered="24"/><counter type="METHOD" missed="1" covered="20"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="AppConfigContext.java"><line nr="88" mi="2" ci="0" mb="0" cb="0"/><line nr="89" mi="3" ci="0" mb="0" cb="0"/><line nr="90" mi="3" ci="0" mb="0" cb="0"/><line nr="91" mi="3" ci="0" mb="0" cb="0"/><line nr="92" mi="3" ci="0" mb="0" cb="0"/><line nr="93" mi="3" ci="0" mb="0" cb="0"/><line nr="94" mi="3" ci="0" mb="0" cb="0"/><line nr="95" mi="3" ci="0" mb="0" cb="0"/><line nr="96" mi="3" ci="0" mb="0" cb="0"/><line nr="97" mi="3" ci="0" mb="0" cb="0"/><line nr="98" mi="3" ci="0" mb="0" cb="0"/><line nr="99" mi="1" ci="0" mb="0" cb="0"/><line nr="107" mi="0" ci="2" mb="0" cb="0"/><line nr="108" mi="0" ci="3" mb="0" cb="0"/><line nr="109" mi="0" ci="3" mb="0" cb="0"/><line nr="110" mi="0" ci="3" mb="0" cb="0"/><line nr="111" mi="0" ci="3" mb="0" cb="0"/><line nr="112" mi="0" ci="3" mb="0" cb="0"/><line nr="113" mi="0" ci="3" mb="0" cb="0"/><line nr="114" mi="0" ci="3" mb="0" cb="0"/><line nr="115" mi="0" ci="3" mb="0" cb="0"/><line nr="116" mi="0" ci="3" mb="0" cb="0"/><line nr="117" mi="0" ci="3" mb="0" cb="0"/><line nr="118" mi="0" ci="1" mb="0" cb="0"/><line nr="127" mi="0" ci="3" mb="0" cb="0"/><line nr="137" mi="0" ci="3" mb="0" cb="0"/><line nr="147" mi="0" ci="3" mb="0" cb="0"/><line nr="157" mi="0" ci="3" mb="0" cb="0"/><line nr="167" mi="0" ci="3" mb="0" cb="0"/><line nr="177" mi="0" ci="3" mb="0" cb="0"/><line nr="187" mi="0" ci="3" mb="0" cb="0"/><line nr="197" mi="0" ci="3" mb="0" cb="0"/><line nr="207" mi="3" ci="0" mb="0" cb="0"/><line nr="217" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="36" covered="60"/><counter type="LINE" missed="13" covered="21"/><counter type="COMPLEXITY" missed="2" covered="10"/><counter type="METHOD" missed="2" covered="10"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="43" covered="181"/><counter type="BRANCH" missed="2" covered="10"/><counter type="LINE" missed="16" covered="68"/><counter type="COMPLEXITY" missed="5" covered="34"/><counter type="METHOD" missed="3" covered="30"/><counter type="CLASS" missed="0" covered="2"/></package><package name="it/polimi/is23am10/server/model/items/scoreblock"><class name="it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock" sourcefilename="ScoreBlock.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Integer;)V" line="33"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getScore" desc="()Ljava/lang/Integer;" line="48"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="57"><counter type="INSTRUCTION" missed="3" covered="14"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="70"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="19"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="7" covered="59"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="2" covered="11"/><counter type="COMPLEXITY" missed="3" covered="5"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="ScoreBlock.java"><line nr="19" mi="0" ci="25" mb="0" cb="0"/><line nr="33" mi="0" ci="2" mb="0" cb="0"/><line nr="34" mi="0" ci="4" mb="0" cb="2"/><line nr="35" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="4" mb="0" cb="0"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="39" mi="0" ci="1" mb="0" cb="0"/><line nr="48" mi="0" ci="3" mb="0" cb="0"/><line nr="57" mi="0" ci="3" mb="1" cb="1"/><line nr="58" mi="2" ci="0" mb="0" cb="0"/><line nr="60" mi="0" ci="3" mb="0" cb="0"/><line nr="61" mi="1" ci="8" mb="1" cb="1"/><line nr="70" mi="4" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="7" covered="59"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="2" covered="11"/><counter type="COMPLEXITY" missed="3" covered="5"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="7" covered="59"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="2" covered="11"/><counter type="COMPLEXITY" missed="3" covered="5"/><counter type="METHOD" missed="1" covered="4"/><counter type="CLASS" missed="0" covered="1"/></package><package name="it/polimi/is23am10/client"><class name="it/polimi/is23am10/client/IClient" sourcefilename="IClient.java"/><class name="it/polimi/is23am10/client/Client$1" sourcefilename="Client.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/client/Client;)V" line="256"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="it/polimi/is23am10/client/Client$MessageDeserializer" sourcefilename="Client.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/client/Client;)V" line="783"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserialize" desc="(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lit/polimi/is23am10/server/network/messages/AbstractMessage;" line="788"><counter type="INSTRUCTION" missed="61" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="13" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="61" covered="6"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="13" covered="1"/><counter type="COMPLEXITY" missed="6" covered="1"/><counter type="METHOD" missed="1" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/client/Client$ClientGameStatus" sourcefilename="Client.java"><method name="&lt;clinit&gt;" desc="()V" line="144"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/client/Client$AlarmTask" sourcefilename="Client.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/client/Client;Lit/polimi/is23am10/client/interfaces/AlarmConsumer;)V" line="824"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="run" desc="()V" line="830"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/client/LockObject" sourcefilename="Client.java"><method name="&lt;init&gt;" desc="()V" line="60"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Client.java"><line nr="60" mi="0" ci="3" mb="0" cb="0"/><line nr="144" mi="0" ci="3" mb="0" cb="0"/><line nr="146" mi="0" ci="6" mb="0" cb="0"/><line nr="148" mi="0" ci="6" mb="0" cb="0"/><line nr="150" mi="0" ci="6" mb="0" cb="0"/><line nr="256" mi="6" ci="0" mb="0" cb="0"/><line nr="783" mi="0" ci="6" mb="0" cb="0"/><line nr="788" mi="3" ci="0" mb="0" cb="0"/><line nr="790" mi="2" ci="0" mb="0" cb="0"/><line nr="792" mi="5" ci="0" mb="0" cb="0"/><line nr="793" mi="1" ci="0" mb="0" cb="0"/><line nr="794" mi="5" ci="0" mb="0" cb="0"/><line nr="795" mi="1" ci="0" mb="0" cb="0"/><line nr="797" mi="8" ci="0" mb="6" cb="0"/><line nr="799" mi="6" ci="0" mb="0" cb="0"/><line nr="801" mi="6" ci="0" mb="0" cb="0"/><line nr="803" mi="6" ci="0" mb="0" cb="0"/><line nr="805" mi="6" ci="0" mb="0" cb="0"/><line nr="807" mi="6" ci="0" mb="0" cb="0"/><line nr="809" mi="6" ci="0" mb="0" cb="0"/><line nr="824" mi="0" ci="5" mb="0" cb="0"/><line nr="825" mi="0" ci="3" mb="0" cb="0"/><line nr="826" mi="0" ci="1" mb="0" cb="0"/><line nr="830" mi="0" ci="3" mb="0" cb="0"/><line nr="831" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="67" covered="43"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="14" covered="11"/><counter type="COMPLEXITY" missed="7" covered="5"/><counter type="METHOD" missed="2" covered="5"/><counter type="CLASS" missed="1" covered="4"/></sourcefile><sourcefile name="IClient.java"/><counter type="INSTRUCTION" missed="67" covered="43"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="14" covered="11"/><counter type="COMPLEXITY" missed="7" covered="5"/><counter type="METHOD" missed="2" covered="5"/><counter type="CLASS" missed="1" covered="4"/></package><package name="it/polimi/is23am10/server/network/playerconnector"><class name="it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector" sourcefilename="AbstractPlayerConnector.java"><method name="&lt;init&gt;" desc="(Ljava/util/concurrent/LinkedBlockingQueue;)V" line="60"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGameId" desc="()Ljava/util/UUID;" line="75"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayer" desc="()Lit/polimi/is23am10/server/model/player/Player;" line="85"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMessageFromQueue" desc="()Lit/polimi/is23am10/server/network/messages/AbstractMessage;" line="95"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMsgQueueSize" desc="()I" line="109"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getLastSnoozeMs" desc="()J" line="119"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setGameId" desc="(Ljava/util/UUID;)V" line="143"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setPlayer" desc="(Lit/polimi/is23am10/server/model/player/Player;)V" line="154"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setLastSnoozeMs" desc="(J)V" line="164"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="172"><counter type="INSTRUCTION" missed="24" covered="0"/><counter type="BRANCH" missed="6" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="4" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="hashCode" desc="()I" line="185"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="24" covered="59"/><counter type="BRANCH" missed="6" covered="4"/><counter type="LINE" missed="5" covered="20"/><counter type="COMPLEXITY" missed="4" covered="12"/><counter type="METHOD" missed="1" covered="10"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi" sourcefilename="PlayerConnectorRmi.java"><method name="&lt;init&gt;" desc="(Ljava/util/concurrent/LinkedBlockingQueue;Lit/polimi/is23am10/client/IClient;)V" line="37"><counter type="INSTRUCTION" missed="0" covered="7"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getClient" desc="()Lit/polimi/is23am10/client/IClient;" line="48"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setClient" desc="(Lit/polimi/is23am10/client/IClient;)V" line="58"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="notify" desc="(Lit/polimi/is23am10/server/network/messages/AbstractMessage;)V" line="64"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="15" covered="7"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="7" covered="3"/><counter type="COMPLEXITY" missed="4" covered="1"/><counter type="METHOD" missed="3" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket" sourcefilename="PlayerConnectorSocket.java"><method name="&lt;init&gt;" desc="(Ljava/net/Socket;Ljava/util/concurrent/LinkedBlockingQueue;)V" line="39"><counter type="INSTRUCTION" missed="0" covered="13"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getConnector" desc="()Ljava/net/Socket;" line="53"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setConnector" desc="(Ljava/net/Socket;)V" line="65"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="notify" desc="(Lit/polimi/is23am10/server/network/messages/AbstractMessage;)V" line="74"><counter type="INSTRUCTION" missed="1" covered="7"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="11" covered="23"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="5" covered="9"/><counter type="COMPLEXITY" missed="3" covered="4"/><counter type="METHOD" missed="1" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="PlayerConnectorSocket.java"><line nr="39" mi="0" ci="3" mb="0" cb="0"/><line nr="40" mi="0" ci="2" mb="0" cb="2"/><line nr="41" mi="0" ci="4" mb="0" cb="0"/><line nr="43" mi="0" ci="3" mb="0" cb="0"/><line nr="44" mi="0" ci="1" mb="0" cb="0"/><line nr="53" mi="0" ci="3" mb="0" cb="0"/><line nr="65" mi="2" ci="0" mb="2" cb="0"/><line nr="66" mi="4" ci="0" mb="0" cb="0"/><line nr="68" mi="3" ci="0" mb="0" cb="0"/><line nr="69" mi="1" ci="0" mb="0" cb="0"/><line nr="74" mi="0" ci="2" mb="1" cb="1"/><line nr="75" mi="1" ci="0" mb="0" cb="0"/><line nr="77" mi="0" ci="4" mb="0" cb="0"/><line nr="78" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="11" covered="23"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="5" covered="9"/><counter type="COMPLEXITY" missed="3" covered="4"/><counter type="METHOD" missed="1" covered="3"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="PlayerConnectorRmi.java"><line nr="37" mi="0" ci="3" mb="0" cb="0"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="39" mi="0" ci="1" mb="0" cb="0"/><line nr="48" mi="3" ci="0" mb="0" cb="0"/><line nr="58" mi="3" ci="0" mb="0" cb="0"/><line nr="59" mi="1" ci="0" mb="0" cb="0"/><line nr="64" mi="2" ci="0" mb="2" cb="0"/><line nr="65" mi="1" ci="0" mb="0" cb="0"/><line nr="67" mi="4" ci="0" mb="0" cb="0"/><line nr="68" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="15" covered="7"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="7" covered="3"/><counter type="COMPLEXITY" missed="4" covered="1"/><counter type="METHOD" missed="3" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="AbstractPlayerConnector.java"><line nr="60" mi="0" ci="2" mb="0" cb="0"/><line nr="61" mi="0" ci="2" mb="0" cb="2"/><line nr="62" mi="0" ci="4" mb="0" cb="0"/><line nr="64" mi="0" ci="3" mb="0" cb="0"/><line nr="65" mi="0" ci="3" mb="0" cb="0"/><line nr="66" mi="0" ci="1" mb="0" cb="0"/><line nr="75" mi="0" ci="3" mb="0" cb="0"/><line nr="85" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="4" mb="0" cb="2"/><line nr="96" mi="0" ci="2" mb="0" cb="0"/><line nr="99" mi="0" ci="5" mb="0" cb="0"/><line nr="109" mi="0" ci="4" mb="0" cb="0"/><line nr="119" mi="0" ci="3" mb="0" cb="0"/><line nr="143" mi="0" ci="3" mb="0" cb="0"/><line nr="144" mi="0" ci="1" mb="0" cb="0"/><line nr="154" mi="0" ci="3" mb="0" cb="0"/><line nr="155" mi="0" ci="1" mb="0" cb="0"/><line nr="164" mi="0" ci="3" mb="0" cb="0"/><line nr="165" mi="0" ci="1" mb="0" cb="0"/><line nr="172" mi="3" ci="0" mb="2" cb="0"/><line nr="173" mi="2" ci="0" mb="0" cb="0"/><line nr="175" mi="3" ci="0" mb="0" cb="0"/><line nr="176" mi="8" ci="0" mb="2" cb="0"/><line nr="177" mi="8" ci="0" mb="2" cb="0"/><line nr="185" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="24" covered="59"/><counter type="BRANCH" missed="6" covered="4"/><counter type="LINE" missed="5" covered="20"/><counter type="COMPLEXITY" missed="4" covered="12"/><counter type="METHOD" missed="1" covered="10"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="50" covered="89"/><counter type="BRANCH" missed="11" covered="7"/><counter type="LINE" missed="17" covered="32"/><counter type="COMPLEXITY" missed="11" covered="17"/><counter type="METHOD" missed="5" covered="14"/><counter type="CLASS" missed="0" covered="3"/></package><package name="it/polimi/is23am10/client/userinterface"><class name="it/polimi/is23am10/client/userinterface/VirtualViewSceneHandler" sourcefilename="GraphicUserInterface.java"><method name="&lt;init&gt;" desc="()V" line="63"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="setStopGameSnapshotHandler" desc="(Z)V" line="86"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getStopGameSnapshotHandler" desc="()Z" line="97"><counter type="INSTRUCTION" missed="8" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="addVirtualViewPair" desc="(Lit/polimi/is23am10/client/userinterface/VirtualViewPair;)V" line="108"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="notifyVirtualViewPairQueue" desc="()V" line="112"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="runGameSnapShotHandler" desc="()V" line="120"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$runGameSnapShotHandler$4" desc="()V" line="121"><counter type="INSTRUCTION" missed="73" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="23" covered="0"/><counter type="COMPLEXITY" missed="7" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$runGameSnapShotHandler$3" desc="(Ljavafx/scene/layout/StackPane;Lit/polimi/is23am10/server/network/virtualview/VirtualView;Lit/polimi/is23am10/server/network/virtualview/VirtualView;)V" line="146"><counter type="INSTRUCTION" missed="5" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$runGameSnapShotHandler$2" desc="()V" line="141"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$runGameSnapShotHandler$1" desc="()V" line="136"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$runGameSnapShotHandler$0" desc="()V" line="132"><counter type="INSTRUCTION" missed="7" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="68"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="145" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="42" covered="0"/><counter type="COMPLEXITY" missed="18" covered="0"/><counter type="METHOD" missed="12" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="it/polimi/is23am10/client/userinterface/VirtualViewPair" sourcefilename="GraphicUserInterface.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/network/virtualview/VirtualView;Lit/polimi/is23am10/server/network/virtualview/VirtualView;Z)V" line="56"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="it/polimi/is23am10/client/userinterface/UserInterface" sourcefilename="UserInterface.java"/><sourcefile name="UserInterface.java"/><sourcefile name="GraphicUserInterface.java"><line nr="56" mi="2" ci="0" mb="0" cb="0"/><line nr="57" mi="3" ci="0" mb="0" cb="0"/><line nr="58" mi="3" ci="0" mb="0" cb="0"/><line nr="59" mi="3" ci="0" mb="0" cb="0"/><line nr="60" mi="1" ci="0" mb="0" cb="0"/><line nr="63" mi="3" ci="0" mb="0" cb="0"/><line nr="68" mi="4" ci="0" mb="0" cb="0"/><line nr="73" mi="4" ci="0" mb="0" cb="0"/><line nr="78" mi="3" ci="0" mb="0" cb="0"/><line nr="86" mi="4" ci="0" mb="0" cb="0"/><line nr="87" mi="2" ci="0" mb="0" cb="0"/><line nr="88" mi="3" ci="0" mb="0" cb="0"/><line nr="89" mi="1" ci="0" mb="0" cb="0"/><line nr="97" mi="4" ci="0" mb="0" cb="0"/><line nr="98" mi="4" ci="0" mb="0" cb="0"/><line nr="108" mi="4" ci="0" mb="0" cb="0"/><line nr="109" mi="1" ci="0" mb="0" cb="0"/><line nr="112" mi="2" ci="0" mb="0" cb="0"/><line nr="113" mi="1" ci="0" mb="0" cb="0"/><line nr="120" mi="4" ci="0" mb="0" cb="0"/><line nr="121" mi="2" ci="0" mb="2" cb="0"/><line nr="122" mi="2" ci="0" mb="0" cb="0"/><line nr="124" mi="4" ci="0" mb="0" cb="0"/><line nr="125" mi="2" ci="0" mb="2" cb="0"/><line nr="126" mi="3" ci="0" mb="2" cb="0"/><line nr="127" mi="1" ci="0" mb="0" cb="0"/><line nr="129" mi="5" ci="0" mb="2" cb="0"/><line nr="130" mi="7" ci="0" mb="0" cb="0"/><line nr="131" mi="3" ci="0" mb="0" cb="0"/><line nr="132" mi="7" ci="0" mb="0" cb="0"/><line nr="134" mi="5" ci="0" mb="2" cb="0"/><line nr="135" mi="3" ci="0" mb="0" cb="0"/><line nr="136" mi="7" ci="0" mb="0" cb="0"/><line nr="138" mi="4" ci="0" mb="2" cb="0"/><line nr="139" mi="7" ci="0" mb="0" cb="0"/><line nr="140" mi="3" ci="0" mb="0" cb="0"/><line nr="141" mi="7" ci="0" mb="0" cb="0"/><line nr="143" mi="5" ci="0" mb="0" cb="0"/><line nr="144" mi="3" ci="0" mb="0" cb="0"/><line nr="145" mi="3" ci="0" mb="0" cb="0"/><line nr="146" mi="10" ci="0" mb="0" cb="0"/><line nr="151" mi="1" ci="0" mb="0" cb="0"/><line nr="153" mi="1" ci="0" mb="0" cb="0"/><line nr="155" mi="2" ci="0" mb="0" cb="0"/><line nr="156" mi="1" ci="0" mb="0" cb="0"/><line nr="157" mi="2" ci="0" mb="0" cb="0"/><line nr="158" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="157" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="47" covered="0"/><counter type="COMPLEXITY" missed="19" covered="0"/><counter type="METHOD" missed="13" covered="0"/><counter type="CLASS" missed="2" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="157" covered="0"/><counter type="BRANCH" missed="12" covered="0"/><counter type="LINE" missed="47" covered="0"/><counter type="COMPLEXITY" missed="19" covered="0"/><counter type="METHOD" missed="13" covered="0"/><counter type="CLASS" missed="2" covered="0"/></package><package name="it/polimi/is23am10/server/model/score"><class name="it/polimi/is23am10/server/model/score/Score" sourcefilename="Score.java"><method name="&lt;init&gt;" desc="()V" line="102"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/score/Score;)V" line="114"><counter type="INSTRUCTION" missed="0" covered="19"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setExtraPoint" desc="()V" line="126"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setBookshelfPoints" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)V" line="143"><counter type="INSTRUCTION" missed="5" covered="83"/><counter type="BRANCH" missed="1" covered="15"/><counter type="LINE" missed="1" covered="15"/><counter type="COMPLEXITY" missed="1" covered="8"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setScoreBlockPoints" desc="(Ljava/util/List;)V" line="182"><counter type="INSTRUCTION" missed="0" covered="16"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setPrivatePoints" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;Lit/polimi/is23am10/server/model/items/card/PrivateCard;)V" line="198"><counter type="INSTRUCTION" missed="0" covered="25"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="obfuscatePrivatePoints" desc="()V" line="206"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getExtraPoint" desc="()Ljava/lang/Integer;" line="216"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getBookshelfPoints" desc="()Ljava/lang/Integer;" line="226"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getScoreBlockPoints" desc="()Ljava/lang/Integer;" line="236"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPrivatePoints" desc="()Ljava/lang/Integer;" line="246"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="countAdjacentTilesRecursive" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;II[[Ljava/lang/Integer;Lit/polimi/is23am10/server/model/items/tile/Tile$TileType;)I" line="266"><counter type="INSTRUCTION" missed="0" covered="95"/><counter type="BRANCH" missed="1" covered="13"/><counter type="LINE" missed="0" covered="11"/><counter type="COMPLEXITY" missed="1" covered="7"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getTotalScore" desc="()Ljava/lang/Integer;" line="296"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getVisibleScore" desc="()Ljava/lang/Integer;" line="307"><counter type="INSTRUCTION" missed="11" covered="11"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getStringTotalScore" desc="()Ljava/lang/String;" line="318"><counter type="INSTRUCTION" missed="9" covered="10"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="327"><counter type="INSTRUCTION" missed="3" covered="29"/><counter type="BRANCH" missed="5" covered="5"/><counter type="LINE" missed="1" covered="7"/><counter type="COMPLEXITY" missed="5" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="344"><counter type="INSTRUCTION" missed="16" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$setScoreBlockPoints$0" desc="(Lit/polimi/is23am10/server/model/items/scoreblock/ScoreBlock;)I" line="185"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="63"><counter type="INSTRUCTION" missed="0" covered="55"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="44" covered="405"/><counter type="BRANCH" missed="9" covered="39"/><counter type="LINE" missed="3" covered="80"/><counter type="COMPLEXITY" missed="10" covered="33"/><counter type="METHOD" missed="1" covered="18"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Score.java"><line nr="63" mi="0" ci="3" mb="0" cb="0"/><line nr="64" mi="0" ci="4" mb="0" cb="0"/><line nr="65" mi="0" ci="4" mb="0" cb="0"/><line nr="66" mi="0" ci="4" mb="0" cb="0"/><line nr="67" mi="0" ci="4" mb="0" cb="0"/><line nr="68" mi="0" ci="4" mb="0" cb="0"/><line nr="69" mi="0" ci="4" mb="0" cb="0"/><line nr="70" mi="0" ci="3" mb="0" cb="0"/><line nr="77" mi="0" ci="3" mb="0" cb="0"/><line nr="78" mi="0" ci="4" mb="0" cb="0"/><line nr="79" mi="0" ci="4" mb="0" cb="0"/><line nr="80" mi="0" ci="4" mb="0" cb="0"/><line nr="81" mi="0" ci="3" mb="0" cb="0"/><line nr="88" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="4" mb="0" cb="0"/><line nr="102" mi="0" ci="2" mb="0" cb="0"/><line nr="103" mi="0" ci="4" mb="0" cb="0"/><line nr="104" mi="0" ci="4" mb="0" cb="0"/><line nr="105" mi="0" ci="4" mb="0" cb="0"/><line nr="106" mi="0" ci="4" mb="0" cb="0"/><line nr="107" mi="0" ci="1" mb="0" cb="0"/><line nr="114" mi="0" ci="2" mb="0" cb="0"/><line nr="115" mi="0" ci="4" mb="0" cb="0"/><line nr="116" mi="0" ci="4" mb="0" cb="0"/><line nr="117" mi="0" ci="4" mb="0" cb="0"/><line nr="118" mi="0" ci="4" mb="0" cb="0"/><line nr="119" mi="0" ci="1" mb="0" cb="0"/><line nr="126" mi="0" ci="4" mb="0" cb="0"/><line nr="127" mi="0" ci="1" mb="0" cb="0"/><line nr="143" mi="0" ci="2" mb="1" cb="1"/><line nr="144" mi="5" ci="0" mb="0" cb="0"/><line nr="147" mi="0" ci="4" mb="0" cb="0"/><line nr="148" mi="0" ci="4" mb="0" cb="0"/><line nr="151" mi="0" ci="7" mb="0" cb="2"/><line nr="152" mi="0" ci="7" mb="0" cb="2"/><line nr="154" mi="0" ci="6" mb="0" cb="2"/><line nr="155" mi="0" ci="7" mb="0" cb="0"/><line nr="156" mi="0" ci="3" mb="0" cb="2"/><line nr="157" mi="0" ci="9" mb="0" cb="0"/><line nr="160" mi="0" ci="8" mb="0" cb="4"/><line nr="161" mi="0" ci="5" mb="0" cb="0"/><line nr="163" mi="0" ci="4" mb="0" cb="2"/><line nr="164" mi="0" ci="4" mb="0" cb="0"/><line nr="171" mi="0" ci="12" mb="0" cb="0"/><line nr="172" mi="0" ci="1" mb="0" cb="0"/><line nr="182" mi="0" ci="2" mb="0" cb="2"/><line nr="183" mi="0" ci="5" mb="0" cb="0"/><line nr="185" mi="0" ci="12" mb="0" cb="0"/><line nr="186" mi="0" ci="1" mb="0" cb="0"/><line nr="198" mi="0" ci="2" mb="0" cb="2"/><line nr="199" mi="0" ci="5" mb="0" cb="0"/><line nr="201" mi="0" ci="10" mb="0" cb="0"/><line nr="202" mi="0" ci="7" mb="0" cb="0"/><line nr="203" mi="0" ci="1" mb="0" cb="0"/><line nr="206" mi="0" ci="4" mb="0" cb="0"/><line nr="207" mi="0" ci="1" mb="0" cb="0"/><line nr="216" mi="0" ci="3" mb="0" cb="0"/><line nr="226" mi="0" ci="3" mb="0" cb="0"/><line nr="236" mi="0" ci="3" mb="0" cb="0"/><line nr="246" mi="0" ci="3" mb="0" cb="0"/><line nr="266" mi="0" ci="12" mb="0" cb="8"/><line nr="269" mi="0" ci="9" mb="0" cb="2"/><line nr="270" mi="0" ci="13" mb="1" cb="3"/><line nr="273" mi="0" ci="2" mb="0" cb="0"/><line nr="277" mi="0" ci="7" mb="0" cb="0"/><line nr="280" mi="0" ci="2" mb="0" cb="0"/><line nr="281" mi="0" ci="12" mb="0" cb="0"/><line nr="282" mi="0" ci="12" mb="0" cb="0"/><line nr="283" mi="0" ci="12" mb="0" cb="0"/><line nr="284" mi="0" ci="12" mb="0" cb="0"/><line nr="286" mi="0" ci="2" mb="0" cb="0"/><line nr="296" mi="0" ci="17" mb="0" cb="0"/><line nr="307" mi="11" ci="11" mb="1" cb="1"/><line nr="318" mi="9" ci="10" mb="1" cb="1"/><line nr="327" mi="0" ci="3" mb="1" cb="1"/><line nr="328" mi="2" ci="0" mb="0" cb="0"/><line nr="330" mi="0" ci="3" mb="0" cb="0"/><line nr="331" mi="0" ci="4" mb="0" cb="0"/><line nr="332" mi="0" ci="5" mb="1" cb="1"/><line nr="333" mi="0" ci="5" mb="1" cb="1"/><line nr="334" mi="0" ci="5" mb="1" cb="1"/><line nr="335" mi="1" ci="4" mb="1" cb="1"/><line nr="344" mi="16" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="44" covered="405"/><counter type="BRANCH" missed="9" covered="39"/><counter type="LINE" missed="3" covered="80"/><counter type="COMPLEXITY" missed="10" covered="33"/><counter type="METHOD" missed="1" covered="18"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="44" covered="405"/><counter type="BRANCH" missed="9" covered="39"/><counter type="LINE" missed="3" covered="80"/><counter type="COMPLEXITY" missed="10" covered="33"/><counter type="METHOD" missed="1" covered="18"/><counter type="CLASS" missed="0" covered="1"/></package><package name="it/polimi/is23am10/client/userinterface/helpers"><class name="it/polimi/is23am10/client/userinterface/helpers/OutputWrapper" sourcefilename="OutputWrapper.java"><method name="&lt;init&gt;" desc="(Z)V" line="45"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="debug" desc="(Ljava/lang/String;Z)V" line="116"><counter type="INSTRUCTION" missed="5" covered="4"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="info" desc="(Ljava/lang/String;Z)V" line="129"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="repeatString" desc="(Ljava/lang/String;I)Ljava/lang/String;" line="136"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="show" desc="(Lit/polimi/is23am10/server/network/virtualview/VirtualView;Z)V" line="149"><counter type="INSTRUCTION" missed="12" covered="790"/><counter type="BRANCH" missed="1" covered="41"/><counter type="LINE" missed="4" covered="138"/><counter type="COMPLEXITY" missed="1" covered="21"/><counter type="METHOD" missed="0" covered="1"/></method><method name="chat" desc="(Ljava/lang/String;Z)V" line="369"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="warning" desc="(Ljava/lang/String;Z)V" line="380"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="error" desc="(Ljava/lang/String;Z)V" line="391"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="critical" desc="(Ljava/lang/String;Z)V" line="402"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="clean" desc="()V" line="410"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getTimestamp" desc="()Ljava/lang/String;" line="421"><counter type="INSTRUCTION" missed="10" covered="0"/><counter type="LINE" missed="3" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getString" desc="(Lit/polimi/is23am10/client/userinterface/helpers/OutputWrapper$OutputLevel;Ljava/lang/String;)Ljava/lang/String;" line="435"><counter type="INSTRUCTION" missed="14" covered="18"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="printString" desc="(Lit/polimi/is23am10/client/userinterface/helpers/OutputWrapper$OutputLevel;Ljava/lang/String;Z)V" line="450"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setDebug" desc="(Z)V" line="462"><counter type="INSTRUCTION" missed="4" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$show$1" desc="(Ljava/lang/Integer;)I" line="284"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$show$0" desc="(Lit/polimi/is23am10/server/network/virtualview/VirtualPlayer;)I" line="179"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="48"><counter type="INSTRUCTION" missed="0" covered="52"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="57" covered="949"/><counter type="BRANCH" missed="3" covered="47"/><counter type="LINE" missed="15" covered="176"/><counter type="COMPLEXITY" missed="7" covered="35"/><counter type="METHOD" missed="4" covered="13"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder" sourcefilename="CommandsBuilder.java"><method name="&lt;init&gt;" desc="()V" line="11"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="buildCreateGameCmd" desc="(Ljava/lang/String;)Ljava/lang/String;" line="40"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="buildJoinGameCmd" desc="(Ljava/lang/String;)Ljava/lang/String;" line="50"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="moveTileCmd" desc="(Ljava/lang/String;)Ljava/lang/String;" line="60"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="sendChatMessageCmd" desc="(Ljava/lang/String;)Ljava/lang/String;" line="73"><counter type="INSTRUCTION" missed="35" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="47" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="10" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="it/polimi/is23am10/client/userinterface/helpers/CLIStrings" sourcefilename="CLIStrings.java"><method name="&lt;init&gt;" desc="()V" line="14"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;clinit&gt;" desc="()V" line="61"><counter type="INSTRUCTION" missed="0" covered="130"/><counter type="LINE" missed="0" covered="21"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="130"/><counter type="LINE" missed="1" covered="21"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="1" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/client/userinterface/helpers/OutputWrapper$OutputLevel" sourcefilename="OutputWrapper.java"><method name="&lt;clinit&gt;" desc="()V" line="36"><counter type="INSTRUCTION" missed="0" covered="39"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="39"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper" sourcefilename="PrivatePatternsHelper.java"><method name="&lt;init&gt;" desc="()V" line="17"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getBookshelf" desc="(Ljava/lang/Integer;)Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;" line="41"><counter type="INSTRUCTION" missed="5" covered="8"/><counter type="LINE" missed="2" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="18"><counter type="INSTRUCTION" missed="0" covered="89"/><counter type="LINE" missed="0" covered="13"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="8" covered="97"/><counter type="LINE" missed="3" covered="14"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/client/userinterface/helpers/ANSICodes" sourcefilename="ANSICodes.java"><method name="&lt;init&gt;" desc="()V" line="3"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><sourcefile name="PrivatePatternsHelper.java"><line nr="17" mi="3" ci="0" mb="0" cb="0"/><line nr="18" mi="0" ci="8" mb="0" cb="0"/><line nr="19" mi="0" ci="7" mb="0" cb="0"/><line nr="20" mi="0" ci="7" mb="0" cb="0"/><line nr="21" mi="0" ci="7" mb="0" cb="0"/><line nr="22" mi="0" ci="7" mb="0" cb="0"/><line nr="23" mi="0" ci="7" mb="0" cb="0"/><line nr="24" mi="0" ci="7" mb="0" cb="0"/><line nr="25" mi="0" ci="7" mb="0" cb="0"/><line nr="26" mi="0" ci="7" mb="0" cb="0"/><line nr="27" mi="0" ci="7" mb="0" cb="0"/><line nr="28" mi="0" ci="7" mb="0" cb="0"/><line nr="29" mi="0" ci="7" mb="0" cb="0"/><line nr="30" mi="0" ci="4" mb="0" cb="0"/><line nr="41" mi="0" ci="8" mb="0" cb="0"/><line nr="42" mi="1" ci="0" mb="0" cb="0"/><line nr="43" mi="4" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="8" covered="97"/><counter type="LINE" missed="3" covered="14"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="1" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="OutputWrapper.java"><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="37" mi="0" ci="6" mb="0" cb="0"/><line nr="38" mi="0" ci="6" mb="0" cb="0"/><line nr="39" mi="0" ci="6" mb="0" cb="0"/><line nr="40" mi="0" ci="6" mb="0" cb="0"/><line nr="41" mi="0" ci="6" mb="0" cb="0"/><line nr="42" mi="0" ci="6" mb="0" cb="0"/><line nr="45" mi="0" ci="4" mb="0" cb="0"/><line nr="48" mi="0" ci="3" mb="0" cb="0"/><line nr="49" mi="0" ci="3" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="51" mi="0" ci="3" mb="0" cb="0"/><line nr="52" mi="0" ci="3" mb="0" cb="0"/><line nr="53" mi="0" ci="3" mb="0" cb="0"/><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="55" mi="0" ci="3" mb="0" cb="0"/><line nr="56" mi="0" ci="3" mb="0" cb="0"/><line nr="62" mi="0" ci="3" mb="0" cb="0"/><line nr="68" mi="0" ci="15" mb="0" cb="0"/><line nr="80" mi="0" ci="16" mb="0" cb="0"/><line nr="94" mi="0" ci="4" mb="0" cb="0"/><line nr="95" mi="0" ci="3" mb="0" cb="0"/><line nr="96" mi="0" ci="2" mb="0" cb="0"/><line nr="104" mi="0" ci="2" mb="0" cb="0"/><line nr="105" mi="0" ci="3" mb="0" cb="0"/><line nr="106" mi="0" ci="1" mb="0" cb="0"/><line nr="116" mi="0" ci="3" mb="1" cb="1"/><line nr="117" mi="5" ci="0" mb="0" cb="0"/><line nr="119" mi="0" ci="1" mb="0" cb="0"/><line nr="129" mi="0" ci="5" mb="0" cb="0"/><line nr="130" mi="0" ci="1" mb="0" cb="0"/><line nr="136" mi="0" ci="6" mb="0" cb="0"/><line nr="149" mi="0" ci="3" mb="0" cb="0"/><line nr="152" mi="0" ci="4" mb="0" cb="0"/><line nr="155" mi="0" ci="4" mb="0" cb="0"/><line nr="158" mi="0" ci="4" mb="0" cb="0"/><line nr="161" mi="0" ci="8" mb="0" cb="2"/><line nr="162" mi="0" ci="4" mb="0" cb="0"/><line nr="163" mi="0" ci="4" mb="0" cb="0"/><line nr="164" mi="0" ci="8" mb="0" cb="2"/><line nr="165" mi="0" ci="7" mb="0" cb="0"/><line nr="166" mi="0" ci="8" mb="0" cb="0"/><line nr="168" mi="0" ci="12" mb="0" cb="0"/><line nr="169" mi="0" ci="5" mb="0" cb="0"/><line nr="173" mi="0" ci="4" mb="0" cb="0"/><line nr="175" mi="0" ci="3" mb="0" cb="0"/><line nr="177" mi="0" ci="3" mb="0" cb="0"/><line nr="178" mi="0" ci="2" mb="0" cb="0"/><line nr="179" mi="0" ci="5" mb="0" cb="0"/><line nr="180" mi="0" ci="3" mb="0" cb="0"/><line nr="181" mi="0" ci="1" mb="0" cb="0"/><line nr="184" mi="0" ci="4" mb="0" cb="0"/><line nr="186" mi="0" ci="43" mb="0" cb="0"/><line nr="187" mi="0" ci="3" mb="0" cb="0"/><line nr="191" mi="0" ci="11" mb="0" cb="0"/><line nr="192" mi="0" ci="2" mb="0" cb="0"/><line nr="193" mi="0" ci="1" mb="0" cb="0"/><line nr="194" mi="0" ci="14" mb="0" cb="0"/><line nr="195" mi="0" ci="13" mb="0" cb="0"/><line nr="196" mi="0" ci="14" mb="0" cb="0"/><line nr="197" mi="0" ci="14" mb="0" cb="0"/><line nr="198" mi="0" ci="3" mb="0" cb="0"/><line nr="199" mi="0" ci="2" mb="0" cb="0"/><line nr="202" mi="0" ci="2" mb="0" cb="0"/><line nr="203" mi="0" ci="10" mb="0" cb="2"/><line nr="205" mi="0" ci="7" mb="0" cb="0"/><line nr="206" mi="0" ci="3" mb="0" cb="0"/><line nr="207" mi="0" ci="2" mb="0" cb="0"/><line nr="208" mi="0" ci="4" mb="0" cb="0"/><line nr="209" mi="0" ci="5" mb="0" cb="0"/><line nr="210" mi="0" ci="5" mb="0" cb="0"/><line nr="211" mi="0" ci="5" mb="0" cb="0"/><line nr="212" mi="2" ci="11" mb="1" cb="1"/><line nr="214" mi="0" ci="5" mb="0" cb="2"/><line nr="215" mi="0" ci="2" mb="0" cb="0"/><line nr="217" mi="0" ci="5" mb="0" cb="2"/><line nr="218" mi="0" ci="2" mb="0" cb="0"/><line nr="221" mi="0" ci="11" mb="0" cb="0"/><line nr="222" mi="0" ci="3" mb="0" cb="0"/><line nr="223" mi="0" ci="37" mb="0" cb="0"/><line nr="224" mi="0" ci="2" mb="0" cb="0"/><line nr="225" mi="0" ci="1" mb="0" cb="0"/><line nr="226" mi="0" ci="5" mb="0" cb="0"/><line nr="230" mi="0" ci="4" mb="0" cb="0"/><line nr="231" mi="0" ci="4" mb="0" cb="0"/><line nr="232" mi="0" ci="10" mb="0" cb="2"/><line nr="233" mi="0" ci="12" mb="0" cb="0"/><line nr="235" mi="0" ci="5" mb="0" cb="0"/><line nr="238" mi="0" ci="4" mb="0" cb="0"/><line nr="239" mi="0" ci="4" mb="0" cb="0"/><line nr="240" mi="0" ci="10" mb="0" cb="2"/><line nr="241" mi="0" ci="4" mb="0" cb="0"/><line nr="242" mi="0" ci="1" mb="0" cb="0"/><line nr="243" mi="0" ci="5" mb="0" cb="0"/><line nr="246" mi="0" ci="4" mb="0" cb="0"/><line nr="247" mi="0" ci="10" mb="0" cb="2"/><line nr="248" mi="0" ci="4" mb="0" cb="0"/><line nr="249" mi="0" ci="1" mb="0" cb="0"/><line nr="250" mi="0" ci="5" mb="0" cb="0"/><line nr="253" mi="0" ci="7" mb="0" cb="2"/><line nr="254" mi="0" ci="4" mb="0" cb="0"/><line nr="255" mi="0" ci="10" mb="0" cb="2"/><line nr="256" mi="0" ci="3" mb="0" cb="0"/><line nr="257" mi="0" ci="4" mb="0" cb="0"/><line nr="258" mi="0" ci="7" mb="0" cb="2"/><line nr="260" mi="0" ci="13" mb="0" cb="0"/><line nr="261" mi="1" ci="0" mb="0" cb="0"/><line nr="264" mi="4" ci="0" mb="0" cb="0"/><line nr="265" mi="0" ci="1" mb="0" cb="0"/><line nr="267" mi="0" ci="4" mb="0" cb="0"/><line nr="268" mi="0" ci="1" mb="0" cb="0"/><line nr="269" mi="0" ci="5" mb="0" cb="0"/><line nr="273" mi="0" ci="4" mb="0" cb="0"/><line nr="274" mi="0" ci="10" mb="0" cb="2"/><line nr="275" mi="0" ci="4" mb="0" cb="0"/><line nr="276" mi="0" ci="1" mb="0" cb="0"/><line nr="277" mi="0" ci="4" mb="0" cb="0"/><line nr="278" mi="0" ci="5" mb="0" cb="0"/><line nr="281" mi="0" ci="4" mb="0" cb="0"/><line nr="283" mi="0" ci="6" mb="0" cb="0"/><line nr="284" mi="0" ci="7" mb="0" cb="0"/><line nr="285" mi="0" ci="4" mb="0" cb="0"/><line nr="288" mi="0" ci="14" mb="0" cb="0"/><line nr="289" mi="0" ci="3" mb="0" cb="0"/><line nr="291" mi="0" ci="10" mb="0" cb="0"/><line nr="292" mi="0" ci="2" mb="0" cb="0"/><line nr="294" mi="0" ci="4" mb="0" cb="0"/><line nr="295" mi="0" ci="9" mb="0" cb="0"/><line nr="296" mi="0" ci="2" mb="0" cb="0"/><line nr="299" mi="0" ci="11" mb="0" cb="2"/><line nr="300" mi="0" ci="14" mb="0" cb="0"/><line nr="301" mi="0" ci="3" mb="0" cb="0"/><line nr="302" mi="0" ci="2" mb="0" cb="0"/><line nr="303" mi="0" ci="2" mb="0" cb="0"/><line nr="304" mi="0" ci="1" mb="0" cb="0"/><line nr="305" mi="0" ci="5" mb="0" cb="0"/><line nr="308" mi="0" ci="4" mb="0" cb="0"/><line nr="309" mi="0" ci="4" mb="0" cb="0"/><line nr="310" mi="0" ci="2" mb="0" cb="0"/><line nr="312" mi="0" ci="10" mb="0" cb="2"/><line nr="313" mi="0" ci="13" mb="0" cb="0"/><line nr="314" mi="0" ci="1" mb="0" cb="0"/><line nr="315" mi="0" ci="5" mb="0" cb="0"/><line nr="318" mi="0" ci="4" mb="0" cb="0"/><line nr="319" mi="0" ci="4" mb="0" cb="0"/><line nr="320" mi="0" ci="10" mb="0" cb="2"/><line nr="321" mi="0" ci="4" mb="0" cb="0"/><line nr="322" mi="0" ci="1" mb="0" cb="0"/><line nr="323" mi="0" ci="5" mb="0" cb="0"/><line nr="326" mi="0" ci="4" mb="0" cb="0"/><line nr="327" mi="0" ci="10" mb="0" cb="2"/><line nr="328" mi="0" ci="4" mb="0" cb="0"/><line nr="329" mi="0" ci="1" mb="0" cb="0"/><line nr="330" mi="0" ci="5" mb="0" cb="0"/><line nr="333" mi="0" ci="7" mb="0" cb="2"/><line nr="334" mi="0" ci="4" mb="0" cb="0"/><line nr="335" mi="0" ci="10" mb="0" cb="2"/><line nr="336" mi="0" ci="4" mb="0" cb="0"/><line nr="337" mi="0" ci="4" mb="0" cb="0"/><line nr="338" mi="0" ci="7" mb="0" cb="2"/><line nr="340" mi="0" ci="13" mb="0" cb="0"/><line nr="341" mi="1" ci="0" mb="0" cb="0"/><line nr="344" mi="4" ci="0" mb="0" cb="0"/><line nr="345" mi="0" ci="1" mb="0" cb="0"/><line nr="347" mi="0" ci="4" mb="0" cb="0"/><line nr="348" mi="0" ci="1" mb="0" cb="0"/><line nr="349" mi="0" ci="5" mb="0" cb="0"/><line nr="353" mi="0" ci="4" mb="0" cb="0"/><line nr="354" mi="0" ci="10" mb="0" cb="2"/><line nr="355" mi="0" ci="4" mb="0" cb="0"/><line nr="356" mi="0" ci="1" mb="0" cb="0"/><line nr="357" mi="0" ci="4" mb="0" cb="0"/><line nr="358" mi="0" ci="5" mb="0" cb="0"/><line nr="359" mi="0" ci="1" mb="0" cb="0"/><line nr="369" mi="0" ci="5" mb="0" cb="0"/><line nr="370" mi="0" ci="1" mb="0" cb="0"/><line nr="380" mi="0" ci="5" mb="0" cb="0"/><line nr="381" mi="0" ci="1" mb="0" cb="0"/><line nr="391" mi="5" ci="0" mb="0" cb="0"/><line nr="392" mi="1" ci="0" mb="0" cb="0"/><line nr="402" mi="5" ci="0" mb="0" cb="0"/><line nr="403" mi="1" ci="0" mb="0" cb="0"/><line nr="410" mi="0" ci="9" mb="0" cb="2"/><line nr="411" mi="0" ci="2" mb="0" cb="0"/><line nr="413" mi="0" ci="1" mb="0" cb="0"/><line nr="421" mi="3" ci="0" mb="0" cb="0"/><line nr="422" mi="3" ci="0" mb="0" cb="0"/><line nr="423" mi="4" ci="0" mb="0" cb="0"/><line nr="435" mi="0" ci="6" mb="0" cb="0"/><line nr="436" mi="0" ci="3" mb="1" cb="1"/><line nr="437" mi="14" ci="0" mb="0" cb="0"/><line nr="439" mi="0" ci="9" mb="0" cb="0"/><line nr="450" mi="0" ci="2" mb="0" cb="2"/><line nr="451" mi="0" ci="2" mb="0" cb="0"/><line nr="453" mi="0" ci="6" mb="0" cb="0"/><line nr="454" mi="0" ci="1" mb="0" cb="0"/><line nr="462" mi="3" ci="0" mb="0" cb="0"/><line nr="463" mi="1" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="57" covered="988"/><counter type="BRANCH" missed="3" covered="47"/><counter type="LINE" missed="15" covered="183"/><counter type="COMPLEXITY" missed="7" covered="36"/><counter type="METHOD" missed="4" covered="14"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><sourcefile name="ANSICodes.java"><line nr="3" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="CLIStrings.java"><line nr="14" mi="3" ci="0" mb="0" cb="0"/><line nr="61" mi="0" ci="4" mb="0" cb="0"/><line nr="62" mi="0" ci="7" mb="0" cb="0"/><line nr="74" mi="0" ci="4" mb="0" cb="0"/><line nr="75" mi="0" ci="8" mb="0" cb="0"/><line nr="80" mi="0" ci="4" mb="0" cb="0"/><line nr="81" mi="0" ci="8" mb="0" cb="0"/><line nr="87" mi="0" ci="3" mb="0" cb="0"/><line nr="89" mi="0" ci="3" mb="0" cb="0"/><line nr="94" mi="0" ci="8" mb="0" cb="0"/><line nr="95" mi="0" ci="7" mb="0" cb="0"/><line nr="96" mi="0" ci="7" mb="0" cb="0"/><line nr="97" mi="0" ci="7" mb="0" cb="0"/><line nr="98" mi="0" ci="7" mb="0" cb="0"/><line nr="99" mi="0" ci="7" mb="0" cb="0"/><line nr="100" mi="0" ci="7" mb="0" cb="0"/><line nr="101" mi="0" ci="7" mb="0" cb="0"/><line nr="102" mi="0" ci="7" mb="0" cb="0"/><line nr="103" mi="0" ci="7" mb="0" cb="0"/><line nr="104" mi="0" ci="7" mb="0" cb="0"/><line nr="105" mi="0" ci="7" mb="0" cb="0"/><line nr="106" mi="0" ci="4" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="130"/><counter type="LINE" missed="1" covered="21"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="1" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="CommandsBuilder.java"><line nr="11" mi="3" ci="0" mb="0" cb="0"/><line nr="40" mi="3" ci="0" mb="0" cb="0"/><line nr="50" mi="3" ci="0" mb="0" cb="0"/><line nr="60" mi="3" ci="0" mb="0" cb="0"/><line nr="73" mi="4" ci="0" mb="2" cb="0"/><line nr="74" mi="7" ci="0" mb="0" cb="0"/><line nr="75" mi="11" ci="0" mb="0" cb="0"/><line nr="76" mi="6" ci="0" mb="0" cb="0"/><line nr="77" mi="4" ci="0" mb="0" cb="0"/><line nr="79" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="47" covered="0"/><counter type="BRANCH" missed="2" covered="0"/><counter type="LINE" missed="10" covered="0"/><counter type="COMPLEXITY" missed="6" covered="0"/><counter type="METHOD" missed="5" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><counter type="INSTRUCTION" missed="118" covered="1215"/><counter type="BRANCH" missed="5" covered="47"/><counter type="LINE" missed="30" covered="218"/><counter type="COMPLEXITY" missed="16" covered="39"/><counter type="METHOD" missed="12" covered="17"/><counter type="CLASS" missed="2" covered="4"/></package><package name="it/polimi/is23am10/server/model/items/board"><class name="it/polimi/is23am10/server/model/items/board/Board" sourcefilename="Board.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Integer;)V" line="118"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/items/board/Board;)V" line="139"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validNumOfPlayers" desc="(Ljava/lang/Integer;)Z" line="153"><counter type="INSTRUCTION" missed="0" covered="10"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getTileFromSack" desc="()Lit/polimi/is23am10/server/model/items/tile/Tile;" line="167"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="createInitialTileSack" desc="()V" line="178"><counter type="INSTRUCTION" missed="0" covered="17"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="fillBoardGrid" desc="()V" line="194"><counter type="INSTRUCTION" missed="0" covered="63"/><counter type="BRANCH" missed="0" covered="10"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="6"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getBoardGrid" desc="()[[Lit/polimi/is23am10/server/model/items/tile/Tile;" line="214"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getTileSackSize" desc="()Ljava/lang/Integer;" line="224"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getTileAt" desc="(Ljava/lang/Integer;Ljava/lang/Integer;)Lit/polimi/is23am10/server/model/items/tile/Tile;" line="240"><counter type="INSTRUCTION" missed="0" covered="27"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getBlackMapAt" desc="(Ljava/lang/Integer;Ljava/lang/Integer;)Ljava/lang/Integer;" line="262"><counter type="INSTRUCTION" missed="0" covered="26"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="removeTileAt" desc="(Ljava/lang/Integer;Ljava/lang/Integer;)V" line="282"><counter type="INSTRUCTION" missed="10" covered="21"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="2" covered="4"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="takeTileAt" desc="(Ljava/lang/Integer;Ljava/lang/Integer;)Lit/polimi/is23am10/server/model/items/tile/Tile;" line="305"><counter type="INSTRUCTION" missed="0" covered="41"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isRefillNeeded" desc="()Z" line="322"><counter type="INSTRUCTION" missed="0" covered="89"/><counter type="BRANCH" missed="3" covered="19"/><counter type="LINE" missed="0" covered="9"/><counter type="COMPLEXITY" missed="3" covered="9"/><counter type="METHOD" missed="0" covered="1"/></method><method name="refillIfNeeded" desc="()V" line="342"><counter type="INSTRUCTION" missed="0" covered="6"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="353"><counter type="INSTRUCTION" missed="5" covered="26"/><counter type="BRANCH" missed="4" covered="4"/><counter type="LINE" missed="2" covered="4"/><counter type="COMPLEXITY" missed="4" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="369"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="lambda$createInitialTileSack$5" desc="(Ljava/util/stream/Stream;)Ljava/util/stream/Stream;" line="181"><counter type="INSTRUCTION" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$createInitialTileSack$4" desc="(Lit/polimi/is23am10/server/model/items/tile/Tile$TileType;)Ljava/util/stream/Stream;" line="180"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$createInitialTileSack$3" desc="(Lit/polimi/is23am10/server/model/items/tile/Tile$TileType;)Lit/polimi/is23am10/server/model/items/tile/Tile;" line="180"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$createInitialTileSack$2" desc="(Lit/polimi/is23am10/server/model/items/tile/Tile$TileType;)Z" line="179"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$new$1" desc="(I)[[Lit/polimi/is23am10/server/model/items/tile/Tile;" line="143"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$new$0" desc="(Ljava/lang/Object;)[Lit/polimi/is23am10/server/model/items/tile/Tile;" line="142"><counter type="INSTRUCTION" missed="0" covered="5"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;clinit&gt;" desc="()V" line="32"><counter type="INSTRUCTION" missed="0" covered="482"/><counter type="LINE" missed="0" covered="14"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="27" covered="921"/><counter type="BRANCH" missed="9" covered="55"/><counter type="LINE" missed="5" covered="88"/><counter type="COMPLEXITY" missed="10" covered="45"/><counter type="METHOD" missed="1" covered="22"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Board.java"><line nr="32" mi="0" ci="19" mb="0" cb="0"/><line nr="38" mi="0" ci="3" mb="0" cb="0"/><line nr="44" mi="0" ci="3" mb="0" cb="0"/><line nr="50" mi="0" ci="3" mb="0" cb="0"/><line nr="74" mi="0" ci="10" mb="0" cb="0"/><line nr="76" mi="0" ci="50" mb="0" cb="0"/><line nr="79" mi="0" ci="50" mb="0" cb="0"/><line nr="82" mi="0" ci="50" mb="0" cb="0"/><line nr="85" mi="0" ci="50" mb="0" cb="0"/><line nr="88" mi="0" ci="50" mb="0" cb="0"/><line nr="91" mi="0" ci="50" mb="0" cb="0"/><line nr="94" mi="0" ci="50" mb="0" cb="0"/><line nr="97" mi="0" ci="50" mb="0" cb="0"/><line nr="100" mi="0" ci="44" mb="0" cb="0"/><line nr="118" mi="0" ci="2" mb="0" cb="0"/><line nr="119" mi="0" ci="4" mb="0" cb="2"/><line nr="120" mi="0" ci="5" mb="0" cb="0"/><line nr="126" mi="0" ci="3" mb="0" cb="0"/><line nr="127" mi="0" ci="7" mb="0" cb="0"/><line nr="129" mi="0" ci="2" mb="0" cb="0"/><line nr="131" mi="0" ci="2" mb="0" cb="0"/><line nr="132" mi="0" ci="1" mb="0" cb="0"/><line nr="139" mi="0" ci="2" mb="0" cb="0"/><line nr="140" mi="0" ci="4" mb="0" cb="0"/><line nr="141" mi="0" ci="5" mb="0" cb="0"/><line nr="142" mi="0" ci="7" mb="0" cb="0"/><line nr="143" mi="0" ci="6" mb="0" cb="0"/><line nr="144" mi="0" ci="10" mb="0" cb="0"/><line nr="145" mi="0" ci="1" mb="0" cb="0"/><line nr="153" mi="0" ci="2" mb="0" cb="2"/><line nr="154" mi="0" ci="4" mb="0" cb="0"/><line nr="156" mi="0" ci="4" mb="0" cb="0"/><line nr="167" mi="0" ci="10" mb="0" cb="0"/><line nr="168" mi="0" ci="9" mb="0" cb="0"/><line nr="169" mi="0" ci="2" mb="0" cb="0"/><line nr="178" mi="0" ci="4" mb="0" cb="0"/><line nr="179" mi="0" ci="10" mb="0" cb="2"/><line nr="180" mi="0" ci="15" mb="0" cb="0"/><line nr="181" mi="0" ci="3" mb="0" cb="0"/><line nr="182" mi="0" ci="4" mb="0" cb="0"/><line nr="184" mi="0" ci="3" mb="0" cb="0"/><line nr="185" mi="0" ci="1" mb="0" cb="0"/><line nr="194" mi="0" ci="8" mb="0" cb="2"/><line nr="195" mi="0" ci="8" mb="0" cb="2"/><line nr="196" mi="0" ci="10" mb="0" cb="2"/><line nr="197" mi="0" ci="17" mb="0" cb="4"/><line nr="198" mi="0" ci="9" mb="0" cb="0"/><line nr="201" mi="0" ci="10" mb="0" cb="0"/><line nr="205" mi="0" ci="1" mb="0" cb="0"/><line nr="214" mi="0" ci="3" mb="0" cb="0"/><line nr="224" mi="0" ci="5" mb="0" cb="0"/><line nr="240" mi="0" ci="4" mb="0" cb="2"/><line nr="241" mi="0" ci="5" mb="0" cb="0"/><line nr="243" mi="0" ci="4" mb="0" cb="2"/><line nr="244" mi="0" ci="5" mb="0" cb="0"/><line nr="246" mi="0" ci="9" mb="0" cb="0"/><line nr="262" mi="0" ci="4" mb="0" cb="2"/><line nr="263" mi="0" ci="5" mb="0" cb="0"/><line nr="265" mi="0" ci="4" mb="0" cb="2"/><line nr="266" mi="0" ci="5" mb="0" cb="0"/><line nr="268" mi="0" ci="8" mb="0" cb="0"/><line nr="282" mi="0" ci="4" mb="1" cb="1"/><line nr="283" mi="5" ci="0" mb="0" cb="0"/><line nr="285" mi="0" ci="4" mb="1" cb="1"/><line nr="286" mi="5" ci="0" mb="0" cb="0"/><line nr="288" mi="0" ci="12" mb="0" cb="0"/><line nr="289" mi="0" ci="1" mb="0" cb="0"/><line nr="305" mi="0" ci="4" mb="0" cb="2"/><line nr="306" mi="0" ci="5" mb="0" cb="0"/><line nr="308" mi="0" ci="4" mb="0" cb="2"/><line nr="309" mi="0" ci="5" mb="0" cb="0"/><line nr="311" mi="0" ci="9" mb="0" cb="0"/><line nr="312" mi="0" ci="12" mb="0" cb="0"/><line nr="313" mi="0" ci="2" mb="0" cb="0"/><line nr="322" mi="0" ci="8" mb="0" cb="2"/><line nr="323" mi="0" ci="8" mb="0" cb="2"/><line nr="324" mi="0" ci="19" mb="0" cb="4"/><line nr="325" mi="0" ci="5" mb="1" cb="1"/><line nr="326" mi="0" ci="25" mb="0" cb="6"/><line nr="327" mi="0" ci="5" mb="1" cb="1"/><line nr="328" mi="0" ci="15" mb="1" cb="3"/><line nr="329" mi="0" ci="2" mb="0" cb="0"/><line nr="333" mi="0" ci="2" mb="0" cb="0"/><line nr="342" mi="0" ci="3" mb="0" cb="2"/><line nr="343" mi="0" ci="2" mb="0" cb="0"/><line nr="345" mi="0" ci="1" mb="0" cb="0"/><line nr="353" mi="0" ci="3" mb="1" cb="1"/><line nr="354" mi="2" ci="0" mb="0" cb="0"/><line nr="356" mi="0" ci="3" mb="0" cb="0"/><line nr="357" mi="0" ci="5" mb="1" cb="1"/><line nr="358" mi="2" ci="0" mb="0" cb="0"/><line nr="360" mi="1" ci="15" mb="2" cb="2"/><line nr="369" mi="12" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="27" covered="921"/><counter type="BRANCH" missed="9" covered="55"/><counter type="LINE" missed="5" covered="88"/><counter type="COMPLEXITY" missed="10" covered="45"/><counter type="METHOD" missed="1" covered="22"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="27" covered="921"/><counter type="BRANCH" missed="9" covered="55"/><counter type="LINE" missed="5" covered="88"/><counter type="COMPLEXITY" missed="10" covered="45"/><counter type="METHOD" missed="1" covered="22"/><counter type="CLASS" missed="0" covered="1"/></package><package name="it/polimi/is23am10/server/model/player"><class name="it/polimi/is23am10/server/model/player/Player" sourcefilename="Player.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/model/player/Player;)V" line="41"><counter type="INSTRUCTION" missed="11" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="&lt;init&gt;" desc="()V" line="50"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setPlayerID" desc="(Ljava/util/UUID;)V" line="112"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setPlayerName" desc="(Ljava/lang/String;)V" line="128"><counter type="INSTRUCTION" missed="5" covered="6"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setScore" desc="(Lit/polimi/is23am10/server/model/score/Score;)V" line="141"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setBookshelf" desc="(Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)V" line="154"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setPrivateCard" desc="(Lit/polimi/is23am10/server/model/items/card/PrivateCard;)V" line="167"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setScoreBlocks" desc="(Ljava/util/List;)V" line="180"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="addScoreBlock" desc="(Lit/polimi/is23am10/server/model/items/scoreblock/ScoreBlock;)V" line="192"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getPlayerID" desc="()Ljava/util/UUID;" line="202"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayerName" desc="()Ljava/lang/String;" line="212"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getScore" desc="()Lit/polimi/is23am10/server/model/score/Score;" line="222"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getBookshelf" desc="()Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;" line="232"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPrivateCard" desc="()Lit/polimi/is23am10/server/model/items/card/PrivateCard;" line="242"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getScoreBlocks" desc="()Ljava/util/List;" line="252"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="updateScore" desc="()V" line="271"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setIsConnected" desc="(Z)V" line="282"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getIsConnected" desc="()Z" line="291"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setIsActivePlayer" desc="(Z)V" line="300"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getIsActivePlayer" desc="()Z" line="309"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="318"><counter type="INSTRUCTION" missed="0" covered="24"/><counter type="BRANCH" missed="1" covered="5"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="332"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="25" covered="143"/><counter type="BRANCH" missed="2" covered="16"/><counter type="LINE" missed="8" covered="46"/><counter type="COMPLEXITY" missed="5" covered="26"/><counter type="METHOD" missed="3" covered="19"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="Player.java"><line nr="41" mi="2" ci="0" mb="0" cb="0"/><line nr="42" mi="4" ci="0" mb="0" cb="0"/><line nr="43" mi="4" ci="0" mb="0" cb="0"/><line nr="44" mi="1" ci="0" mb="0" cb="0"/><line nr="50" mi="0" ci="2" mb="0" cb="0"/><line nr="51" mi="0" ci="1" mb="0" cb="0"/><line nr="112" mi="0" ci="2" mb="0" cb="2"/><line nr="113" mi="0" ci="5" mb="0" cb="0"/><line nr="115" mi="0" ci="3" mb="0" cb="0"/><line nr="116" mi="0" ci="1" mb="0" cb="0"/><line nr="128" mi="0" ci="2" mb="1" cb="1"/><line nr="129" mi="5" ci="0" mb="0" cb="0"/><line nr="131" mi="0" ci="3" mb="0" cb="0"/><line nr="132" mi="0" ci="1" mb="0" cb="0"/><line nr="141" mi="0" ci="2" mb="0" cb="2"/><line nr="142" mi="0" ci="5" mb="0" cb="0"/><line nr="144" mi="0" ci="3" mb="0" cb="0"/><line nr="145" mi="0" ci="1" mb="0" cb="0"/><line nr="154" mi="0" ci="2" mb="0" cb="2"/><line nr="155" mi="0" ci="5" mb="0" cb="0"/><line nr="157" mi="0" ci="3" mb="0" cb="0"/><line nr="158" mi="0" ci="1" mb="0" cb="0"/><line nr="167" mi="0" ci="2" mb="0" cb="2"/><line nr="168" mi="0" ci="5" mb="0" cb="0"/><line nr="170" mi="0" ci="3" mb="0" cb="0"/><line nr="171" mi="0" ci="1" mb="0" cb="0"/><line nr="180" mi="0" ci="2" mb="0" cb="2"/><line nr="181" mi="0" ci="5" mb="0" cb="0"/><line nr="183" mi="0" ci="3" mb="0" cb="0"/><line nr="184" mi="0" ci="1" mb="0" cb="0"/><line nr="192" mi="5" ci="0" mb="0" cb="0"/><line nr="193" mi="1" ci="0" mb="0" cb="0"/><line nr="202" mi="0" ci="3" mb="0" cb="0"/><line nr="212" mi="0" ci="3" mb="0" cb="0"/><line nr="222" mi="0" ci="3" mb="0" cb="0"/><line nr="232" mi="0" ci="3" mb="0" cb="0"/><line nr="242" mi="0" ci="3" mb="0" cb="0"/><line nr="252" mi="0" ci="3" mb="0" cb="0"/><line nr="271" mi="0" ci="5" mb="0" cb="0"/><line nr="272" mi="0" ci="7" mb="0" cb="0"/><line nr="273" mi="0" ci="5" mb="0" cb="0"/><line nr="274" mi="0" ci="1" mb="0" cb="0"/><line nr="282" mi="0" ci="3" mb="0" cb="0"/><line nr="283" mi="0" ci="1" mb="0" cb="0"/><line nr="291" mi="0" ci="3" mb="0" cb="0"/><line nr="300" mi="0" ci="3" mb="0" cb="0"/><line nr="301" mi="0" ci="1" mb="0" cb="0"/><line nr="309" mi="3" ci="0" mb="0" cb="0"/><line nr="318" mi="0" ci="3" mb="0" cb="2"/><line nr="319" mi="0" ci="2" mb="0" cb="0"/><line nr="321" mi="0" ci="3" mb="0" cb="0"/><line nr="322" mi="0" ci="10" mb="0" cb="2"/><line nr="323" mi="0" ci="6" mb="1" cb="1"/><line nr="332" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="25" covered="143"/><counter type="BRANCH" missed="2" covered="16"/><counter type="LINE" missed="8" covered="46"/><counter type="COMPLEXITY" missed="5" covered="26"/><counter type="METHOD" missed="3" covered="19"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="25" covered="143"/><counter type="BRANCH" missed="2" covered="16"/><counter type="LINE" missed="8" covered="46"/><counter type="COMPLEXITY" missed="5" covered="26"/><counter type="METHOD" missed="3" covered="19"/><counter type="CLASS" missed="0" covered="1"/></package><package name="it/polimi/is23am10/server/command"><class name="it/polimi/is23am10/server/command/AddPlayerCommand" sourcefilename="AddPlayerCommand.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/util/UUID;)V" line="31"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayerName" desc="()Ljava/lang/String;" line="54"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGameId" desc="()Ljava/util/UUID;" line="64"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="73"><counter type="INSTRUCTION" missed="0" covered="29"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="91"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="58"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="2" covered="7"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/command/AbstractCommand$Opcode" sourcefilename="AbstractCommand.java"><method name="&lt;clinit&gt;" desc="()V" line="19"><counter type="INSTRUCTION" missed="0" covered="45"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="45"/><counter type="LINE" missed="0" covered="8"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/command/GetAvailableGamesCommand" sourcefilename="GetAvailableGamesCommand.java"><method name="&lt;init&gt;" desc="()V" line="17"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="34"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/command/SnoozeGameTimerCommand" sourcefilename="SnoozeGameTimerCommand.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;)V" line="23"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getPlayerName" desc="()Ljava/lang/String;" line="44"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="53"><counter type="INSTRUCTION" missed="0" covered="23"/><counter type="BRANCH" missed="1" covered="5"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="69"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="42"/><counter type="BRANCH" missed="1" covered="5"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/command/StartGameCommand" sourcefilename="StartGameCommand.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/lang/Integer;)V" line="29"><counter type="INSTRUCTION" missed="0" covered="15"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getStartingPlayerName" desc="()Ljava/lang/String;" line="52"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMaxPlayers" desc="()Ljava/lang/Integer;" line="62"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="71"><counter type="INSTRUCTION" missed="0" covered="28"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="0" covered="6"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="88"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="53"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="2" covered="7"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/command/SendChatMessageCommand" sourcefilename="SendChatMessageCommand.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/network/messages/ChatMessage;)V" line="19"><counter type="INSTRUCTION" missed="12" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="getChatMessage" desc="()Lit/polimi/is23am10/server/network/messages/ChatMessage;" line="42"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="52"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="18" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="it/polimi/is23am10/server/command/MoveTilesCommand" sourcefilename="MoveTilesCommand.java"><method name="&lt;init&gt;" desc="(Ljava/lang/String;Ljava/util/UUID;Ljava/util/Map;)V" line="45"><counter type="INSTRUCTION" missed="0" covered="18"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMovingPlayer" desc="()Ljava/lang/String;" line="66"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getGameId" desc="()Ljava/util/UUID;" line="73"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getMoves" desc="()Ljava/util/Map;" line="80"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="89"><counter type="INSTRUCTION" missed="0" covered="35"/><counter type="BRANCH" missed="3" covered="7"/><counter type="LINE" missed="0" covered="7"/><counter type="COMPLEXITY" missed="3" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="107"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="0" covered="74"/><counter type="BRANCH" missed="3" covered="7"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="3" covered="8"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/server/command/AbstractCommand" sourcefilename="AbstractCommand.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/server/command/AbstractCommand$Opcode;)V" line="62"><counter type="INSTRUCTION" missed="1" covered="9"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getOpcode" desc="()Lit/polimi/is23am10/server/command/AbstractCommand$Opcode;" line="73"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="1" covered="12"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="StartGameCommand.java"><line nr="29" mi="0" ci="2" mb="0" cb="0"/><line nr="30" mi="0" ci="3" mb="0" cb="0"/><line nr="40" mi="0" ci="3" mb="0" cb="0"/><line nr="41" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="3" mb="0" cb="0"/><line nr="43" mi="0" ci="1" mb="0" cb="0"/><line nr="52" mi="0" ci="3" mb="0" cb="0"/><line nr="62" mi="0" ci="3" mb="0" cb="0"/><line nr="71" mi="0" ci="3" mb="0" cb="2"/><line nr="72" mi="0" ci="2" mb="0" cb="0"/><line nr="75" mi="0" ci="3" mb="0" cb="0"/><line nr="77" mi="0" ci="9" mb="1" cb="1"/><line nr="78" mi="0" ci="6" mb="0" cb="2"/><line nr="79" mi="0" ci="5" mb="1" cb="1"/><line nr="88" mi="0" ci="4" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="53"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="2" covered="7"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="MoveTilesCommand.java"><line nr="45" mi="0" ci="2" mb="0" cb="0"/><line nr="46" mi="0" ci="3" mb="0" cb="0"/><line nr="56" mi="0" ci="3" mb="0" cb="0"/><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="58" mi="0" ci="3" mb="0" cb="0"/><line nr="59" mi="0" ci="3" mb="0" cb="0"/><line nr="60" mi="0" ci="1" mb="0" cb="0"/><line nr="66" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="3" mb="0" cb="0"/><line nr="80" mi="0" ci="3" mb="0" cb="0"/><line nr="89" mi="0" ci="3" mb="0" cb="2"/><line nr="90" mi="0" ci="2" mb="0" cb="0"/><line nr="93" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="0" ci="9" mb="1" cb="1"/><line nr="96" mi="0" ci="6" mb="0" cb="2"/><line nr="97" mi="0" ci="6" mb="1" cb="1"/><line nr="98" mi="0" ci="6" mb="1" cb="1"/><line nr="107" mi="0" ci="12" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="74"/><counter type="BRANCH" missed="3" covered="7"/><counter type="LINE" missed="0" covered="18"/><counter type="COMPLEXITY" missed="3" covered="8"/><counter type="METHOD" missed="0" covered="6"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="AddPlayerCommand.java"><line nr="31" mi="0" ci="2" mb="0" cb="0"/><line nr="32" mi="0" ci="3" mb="0" cb="0"/><line nr="42" mi="0" ci="3" mb="0" cb="0"/><line nr="43" mi="0" ci="3" mb="0" cb="0"/><line nr="44" mi="0" ci="3" mb="0" cb="0"/><line nr="45" mi="0" ci="1" mb="0" cb="0"/><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="64" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="3" mb="0" cb="2"/><line nr="74" mi="0" ci="2" mb="0" cb="0"/><line nr="77" mi="0" ci="3" mb="0" cb="0"/><line nr="79" mi="0" ci="9" mb="1" cb="1"/><line nr="80" mi="0" ci="6" mb="0" cb="2"/><line nr="81" mi="0" ci="6" mb="1" cb="1"/><line nr="91" mi="0" ci="8" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="58"/><counter type="BRANCH" missed="2" covered="6"/><counter type="LINE" missed="0" covered="15"/><counter type="COMPLEXITY" missed="2" covered="7"/><counter type="METHOD" missed="0" covered="5"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="SnoozeGameTimerCommand.java"><line nr="23" mi="0" ci="2" mb="0" cb="0"/><line nr="24" mi="0" ci="3" mb="0" cb="0"/><line nr="33" mi="0" ci="3" mb="0" cb="0"/><line nr="34" mi="0" ci="3" mb="0" cb="0"/><line nr="35" mi="0" ci="1" mb="0" cb="0"/><line nr="44" mi="0" ci="3" mb="0" cb="0"/><line nr="53" mi="0" ci="3" mb="0" cb="2"/><line nr="54" mi="0" ci="2" mb="0" cb="0"/><line nr="57" mi="0" ci="3" mb="0" cb="0"/><line nr="59" mi="0" ci="9" mb="1" cb="1"/><line nr="60" mi="0" ci="6" mb="0" cb="2"/><line nr="69" mi="0" ci="4" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="42"/><counter type="BRANCH" missed="1" covered="5"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="1" covered="6"/><counter type="METHOD" missed="0" covered="4"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="SendChatMessageCommand.java"><line nr="19" mi="2" ci="0" mb="0" cb="0"/><line nr="20" mi="3" ci="0" mb="0" cb="0"/><line nr="32" mi="3" ci="0" mb="0" cb="0"/><line nr="33" mi="3" ci="0" mb="0" cb="0"/><line nr="34" mi="1" ci="0" mb="0" cb="0"/><line nr="42" mi="3" ci="0" mb="0" cb="0"/><line nr="52" mi="3" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="18" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="GetAvailableGamesCommand.java"><line nr="17" mi="0" ci="2" mb="0" cb="0"/><line nr="18" mi="0" ci="3" mb="0" cb="0"/><line nr="25" mi="0" ci="3" mb="0" cb="0"/><line nr="26" mi="0" ci="1" mb="0" cb="0"/><line nr="34" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="AbstractCommand.java"><line nr="19" mi="0" ci="3" mb="0" cb="0"/><line nr="23" mi="0" ci="6" mb="0" cb="0"/><line nr="27" mi="0" ci="6" mb="0" cb="0"/><line nr="31" mi="0" ci="6" mb="0" cb="0"/><line nr="35" mi="0" ci="6" mb="0" cb="0"/><line nr="39" mi="0" ci="6" mb="0" cb="0"/><line nr="43" mi="0" ci="6" mb="0" cb="0"/><line nr="47" mi="0" ci="6" mb="0" cb="0"/><line nr="62" mi="0" ci="2" mb="0" cb="0"/><line nr="63" mi="1" ci="6" mb="1" cb="1"/><line nr="64" mi="0" ci="1" mb="0" cb="0"/><line nr="73" mi="0" ci="3" mb="0" cb="0"/><counter type="INSTRUCTION" missed="1" covered="57"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="0" covered="12"/><counter type="COMPLEXITY" missed="1" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="2"/></sourcefile><counter type="INSTRUCTION" missed="19" covered="296"/><counter type="BRANCH" missed="9" covered="25"/><counter type="LINE" missed="7" covered="77"/><counter type="COMPLEXITY" missed="12" covered="33"/><counter type="METHOD" missed="3" covered="25"/><counter type="CLASS" missed="1" covered="7"/></package><package name="it/polimi/is23am10/utils"><class name="it/polimi/is23am10/utils/CustomKeyDeserializer" sourcefilename="MoveTileCommandTypeAdaptor.java"><method name="&lt;init&gt;" desc="()V" line="36"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="deserialize" desc="(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Lit/polimi/is23am10/utils/Coordinates;" line="40"><counter type="INSTRUCTION" missed="21" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="24" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory" sourcefilename="ThreadLocalTypeAdapterFactory.java"><method name="&lt;init&gt;" desc="()V" line="12"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="create" desc="(Lcom/google/gson/Gson;Lcom/google/gson/reflect/TypeToken;)Lcom/google/gson/TypeAdapter;" line="15"><counter type="INSTRUCTION" missed="5" covered="7"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="5" covered="10"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/utils/CustomKeySerializer" sourcefilename="MoveTileCommandTypeAdaptor.java"><method name="&lt;init&gt;" desc="()V" line="22"><counter type="INSTRUCTION" missed="3" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="serialize" desc="(Lit/polimi/is23am10/utils/Coordinates;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement;" line="25"><counter type="INSTRUCTION" missed="16" covered="0"/><counter type="LINE" missed="4" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="19" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="2" covered="0"/><counter type="METHOD" missed="2" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="it/polimi/is23am10/utils/ErrorTypeString" sourcefilename="ErrorTypeString.java"/><class name="it/polimi/is23am10/utils/CommandSyntaxValidator" sourcefilename="CommandSyntaxValidator.java"><method name="validateGameIdx" desc="(Ljava/lang/String;Ljava/lang/Integer;)Z" line="38"><counter type="INSTRUCTION" missed="22" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="validateMaxPlayer" desc="(Ljava/lang/String;)Z" line="60"><counter type="INSTRUCTION" missed="23" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="7" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="validateCoord" desc="(Ljava/lang/String;)Z" line="83"><counter type="INSTRUCTION" missed="12" covered="16"/><counter type="BRANCH" missed="5" covered="3"/><counter type="LINE" missed="3" covered="3"/><counter type="COMPLEXITY" missed="4" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateColIdx" desc="(Ljava/lang/String;)Z" line="104"><counter type="INSTRUCTION" missed="22" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="6" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="79" covered="16"/><counter type="BRANCH" missed="29" covered="3"/><counter type="LINE" missed="24" covered="3"/><counter type="COMPLEXITY" missed="19" covered="1"/><counter type="METHOD" missed="3" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/utils/MovesValidator" sourcefilename="MovesValidator.java"><method name="isCoordinateInZeroIndex" desc="(Lit/polimi/is23am10/utils/Coordinates;)Z" line="44"><counter type="INSTRUCTION" missed="0" covered="12"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="isCoordinateInMaxIndex" desc="(Lit/polimi/is23am10/utils/Coordinates;)Z" line="54"><counter type="INSTRUCTION" missed="2" covered="18"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="2" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hasEmptySide" desc="(Lit/polimi/is23am10/utils/Coordinates;Lit/polimi/is23am10/server/model/items/board/Board;)Z" line="73"><counter type="INSTRUCTION" missed="0" covered="52"/><counter type="BRANCH" missed="3" covered="5"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="3" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="areAdjacent" desc="(Ljava/util/List;)Z" line="86"><counter type="INSTRUCTION" missed="0" covered="42"/><counter type="BRANCH" missed="0" covered="4"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="3"/><counter type="METHOD" missed="0" covered="1"/></method><method name="placeFromBottom" desc="(Ljava/lang/Integer;)Z" line="104"><counter type="INSTRUCTION" missed="0" covered="8"/><counter type="BRANCH" missed="0" covered="2"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateBookShelfPicks" desc="(Ljava/util/Collection;Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;)V" line="127"><counter type="INSTRUCTION" missed="0" covered="93"/><counter type="BRANCH" missed="0" covered="14"/><counter type="LINE" missed="0" covered="21"/><counter type="COMPLEXITY" missed="0" covered="8"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateGameBoardPicks" desc="(Ljava/util/Collection;Lit/polimi/is23am10/server/model/items/board/Board;)V" line="186"><counter type="INSTRUCTION" missed="1" covered="102"/><counter type="BRANCH" missed="1" covered="17"/><counter type="LINE" missed="1" covered="33"/><counter type="COMPLEXITY" missed="1" covered="9"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validateGameMoves" desc="(Ljava/util/Map;Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;Lit/polimi/is23am10/server/model/items/board/Board;)V" line="272"><counter type="INSTRUCTION" missed="0" covered="21"/><counter type="BRANCH" missed="1" covered="3"/><counter type="LINE" missed="0" covered="5"/><counter type="COMPLEXITY" missed="1" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$validateGameBoardPicks$5" desc="(Lit/polimi/is23am10/utils/Coordinates;)Ljava/lang/Integer;" line="209"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$validateGameBoardPicks$4" desc="(Lit/polimi/is23am10/utils/Coordinates;)Ljava/lang/Integer;" line="204"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$validateGameBoardPicks$3" desc="(Lit/polimi/is23am10/utils/Coordinates;)Ljava/lang/Integer;" line="193"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$validateGameBoardPicks$2" desc="(Lit/polimi/is23am10/utils/Coordinates;)Ljava/lang/Integer;" line="188"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$validateBookShelfPicks$1" desc="(Lit/polimi/is23am10/utils/Coordinates;)Ljava/lang/Integer;" line="144"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="lambda$validateBookShelfPicks$0" desc="(Lit/polimi/is23am10/utils/Coordinates;)Ljava/lang/Integer;" line="127"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="3" covered="366"/><counter type="BRANCH" missed="7" covered="51"/><counter type="LINE" missed="1" covered="70"/><counter type="COMPLEXITY" missed="7" covered="36"/><counter type="METHOD" missed="0" covered="14"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/utils/IndexValidator" sourcefilename="IndexValidator.java"><method name="validRowIndex" desc="(Ljava/lang/Integer;Ljava/lang/Integer;)Z" line="33"><counter type="INSTRUCTION" missed="4" covered="14"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><method name="validColIndex" desc="(Ljava/lang/Integer;Ljava/lang/Integer;)Z" line="48"><counter type="INSTRUCTION" missed="4" covered="14"/><counter type="BRANCH" missed="2" covered="4"/><counter type="LINE" missed="1" covered="2"/><counter type="COMPLEXITY" missed="2" covered="2"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="8" covered="28"/><counter type="BRANCH" missed="4" covered="8"/><counter type="LINE" missed="2" covered="4"/><counter type="COMPLEXITY" missed="4" covered="4"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/utils/Coordinates" sourcefilename="Coordinates.java"><method name="&lt;init&gt;" desc="(Ljava/lang/Integer;Ljava/lang/Integer;)V" line="34"><counter type="INSTRUCTION" missed="0" covered="9"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="&lt;init&gt;" desc="()V" line="43"><counter type="INSTRUCTION" missed="0" covered="11"/><counter type="LINE" missed="0" covered="4"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getRow" desc="()Ljava/lang/Integer;" line="54"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="getCol" desc="()Ljava/lang/Integer;" line="63"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setRow" desc="(Ljava/lang/Integer;)V" line="72"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="setCol" desc="(Ljava/lang/Integer;)V" line="81"><counter type="INSTRUCTION" missed="0" covered="4"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="equals" desc="(Ljava/lang/Object;)Z" line="90"><counter type="INSTRUCTION" missed="3" covered="19"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="1" covered="3"/><counter type="COMPLEXITY" missed="3" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="hashCode" desc="()I" line="110"><counter type="INSTRUCTION" missed="0" covered="20"/><counter type="LINE" missed="0" covered="2"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="toString" desc="()Ljava/lang/String;" line="116"><counter type="INSTRUCTION" missed="15" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="18" covered="73"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="2" covered="19"/><counter type="COMPLEXITY" missed="4" covered="8"/><counter type="METHOD" missed="1" covered="8"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/utils/MoveCommandHelper" sourcefilename="MoveCommandHelper.java"><method name="fromColIdxToCoord" desc="(Ljava/lang/String;Lit/polimi/is23am10/server/model/items/bookshelf/Bookshelf;Ljava/lang/Integer;)Ljava/util/List;" line="44"><counter type="INSTRUCTION" missed="70" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="10" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="70" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="10" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory$1" sourcefilename="ThreadLocalTypeAdapterFactory.java"><method name="&lt;init&gt;" desc="(Lit/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory;)V" line="16"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="1" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="write" desc="(Lcom/google/gson/stream/JsonWriter;Ljava/lang/Object;)V" line="20"><counter type="INSTRUCTION" missed="6" covered="0"/><counter type="LINE" missed="2" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><method name="read" desc="(Lcom/google/gson/stream/JsonReader;)Ljava/lang/Object;" line="26"><counter type="INSTRUCTION" missed="14" covered="0"/><counter type="LINE" missed="5" covered="0"/><counter type="COMPLEXITY" missed="1" covered="0"/><counter type="METHOD" missed="1" covered="0"/></method><counter type="INSTRUCTION" missed="26" covered="0"/><counter type="LINE" missed="8" covered="0"/><counter type="COMPLEXITY" missed="3" covered="0"/><counter type="METHOD" missed="3" covered="0"/><counter type="CLASS" missed="1" covered="0"/></class><class name="it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor" sourcefilename="MoveTileCommandTypeAdaptor.java"><method name="&lt;init&gt;" desc="()V" line="52"><counter type="INSTRUCTION" missed="0" covered="3"/><counter type="LINE" missed="0" covered="1"/><counter type="COMPLEXITY" missed="0" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="serialize" desc="(Ljava/util/Map;Ljava/lang/reflect/Type;Lcom/google/gson/JsonSerializationContext;)Lcom/google/gson/JsonElement;" line="55"><counter type="INSTRUCTION" missed="16" covered="13"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="2" covered="3"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><method name="deserialize" desc="(Lcom/google/gson/JsonElement;Ljava/lang/reflect/Type;Lcom/google/gson/JsonDeserializationContext;)Ljava/util/Map;" line="65"><counter type="INSTRUCTION" missed="32" covered="16"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="5" covered="4"/><counter type="COMPLEXITY" missed="1" covered="1"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="48" covered="32"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="7" covered="8"/><counter type="COMPLEXITY" missed="2" covered="3"/><counter type="METHOD" missed="0" covered="3"/><counter type="CLASS" missed="0" covered="1"/></class><class name="it/polimi/is23am10/utils/ArgParser" sourcefilename="ArgParser.java"><method name="parse" desc="([Ljava/lang/String;)V" line="100"><counter type="INSTRUCTION" missed="10" covered="177"/><counter type="BRANCH" missed="3" covered="26"/><counter type="LINE" missed="3" covered="36"/><counter type="COMPLEXITY" missed="3" covered="17"/><counter type="METHOD" missed="0" covered="1"/></method><counter type="INSTRUCTION" missed="10" covered="177"/><counter type="BRANCH" missed="3" covered="26"/><counter type="LINE" missed="3" covered="36"/><counter type="COMPLEXITY" missed="3" covered="17"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></class><sourcefile name="MoveTileCommandTypeAdaptor.java"><line nr="22" mi="3" ci="0" mb="0" cb="0"/><line nr="25" mi="4" ci="0" mb="0" cb="0"/><line nr="26" mi="5" ci="0" mb="0" cb="0"/><line nr="27" mi="5" ci="0" mb="0" cb="0"/><line nr="28" mi="2" ci="0" mb="0" cb="0"/><line nr="36" mi="3" ci="0" mb="0" cb="0"/><line nr="40" mi="3" ci="0" mb="0" cb="0"/><line nr="41" mi="5" ci="0" mb="0" cb="0"/><line nr="42" mi="5" ci="0" mb="0" cb="0"/><line nr="43" mi="8" ci="0" mb="0" cb="0"/><line nr="52" mi="0" ci="3" mb="0" cb="0"/><line nr="55" mi="0" ci="4" mb="0" cb="0"/><line nr="56" mi="4" ci="7" mb="1" cb="1"/><line nr="57" mi="11" ci="0" mb="0" cb="0"/><line nr="58" mi="1" ci="0" mb="0" cb="0"/><line nr="59" mi="0" ci="2" mb="0" cb="0"/><line nr="65" mi="0" ci="3" mb="0" cb="0"/><line nr="66" mi="0" ci="4" mb="0" cb="0"/><line nr="67" mi="4" ci="7" mb="1" cb="1"/><line nr="68" mi="4" ci="0" mb="0" cb="0"/><line nr="69" mi="10" ci="0" mb="0" cb="0"/><line nr="70" mi="8" ci="0" mb="0" cb="0"/><line nr="71" mi="5" ci="0" mb="0" cb="0"/><line nr="72" mi="1" ci="0" mb="0" cb="0"/><line nr="73" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="91" covered="32"/><counter type="BRANCH" missed="2" covered="2"/><counter type="LINE" missed="17" covered="8"/><counter type="COMPLEXITY" missed="6" covered="3"/><counter type="METHOD" missed="4" covered="3"/><counter type="CLASS" missed="2" covered="1"/></sourcefile><sourcefile name="CommandSyntaxValidator.java"><line nr="38" mi="4" ci="0" mb="4" cb="0"/><line nr="39" mi="2" ci="0" mb="0" cb="0"/><line nr="43" mi="8" ci="0" mb="4" cb="0"/><line nr="44" mi="2" ci="0" mb="0" cb="0"/><line nr="46" mi="1" ci="0" mb="0" cb="0"/><line nr="47" mi="2" ci="0" mb="0" cb="0"/><line nr="48" mi="1" ci="0" mb="0" cb="0"/><line nr="49" mi="2" ci="0" mb="0" cb="0"/><line nr="60" mi="2" ci="0" mb="2" cb="0"/><line nr="61" mi="2" ci="0" mb="0" cb="0"/><line nr="64" mi="5" ci="0" mb="2" cb="0"/><line nr="65" mi="2" ci="0" mb="0" cb="0"/><line nr="68" mi="8" ci="0" mb="4" cb="0"/><line nr="69" mi="2" ci="0" mb="0" cb="0"/><line nr="71" mi="2" ci="0" mb="0" cb="0"/><line nr="83" mi="0" ci="6" mb="2" cb="2"/><line nr="84" mi="2" ci="0" mb="0" cb="0"/><line nr="88" mi="3" ci="8" mb="1" cb="1"/><line nr="89" mi="5" ci="0" mb="2" cb="0"/><line nr="90" mi="0" ci="2" mb="0" cb="0"/><line nr="92" mi="2" ci="0" mb="0" cb="0"/><line nr="104" mi="6" ci="0" mb="4" cb="0"/><line nr="105" mi="2" ci="0" mb="0" cb="0"/><line nr="110" mi="7" ci="0" mb="2" cb="0"/><line nr="111" mi="3" ci="0" mb="2" cb="0"/><line nr="112" mi="2" ci="0" mb="0" cb="0"/><line nr="115" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="79" covered="16"/><counter type="BRANCH" missed="29" covered="3"/><counter type="LINE" missed="24" covered="3"/><counter type="COMPLEXITY" missed="19" covered="1"/><counter type="METHOD" missed="3" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ThreadLocalTypeAdapterFactory.java"><line nr="12" mi="0" ci="3" mb="0" cb="0"/><line nr="15" mi="0" ci="5" mb="1" cb="1"/><line nr="16" mi="11" ci="0" mb="0" cb="0"/><line nr="20" mi="5" ci="0" mb="0" cb="0"/><line nr="21" mi="1" ci="0" mb="0" cb="0"/><line nr="26" mi="3" ci="0" mb="0" cb="0"/><line nr="29" mi="4" ci="0" mb="0" cb="0"/><line nr="30" mi="3" ci="0" mb="0" cb="0"/><line nr="33" mi="2" ci="0" mb="0" cb="0"/><line nr="34" mi="2" ci="0" mb="0" cb="0"/><line nr="40" mi="0" ci="2" mb="0" cb="0"/><counter type="INSTRUCTION" missed="31" covered="10"/><counter type="BRANCH" missed="1" covered="1"/><counter type="LINE" missed="8" covered="3"/><counter type="COMPLEXITY" missed="4" covered="2"/><counter type="METHOD" missed="3" covered="2"/><counter type="CLASS" missed="1" covered="1"/></sourcefile><sourcefile name="Coordinates.java"><line nr="34" mi="0" ci="2" mb="0" cb="0"/><line nr="35" mi="0" ci="3" mb="0" cb="0"/><line nr="36" mi="0" ci="3" mb="0" cb="0"/><line nr="37" mi="0" ci="1" mb="0" cb="0"/><line nr="43" mi="0" ci="2" mb="0" cb="0"/><line nr="44" mi="0" ci="4" mb="0" cb="0"/><line nr="45" mi="0" ci="4" mb="0" cb="0"/><line nr="46" mi="0" ci="1" mb="0" cb="0"/><line nr="54" mi="0" ci="3" mb="0" cb="0"/><line nr="63" mi="0" ci="3" mb="0" cb="0"/><line nr="72" mi="0" ci="3" mb="0" cb="0"/><line nr="73" mi="0" ci="1" mb="0" cb="0"/><line nr="81" mi="0" ci="3" mb="0" cb="0"/><line nr="82" mi="0" ci="1" mb="0" cb="0"/><line nr="90" mi="0" ci="3" mb="1" cb="1"/><line nr="91" mi="2" ci="0" mb="0" cb="0"/><line nr="94" mi="0" ci="3" mb="0" cb="0"/><line nr="95" mi="1" ci="13" mb="2" cb="2"/><line nr="110" mi="0" ci="12" mb="0" cb="0"/><line nr="111" mi="0" ci="8" mb="0" cb="0"/><line nr="116" mi="15" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="18" covered="73"/><counter type="BRANCH" missed="3" covered="3"/><counter type="LINE" missed="2" covered="19"/><counter type="COMPLEXITY" missed="4" covered="8"/><counter type="METHOD" missed="1" covered="8"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="MovesValidator.java"><line nr="44" mi="0" ci="12" mb="0" cb="4"/><line nr="54" mi="2" ci="18" mb="2" cb="2"/><line nr="73" mi="0" ci="15" mb="0" cb="2"/><line nr="74" mi="0" ci="12" mb="1" cb="1"/><line nr="75" mi="0" ci="12" mb="1" cb="1"/><line nr="76" mi="0" ci="13" mb="1" cb="1"/><line nr="86" mi="0" ci="21" mb="0" cb="2"/><line nr="87" mi="0" ci="17" mb="0" cb="2"/><line nr="88" mi="0" ci="2" mb="0" cb="0"/><line nr="91" mi="0" ci="2" mb="0" cb="0"/><line nr="104" mi="0" ci="8" mb="0" cb="2"/><line nr="127" mi="0" ci="10" mb="0" cb="0"/><line nr="128" mi="0" ci="4" mb="0" cb="2"/><line nr="129" mi="0" ci="6" mb="0" cb="0"/><line nr="134" mi="0" ci="6" mb="0" cb="0"/><line nr="136" mi="0" ci="7" mb="0" cb="2"/><line nr="137" mi="0" ci="5" mb="0" cb="0"/><line nr="142" mi="0" ci="1" mb="0" cb="0"/><line nr="143" mi="0" ci="2" mb="0" cb="0"/><line nr="144" mi="0" ci="4" mb="0" cb="0"/><line nr="145" mi="0" ci="1" mb="0" cb="0"/><line nr="146" mi="0" ci="4" mb="0" cb="0"/><line nr="147" mi="0" ci="3" mb="0" cb="2"/><line nr="148" mi="0" ci="5" mb="0" cb="0"/><line nr="155" mi="0" ci="8" mb="0" cb="0"/><line nr="156" mi="0" ci="5" mb="0" cb="2"/><line nr="157" mi="0" ci="8" mb="0" cb="2"/><line nr="158" mi="0" ci="5" mb="0" cb="0"/><line nr="159" mi="0" ci="6" mb="0" cb="2"/><line nr="160" mi="0" ci="3" mb="0" cb="2"/><line nr="161" mi="0" ci="5" mb="0" cb="0"/><line nr="164" mi="0" ci="1" mb="0" cb="0"/><line nr="186" mi="0" ci="1" mb="0" cb="0"/><line nr="187" mi="0" ci="2" mb="0" cb="0"/><line nr="188" mi="0" ci="4" mb="0" cb="0"/><line nr="189" mi="0" ci="1" mb="0" cb="0"/><line nr="190" mi="0" ci="2" mb="0" cb="0"/><line nr="191" mi="0" ci="1" mb="0" cb="0"/><line nr="192" mi="0" ci="2" mb="0" cb="0"/><line nr="193" mi="0" ci="4" mb="0" cb="0"/><line nr="194" mi="0" ci="1" mb="0" cb="0"/><line nr="195" mi="0" ci="2" mb="0" cb="0"/><line nr="197" mi="0" ci="8" mb="0" cb="4"/><line nr="198" mi="0" ci="7" mb="0" cb="0"/><line nr="202" mi="0" ci="1" mb="0" cb="0"/><line nr="203" mi="0" ci="2" mb="0" cb="0"/><line nr="204" mi="0" ci="4" mb="0" cb="0"/><line nr="205" mi="0" ci="1" mb="0" cb="0"/><line nr="206" mi="0" ci="4" mb="0" cb="0"/><line nr="207" mi="0" ci="1" mb="0" cb="0"/><line nr="208" mi="0" ci="2" mb="0" cb="0"/><line nr="209" mi="0" ci="4" mb="0" cb="0"/><line nr="210" mi="0" ci="1" mb="0" cb="0"/><line nr="211" mi="0" ci="4" mb="0" cb="0"/><line nr="213" mi="0" ci="6" mb="0" cb="4"/><line nr="214" mi="0" ci="5" mb="0" cb="0"/><line nr="218" mi="0" ci="10" mb="0" cb="2"/><line nr="220" mi="0" ci="8" mb="0" cb="2"/><line nr="221" mi="0" ci="5" mb="0" cb="0"/><line nr="225" mi="0" ci="6" mb="1" cb="3"/><line nr="226" mi="1" ci="0" mb="0" cb="0"/><line nr="230" mi="0" ci="4" mb="0" cb="2"/><line nr="231" mi="0" ci="3" mb="0" cb="0"/><line nr="232" mi="0" ci="6" mb="0" cb="0"/><line nr="234" mi="0" ci="1" mb="0" cb="0"/><line nr="235" mi="0" ci="1" mb="0" cb="0"/><line nr="272" mi="0" ci="8" mb="1" cb="3"/><line nr="273" mi="0" ci="4" mb="0" cb="0"/><line nr="276" mi="0" ci="4" mb="0" cb="0"/><line nr="277" mi="0" ci="4" mb="0" cb="0"/><line nr="278" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="3" covered="366"/><counter type="BRANCH" missed="7" covered="51"/><counter type="LINE" missed="1" covered="70"/><counter type="COMPLEXITY" missed="7" covered="36"/><counter type="METHOD" missed="0" covered="14"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="MoveCommandHelper.java"><line nr="44" mi="4" ci="0" mb="0" cb="0"/><line nr="45" mi="7" ci="0" mb="0" cb="0"/><line nr="46" mi="3" ci="0" mb="0" cb="0"/><line nr="48" mi="7" ci="0" mb="2" cb="0"/><line nr="49" mi="5" ci="0" mb="0" cb="0"/><line nr="53" mi="15" ci="0" mb="4" cb="0"/><line nr="54" mi="8" ci="0" mb="2" cb="0"/><line nr="55" mi="9" ci="0" mb="0" cb="0"/><line nr="56" mi="10" ci="0" mb="0" cb="0"/><line nr="60" mi="2" ci="0" mb="0" cb="0"/><counter type="INSTRUCTION" missed="70" covered="0"/><counter type="BRANCH" missed="8" covered="0"/><counter type="LINE" missed="10" covered="0"/><counter type="COMPLEXITY" missed="5" covered="0"/><counter type="METHOD" missed="1" covered="0"/><counter type="CLASS" missed="1" covered="0"/></sourcefile><sourcefile name="ArgParser.java"><line nr="100" mi="0" ci="2" mb="1" cb="1"/><line nr="101" mi="0" ci="8" mb="0" cb="2"/><line nr="102" mi="0" ci="10" mb="1" cb="10"/><line nr="104" mi="0" ci="6" mb="0" cb="2"/><line nr="105" mi="0" ci="8" mb="0" cb="0"/><line nr="106" mi="0" ci="2" mb="0" cb="0"/><line nr="108" mi="0" ci="7" mb="0" cb="0"/><line nr="112" mi="0" ci="6" mb="1" cb="1"/><line nr="113" mi="0" ci="8" mb="0" cb="0"/><line nr="114" mi="0" ci="2" mb="0" cb="0"/><line nr="116" mi="7" ci="0" mb="0" cb="0"/><line nr="120" mi="0" ci="6" mb="0" cb="2"/><line nr="121" mi="0" ci="8" mb="0" cb="0"/><line nr="122" mi="0" ci="2" mb="0" cb="0"/><line nr="124" mi="0" ci="7" mb="0" cb="0"/><line nr="128" mi="0" ci="6" mb="0" cb="2"/><line nr="129" mi="0" ci="7" mb="0" cb="0"/><line nr="130" mi="0" ci="2" mb="0" cb="0"/><line nr="132" mi="0" ci="7" mb="0" cb="0"/><line nr="136" mi="0" ci="6" mb="0" cb="2"/><line nr="137" mi="0" ci="8" mb="0" cb="2"/><line nr="138" mi="0" ci="6" mb="0" cb="0"/><line nr="139" mi="0" ci="2" mb="0" cb="0"/><line nr="141" mi="0" ci="5" mb="0" cb="0"/><line nr="144" mi="0" ci="7" mb="0" cb="0"/><line nr="148" mi="0" ci="2" mb="0" cb="0"/><line nr="149" mi="0" ci="1" mb="0" cb="0"/><line nr="151" mi="0" ci="2" mb="0" cb="0"/><line nr="152" mi="0" ci="1" mb="0" cb="0"/><line nr="154" mi="0" ci="2" mb="0" cb="0"/><line nr="155" mi="0" ci="1" mb="0" cb="0"/><line nr="157" mi="2" ci="0" mb="0" cb="0"/><line nr="158" mi="1" ci="0" mb="0" cb="0"/><line nr="160" mi="0" ci="6" mb="0" cb="2"/><line nr="161" mi="0" ci="7" mb="0" cb="0"/><line nr="162" mi="0" ci="2" mb="0" cb="0"/><line nr="164" mi="0" ci="7" mb="0" cb="0"/><line nr="168" mi="0" ci="7" mb="0" cb="0"/><line nr="172" mi="0" ci="1" mb="0" cb="0"/><counter type="INSTRUCTION" missed="10" covered="177"/><counter type="BRANCH" missed="3" covered="26"/><counter type="LINE" missed="3" covered="36"/><counter type="COMPLEXITY" missed="3" covered="17"/><counter type="METHOD" missed="0" covered="1"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><sourcefile name="ErrorTypeString.java"/><sourcefile name="IndexValidator.java"><line nr="33" mi="0" ci="2" mb="1" cb="1"/><line nr="34" mi="4" ci="0" mb="0" cb="0"/><line nr="36" mi="0" ci="12" mb="1" cb="3"/><line nr="48" mi="0" ci="2" mb="1" cb="1"/><line nr="49" mi="4" ci="0" mb="0" cb="0"/><line nr="51" mi="0" ci="12" mb="1" cb="3"/><counter type="INSTRUCTION" missed="8" covered="28"/><counter type="BRANCH" missed="4" covered="8"/><counter type="LINE" missed="2" covered="4"/><counter type="COMPLEXITY" missed="4" covered="4"/><counter type="METHOD" missed="0" covered="2"/><counter type="CLASS" missed="0" covered="1"/></sourcefile><counter type="INSTRUCTION" missed="310" covered="702"/><counter type="BRANCH" missed="57" covered="94"/><counter type="LINE" missed="67" covered="143"/><counter type="COMPLEXITY" missed="52" covered="71"/><counter type="METHOD" missed="12" covered="31"/><counter type="CLASS" missed="4" covered="7"/></package><counter type="INSTRUCTION" missed="1280" covered="9904"/><counter type="BRANCH" missed="219" covered="921"/><counter type="LINE" missed="332" covered="1978"/><counter type="COMPLEXITY" missed="257" covered="813"/><counter type="METHOD" missed="74" covered="417"/><counter type="CLASS" missed="10" covered="67"/></report>
    \ No newline at end of file
    diff --git a/deliverables/is23am10-0.0.1-jar-with-dependencies.jar b/deliverables/is23am10-0.0.1-jar-with-dependencies.jar
    new file mode 100644
    index 00000000..b55321f3
    Binary files /dev/null and b/deliverables/is23am10-0.0.1-jar-with-dependencies.jar differ
    diff --git a/deliverables/javadoc/allclasses-index.html b/deliverables/javadoc/allclasses-index.html
    new file mode 100644
    index 00000000..e7a69747
    --- /dev/null
    +++ b/deliverables/javadoc/allclasses-index.html
    @@ -0,0 +1,612 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>All Classes and Interfaces</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="class index">
    +<meta name="generator" content="javadoc/AllClassesIndexWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="all-classes-index-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="index-files/index-1.html">Index</a></li>
    +<li><a href="help-doc.html#all-classes">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="All Classes and Interfaces" class="title">All Classes and Interfaces</h1>
    +</div>
    +<div id="all-classes-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="all-classes-table-tab0" role="tab" aria-selected="true" aria-controls="all-classes-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="all-classes-table-tab1" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab1', 2)" class="table-tab">Interfaces</button><button id="all-classes-table-tab2" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab2', 2)" class="table-tab">Classes</button><button id="all-classes-table-tab3" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab3', 2)" class="table-tab">Enum Classes</button><button id="all-classes-table-tab5" role="tab" aria-selected="false" aria-controls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('all-classes-table', 'all-classes-table-tab5', 2)" class="table-tab">Exception Classes</button></div>
    +<div id="all-classes-table.tabpanel" role="tabpanel">
    +<div class="summary-table two-column-summary" aria-labelledby="all-classes-table-tab0">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a>&lt;<a href="it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="type parameter in AbstractCard">R</a>,<wbr><a href="it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="type parameter in AbstractCard">T</a> extends <a href="it/polimi/is23am10/server/model/pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;<a href="it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="type parameter in AbstractCard">R</a>&gt;&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Abstract card object.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The abstract command class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">Opcodes to communicate the action taken by a player.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Abstract class representing a generic message exchanged.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">Enum for type of message sent.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;<a href="it/polimi/is23am10/server/model/pattern/AbstractPattern.html" title="type parameter in AbstractPattern">T</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Abstract pattern object.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The player connector class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/command/AddPlayerCommand.html" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The add new player to game command class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="it/polimi/is23am10/client/interfaces/AlarmConsumer.html" title="interface in it.polimi.is23am10.client.interfaces">AlarmConsumer</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">Custom functional interface definition for the application timer.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for duplicate <a href="it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card"><code>AbstractCard</code></a> <a href="it/polimi/is23am10/server/model/pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>AbstractPattern</code></a>
    + initialization.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/App.html" title="class in it.polimi.is23am10">App</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The entrypoint for the app.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The application config class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The server config context class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Parser for argument from CLI.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A message containing a list of available games to be sent to the client.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Game's board class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle board grid out of bounds column values.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle board grid out of bounds row values.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Players' bookshelf class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle bookshelf grid out of bounds column values.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle bookshelf grid out of bounds row values.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="it/polimi/is23am10/client/userinterface/guifactory/interfaces/BookShelfSelectionCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">BookShelfSelectionCallBack</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">The BookShelfSelectionCallBack interface represents a callback for bookshelf selection events.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="it/polimi/is23am10/client/userinterface/guifactory/interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">The ButtonCallBack interface represents a callback function that is invoked when a button is clicked.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The CallBack class provides various callback implementations used in the GUI.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A message sent via chat.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">An abstract class representing the app running in client mode.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="it/polimi/is23am10/client/Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">The three possible states in which the client can be.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/controller/ClientConnectionChecker.html" title="class in it.polimi.is23am10.server.controller">ClientConnectionChecker</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The server client connection checker class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">An helper class containing all the strings to display
    + to the user through UserInterface.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle index out of bounds values.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A client interface using command line as I/O.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Game mode string constants.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/controller/exceptions/CommandSerializationErrorException.html" title="class in it.polimi.is23am10.server.controller.exceptions">CommandSerializationErrorException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom runtime exception to handle <a href="it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command"><code>AbstractCommand.Opcode</code></a> deserialization errors.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/CommandSyntaxValidator.html" title="class in it.polimi.is23am10.utils">CommandSyntaxValidator</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Helper class to validate user input strings.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html" title="type parameter in ControllerConsumer">R</a>,<wbr><a href="it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html" title="type parameter in ControllerConsumer">C</a>&gt;</div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">Custom functional interface definition for the controller consumer.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The Coordinate helper class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The current player handler class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle duplicate player names inside a game instance.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A message containing an error message to be sent to the client.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab3"><a href="it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">Three degrees of severity.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Helper class to identify messages to be sent to client and to logger.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.html" title="class in it.polimi.is23am10.client.exceptions">ForceCloseApplicationException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Force application close.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/game/exceptions/FullGameException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">The game reached its maximum number of players.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The Game class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="it/polimi/is23am10/server/model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">All the possible status the game can be in.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/factory/GameFactory.html" title="class in it.polimi.is23am10.server.model.factory">GameFactory</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The GameFactory class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The match class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/messages/GameMessage.html" title="class in it.polimi.is23am10.server.network.messages">GameMessage</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A message containing a serialized JSON of a virtual view instance.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/network/gamehandler/exceptions/GameSnapshotUpdateException.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">GameSnapshotUpdateException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to wrap InterruptedException on game snapshot updates.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The command used by player to get the list of the games they can join.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A client interface using a graphic UI as I/O.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">GUI scene factory.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">An enum representing different scenes that can be created by the factory.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="it/polimi/is23am10/client/IClient.html" title="interface in it.polimi.is23am10.client">IClient</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">The <code>IClient</code> interface represents the remote interface for clients in a Java RMI application.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/IndexValidator.html" title="class in it.polimi.is23am10.utils">IndexValidator</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Index validator class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/utils/exceptions/InvalidArgumentException.html" title="class in it.polimi.is23am10.utils.exceptions">InvalidArgumentException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for invalid cli argument parsed.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/game/exceptions/InvalidBoardTileSelectionException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidBoardTileSelectionException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">The TileType given is not inside the enum of possible TileType.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/utils/config/exceptions/InvalidMaxConnectionsNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidMaxConnectionsNumberException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for invalid max connections number.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/game/exceptions/InvalidMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle invalid max players value.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/board/exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for wrong number of players.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/game/exceptions/InvalidPlayersNumberException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidPlayersNumberException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/utils/config/exceptions/InvalidPortNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for invalid port number.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab1"><a href="it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">The player connector interface definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">The server controller action interface definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/utils/exceptions/MissingParameterException.html" title="class in it.polimi.is23am10.utils.exceptions">MissingParameterException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for invalid cli argument parsed.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/MoveCommandHelper.html" title="class in it.polimi.is23am10.utils">MoveCommandHelper</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Helper class to convert input move from index to coordinates.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/MovesValidator.html" title="class in it.polimi.is23am10.utils">MovesValidator</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The game movement validator class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html" title="class in it.polimi.is23am10.utils">MoveTileCommandTypeAdaptor</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Custom deserializer class definition for Gson usage.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/command/MoveTilesCommand.html" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The move tiles command class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for negative matched block count Integer.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for not valid score block value.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/game/exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to null pattern instances.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/network/playerconnector/exceptions/NullBlockingQueueException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullBlockingQueueException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle null blocking queue instances.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/controller/exceptions/NullGameHandlerInstance.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle null game handler instances.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for null index values.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for null matched block count Integer.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/game/exceptions/NullMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle null max players value.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/board/exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for null number of players value.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Null player name exception.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/network/gamehandler/exceptions/NullPlayerConnector.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">NullPlayerConnector</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle null max player connectors.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/game/exceptions/NullPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullPlayerException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle null player value.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Null player id exception.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Null player name exception.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/factory/exceptions/NullPlayerNamesException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle null player names when checking for duplicates
    + in Player Factory.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Null player private card exception.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Null player score blocks exception.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Null player score exception.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/score/exceptions/NullPointsException.html" title="class in it.polimi.is23am10.server.model.score.exceptions">NullPointsException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle null points values.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/controller/exceptions/NullRmiServerException.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiServerException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom runtime exception to null RMI servers.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/controller/exceptions/NullRmiStubException.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiStubException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom runtime exception to null RMI stubs.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception for null score blocks list instance.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/network/playerconnector/exceptions/NullSocketConnectorException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullSocketConnectorException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle null socket client connector.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/NullTileException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Null Tile exception.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">An helper class with all the methods needed to properly print
    + CLI messages for client.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">Enum containing the output types.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The Player class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The player connector class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The player connector class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/factory/PlayerFactory.html" title="class in it.polimi.is23am10.server.model.factory">PlayerFactory</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The PlayerFactory class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/game/exceptions/PlayerNotFoundException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle player not found.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Private card class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="type parameter in PrivatePattern">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Private pattern object.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Private pattern factory object.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">PrivatePatternsHelper</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Map containing the private bookshelf patterns associated with an index.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/RMIClient.html" title="class in it.polimi.is23am10.client">RMIClient</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A client using RMI as communication method.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle index out of bounds values.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The Score class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">ScoreBlock class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/command/SendChatMessageCommand.html" title="class in it.polimi.is23am10.server.command">SendChatMessageCommand</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The command used by player to send a chat message.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/Server.html" title="class in it.polimi.is23am10.server">Server</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The Server entry point class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="it/polimi/is23am10/server/Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">The serverSocket status.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/controller/ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The server controller action class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/controller/ServerControllerSocket.html" title="class in it.polimi.is23am10.server.controller">ServerControllerSocket</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The server controller class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/controller/ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The server controller state class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/controller/ServerDebugPrefixString.html" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The server debug prefixes string interface definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Shared card object.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="it/polimi/is23am10/server/model/pattern/SharedPattern.html" title="type parameter in SharedPattern">T</a>&gt;</div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Shared pattern object.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Shared pattern factory object.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/messages/SnoozeACKMessage.html" title="class in it.polimi.is23am10.server.network.messages">SnoozeACKMessage</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">Class representing a ACK message sent from server to client
    + in response to a snooze command.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html" title="class in it.polimi.is23am10.server.command">SnoozeGameTimerCommand</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The snooze game timer command class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/client/SocketClient.html" title="class in it.polimi.is23am10.client">SocketClient</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A client using Socket as communication method.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/command/StartGameCommand.html" title="class in it.polimi.is23am10.server.command">StartGameCommand</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The start game command class definition.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="it/polimi/is23am10/client/userinterface/guifactory/interfaces/TextFieldCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">TextFieldCallBack</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">The TextFieldCallBack interface represents a callback that is invoked when a text field event occurs.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory.html" title="class in it.polimi.is23am10.utils">ThreadLocalTypeAdapterFactory</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">&nbsp;</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">The tile class definition.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab3"><a href="it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab3">
    +<div class="block">An enumeration about the available tile types.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab1"><a href="it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab1">
    +<div class="block">The user interface.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A virtual view with the state of a player, downscoped
    + to what is essential for the client to view</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab2"><a href="it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab2">
    +<div class="block">A virtual view with the state of the game, downscoped
    + to what is essential for the client to view</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/utils/exceptions/WrongBookShelfPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle wrong picks inside the book shelf.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongCharBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongCharBookshelfStringException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">One char in the bookshelfString is not among the possibles <a href="it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a>
    + Can be used public methods of <a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf"><code>Bookshelf</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/utils/exceptions/WrongGameBoardPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongGameBoardPicksException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle wrong picks inside the game board.</div>
    +</div>
    +<div class="col-first even-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongLengthBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongLengthBookshelfStringException</a></div>
    +<div class="col-last even-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">bookshelfString given to the constructor has wrong length
    + Can be used public methods of <a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf"><code>Bookshelf</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color all-classes-table all-classes-table-tab5"><a href="it/polimi/is23am10/utils/exceptions/WrongMovesNumberException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongMovesNumberException</a></div>
    +<div class="col-last odd-row-color all-classes-table all-classes-table-tab5">
    +<div class="block">Custom exception to handle wrong movements number.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/allpackages-index.html b/deliverables/javadoc/allpackages-index.html
    new file mode 100644
    index 00000000..55d1d65a
    --- /dev/null
    +++ b/deliverables/javadoc/allpackages-index.html
    @@ -0,0 +1,147 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>All Packages</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="package index">
    +<meta name="generator" content="javadoc/AllPackagesIndexWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="all-packages-index-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="index-files/index-1.html">Index</a></li>
    +<li><a href="help-doc.html#all-packages">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="All&amp;nbsp;Packages" class="title">All&nbsp;Packages</h1>
    +</div>
    +<div class="caption"><span>Package Summary</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/package-summary.html">it.polimi.is23am10</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/client/package-summary.html">it.polimi.is23am10.client</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/client/exceptions/package-summary.html">it.polimi.is23am10.client.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/client/interfaces/package-summary.html">it.polimi.is23am10.client.interfaces</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/client/userinterface/package-summary.html">it.polimi.is23am10.client.userinterface</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/client/userinterface/guifactory/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/client/userinterface/helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/package-summary.html">it.polimi.is23am10.server</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/controller/package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/controller/exceptions/package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/controller/interfaces/package-summary.html">it.polimi.is23am10.server.controller.interfaces</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/model/factory/package-summary.html">it.polimi.is23am10.server.model.factory</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/model/factory/exceptions/package-summary.html">it.polimi.is23am10.server.model.factory.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/model/game/package-summary.html">it.polimi.is23am10.server.model.game</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/model/items/board/package-summary.html">it.polimi.is23am10.server.model.items.board</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/model/items/bookshelf/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/model/items/card/package-summary.html">it.polimi.is23am10.server.model.items.card</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/model/items/scoreblock/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/model/items/tile/package-summary.html">it.polimi.is23am10.server.model.items.tile</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/model/pattern/package-summary.html">it.polimi.is23am10.server.model.pattern</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/model/player/package-summary.html">it.polimi.is23am10.server.model.player</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/model/player/exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/model/score/package-summary.html">it.polimi.is23am10.server.model.score</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/model/score/exceptions/package-summary.html">it.polimi.is23am10.server.model.score.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/network/gamehandler/package-summary.html">it.polimi.is23am10.server.network.gamehandler</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/network/gamehandler/exceptions/package-summary.html">it.polimi.is23am10.server.network.gamehandler.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/network/playerconnector/package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/network/playerconnector/exceptions/package-summary.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/server/network/playerconnector/interfaces/package-summary.html">it.polimi.is23am10.server.network.playerconnector.interfaces</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/server/network/virtualview/package-summary.html">it.polimi.is23am10.server.network.virtualview</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/utils/config/package-summary.html">it.polimi.is23am10.utils.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="it/polimi/is23am10/utils/config/exceptions/package-summary.html">it.polimi.is23am10.utils.config.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/constant-values.html b/deliverables/javadoc/constant-values.html
    new file mode 100644
    index 00000000..65c3e313
    --- /dev/null
    +++ b/deliverables/javadoc/constant-values.html
    @@ -0,0 +1,590 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Constant Field Values</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="summary of constants">
    +<meta name="generator" content="javadoc/ConstantsSummaryWriterImpl">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="constants-summary-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="index-files/index-1.html">Index</a></li>
    +<li><a href="help-doc.html#constant-values">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Constant Field Values" class="title">Constant Field Values</h1>
    +<section class="packages">
    +<h2 title="Contents">Contents</h2>
    +<ul>
    +<li><a href="#it.polimi">it.polimi.*</a></li>
    +</ul>
    +</section>
    +</div>
    +<section class="constants-summary" id="it.polimi">
    +<h2 title="it.polimi.*">it.polimi.*</h2>
    +<ul class="block-list">
    +<li>
    +<div class="caption"><span>it.polimi.is23am10.client.userinterface.helpers.<a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Constant Field</div>
    +<div class="table-header col-last">Value</div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK">BLACK</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;30m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_BACKGROUND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_BACKGROUND">BLACK_BACKGROUND</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[40m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_BACKGROUND_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_BACKGROUND_BRIGHT">BLACK_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;100m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_BOLD">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_BOLD">BLACK_BOLD</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[1;30m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_BOLD_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_BOLD_BRIGHT">BLACK_BOLD_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[1;90m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_BRIGHT">BLACK_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;90m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_UNDERLINED">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_UNDERLINED">BLACK_UNDERLINED</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[4;30m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE">BLUE</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;34m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_BACKGROUND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_BACKGROUND">BLUE_BACKGROUND</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[44m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_BACKGROUND_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_BACKGROUND_BRIGHT">BLUE_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;104m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_BOLD">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_BOLD">BLUE_BOLD</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[1;34m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_BOLD_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_BOLD_BRIGHT">BLUE_BOLD_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[1;94m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_BRIGHT">BLUE_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;94m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_UNDERLINED">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_UNDERLINED">BLUE_UNDERLINED</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[4;34m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN">CYAN</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;36m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_BACKGROUND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_BACKGROUND">CYAN_BACKGROUND</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[46m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_BACKGROUND_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_BACKGROUND_BRIGHT">CYAN_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;106m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_BOLD">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_BOLD">CYAN_BOLD</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[1;36m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_BOLD_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_BOLD_BRIGHT">CYAN_BOLD_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[1;96m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_BRIGHT">CYAN_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;96m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_UNDERLINED">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_UNDERLINED">CYAN_UNDERLINED</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[4;36m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN">GREEN</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;32m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_BACKGROUND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_BACKGROUND">GREEN_BACKGROUND</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[42m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_BACKGROUND_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_BACKGROUND_BRIGHT">GREEN_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;102m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_BOLD">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_BOLD">GREEN_BOLD</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[1;32m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_BOLD_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_BOLD_BRIGHT">GREEN_BOLD_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[1;92m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_BRIGHT">GREEN_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;92m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_UNDERLINED">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_UNDERLINED">GREEN_UNDERLINED</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[4;32m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE">PURPLE</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;35m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_BACKGROUND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_BACKGROUND">PURPLE_BACKGROUND</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[45m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_BACKGROUND_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_BACKGROUND_BRIGHT">PURPLE_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;105m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_BOLD">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_BOLD">PURPLE_BOLD</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[1;35m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_BOLD_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_BOLD_BRIGHT">PURPLE_BOLD_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[1;95m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_BRIGHT">PURPLE_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;95m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_UNDERLINED">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_UNDERLINED">PURPLE_UNDERLINED</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[4;35m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED">RED</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;31m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_BACKGROUND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_BACKGROUND">RED_BACKGROUND</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[41m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_BACKGROUND_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_BACKGROUND_BRIGHT">RED_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;101m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_BOLD">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_BOLD">RED_BOLD</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[1;31m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_BOLD_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_BOLD_BRIGHT">RED_BOLD_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[1;91m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_BRIGHT">RED_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;91m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_UNDERLINED">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_UNDERLINED">RED_UNDERLINED</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[4;31m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RESET">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RESET">RESET</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE">WHITE</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;37m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_BACKGROUND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_BACKGROUND">WHITE_BACKGROUND</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[47m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_BACKGROUND_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_BACKGROUND_BRIGHT">WHITE_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;107m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_BOLD">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_BOLD">WHITE_BOLD</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[1;37m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_BOLD_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_BOLD_BRIGHT">WHITE_BOLD_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[1;97m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_BRIGHT">WHITE_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;97m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_UNDERLINED">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_UNDERLINED">WHITE_UNDERLINED</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[4;37m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW">YELLOW</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;33m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_BACKGROUND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_BACKGROUND">YELLOW_BACKGROUND</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[43m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_BACKGROUND_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_BACKGROUND_BRIGHT">YELLOW_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[0;103m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_BOLD">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_BOLD">YELLOW_BOLD</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[1;33m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_BOLD_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_BOLD_BRIGHT">YELLOW_BOLD_BRIGHT</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[1;93m"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_BRIGHT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_BRIGHT">YELLOW_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[0;93m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_UNDERLINED">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_UNDERLINED">YELLOW_UNDERLINED</a></code></div>
    +<div class="col-last even-row-color"><code>"\u001b[4;33m"</code></div>
    +</div>
    +</li>
    +<li>
    +<div class="caption"><span>it.polimi.is23am10.client.userinterface.helpers.<a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Constant Field</div>
    +<div class="table-header col-last">Value</div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.availableGameString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#availableGameString">availableGameString</a></code></div>
    +<div class="col-last even-row-color"><code>"[%d] - %d/%d joined%s - GameId: %s"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.blackLargeSquare">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#blackLargeSquare">blackLargeSquare</a></code></div>
    +<div class="col-last odd-row-color"><code>""</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.blackSquareTab">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#blackSquareTab">blackSquareTab</a></code></div>
    +<div class="col-last even-row-color"><code>"\u2b1b\t"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.boardStatus">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#boardStatus">boardStatus</a></code></div>
    +<div class="col-last odd-row-color"><code>"\n\tGame board status:\t\n"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.bookshelfError">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#bookshelfError">bookshelfError</a></code></div>
    +<div class="col-last even-row-color"><code>"Wrong bookshelf coordinates!"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.bookshelfPoints">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#bookshelfPoints">bookshelfPoints</a></code></div>
    +<div class="col-last odd-row-color"><code>"Bookshelf Points"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.bottomPaddingBoard">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#bottomPaddingBoard">bottomPaddingBoard</a></code></div>
    +<div class="col-last even-row-color"><code>"\t\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\n\n"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.broadcastErrorString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#broadcastErrorString">broadcastErrorString</a></code></div>
    +<div class="col-last odd-row-color"><code>"(Server -&gt; All): %s"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.broadcastMessageString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#broadcastMessageString">broadcastMessageString</a></code></div>
    +<div class="col-last even-row-color"><code>"(%s -&gt; All): %s"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.createGame">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#createGame">createGame</a></code></div>
    +<div class="col-last odd-row-color"><code>" - To create a new game run the command `c [2-4]` specifying the number of players."</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.currentStateString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#currentStateString">currentStateString</a></code></div>
    +<div class="col-last even-row-color"><code>"Current state of the game:"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.description">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#description">description</a></code></div>
    +<div class="col-last odd-row-color"><code>"Card Description"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.disconnectedPlayers">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#disconnectedPlayers">disconnectedPlayers</a></code></div>
    +<div class="col-last even-row-color"><code>" (%d disconnected)"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.doubleNewLine">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#doubleNewLine">doubleNewLine</a></code></div>
    +<div class="col-last odd-row-color"><code>"\n\n"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.errorMessage">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#errorMessage">errorMessage</a></code></div>
    +<div class="col-last even-row-color"><code>"(Server -&gt; You): %s"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.extraPoints">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#extraPoints">extraPoints</a></code></div>
    +<div class="col-last odd-row-color"><code>"Extra Points"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.firstPlayer">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#firstPlayer">firstPlayer</a></code></div>
    +<div class="col-last even-row-color"><code>"First Player"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.gameOverString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#gameOverString">gameOverString</a></code></div>
    +<div class="col-last odd-row-color"><code>"Game is over. Here the leaderboard:"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.idx">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#idx">idx</a></code></div>
    +<div class="col-last even-row-color"><code>"Shared Card Idx."</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.indexBoard">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#indexBoard">indexBoard</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u001b[1;31m\t X\u001b[0m 0 1 2 3 4 5 6 7 8\t"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.indexBookshelf">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#indexBookshelf">indexBookshelf</a></code></div>
    +<div class="col-last even-row-color"><code>"\t  A B C D E \t"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.inputError">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#inputError">inputError</a></code></div>
    +<div class="col-last odd-row-color"><code>"Can\'t read your commands. Please re-join."</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.insertPlayerNameString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#insertPlayerNameString">insertPlayerNameString</a></code></div>
    +<div class="col-last even-row-color"><code>"Insert your player name here:"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.joinExisting">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#joinExisting">joinExisting</a></code></div>
    +<div class="col-last odd-row-color"><code>" - To join an existing game run the command `j [idx]` specifying by the index of the game."</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.joinOrCreateString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#joinOrCreateString">joinOrCreateString</a></code></div>
    +<div class="col-last even-row-color"><code>"Great! Please choose how to proceed. You can create a new game or join an existing one."</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.lastRoundString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#lastRoundString">lastRoundString</a></code></div>
    +<div class="col-last odd-row-color"><code>"Attention! Someone already completed their Bookshelf: this is last round"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.line">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#line">line</a></code></div>
    +<div class="col-last even-row-color"><code>"-"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.listGamesString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#listGamesString">listGamesString</a></code></div>
    +<div class="col-last odd-row-color"><code>"Here a list of the available games. Join one by typing the relative index."</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.messageStringReceiver">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#messageStringReceiver">messageStringReceiver</a></code></div>
    +<div class="col-last even-row-color"><code>"(%s -&gt; You): %s"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.messageStringSender">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#messageStringSender">messageStringSender</a></code></div>
    +<div class="col-last odd-row-color"><code>"(You -&gt; %s): %s"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.moveTilesExampleString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#moveTilesExampleString">moveTilesExampleString</a></code></div>
    +<div class="col-last even-row-color"><code>"E.g. `move 12 22 25 A` moves the tiles with coordinates (1,2),(2,5) and (5,7) to the bookshelf first three available spots in your bookshelf column \'A\' in that order."</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.moveTilesInviteString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#moveTilesInviteString">moveTilesInviteString</a></code></div>
    +<div class="col-last odd-row-color"><code>"Now make your move specifying the `XY` of the tile you want to pick from board (max 3) followed by the column index of the bookshelf you want to put the tile in."</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.N">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#N">N</a></code></div>
    +<div class="col-last even-row-color"><code>"No."</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.newLine">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#newLine">newLine</a></code></div>
    +<div class="col-last odd-row-color"><code>"\n"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.noGamesString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#noGamesString">noGamesString</a></code></div>
    +<div class="col-last even-row-color"><code>"No available game to join at the moment. Please create one."</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.nowPlaying">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#nowPlaying">nowPlaying</a></code></div>
    +<div class="col-last odd-row-color"><code>"Now playing: %s"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.paddingBookshelf">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#paddingBookshelf">paddingBookshelf</a></code></div>
    +<div class="col-last even-row-color"><code>"\t\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\t"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.player">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#player">player</a></code></div>
    +<div class="col-last odd-row-color"><code>"Player"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.playerIdx">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#playerIdx">playerIdx</a></code></div>
    +<div class="col-last even-row-color"><code>"\tPlayer #%d\t"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.playerScoreString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#playerScoreString">playerScoreString</a></code></div>
    +<div class="col-last odd-row-color"><code>"%s - Score: %d"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.privateCardIdx">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#privateCardIdx">privateCardIdx</a></code></div>
    +<div class="col-last even-row-color"><code>"\tPrivate Card #%d\t"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.privatePoints">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#privatePoints">privatePoints</a></code></div>
    +<div class="col-last odd-row-color"><code>"Private Points"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.role">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#role">role</a></code></div>
    +<div class="col-last even-row-color"><code>"Role"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.scoreBlockPoints">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#scoreBlockPoints">scoreBlockPoints</a></code></div>
    +<div class="col-last odd-row-color"><code>"Score Block Points"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.sharedCardHeaderDescription">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#sharedCardHeaderDescription">sharedCardHeaderDescription</a></code></div>
    +<div class="col-last even-row-color"><code>"s "</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.sharedCardsBodyDescription">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#sharedCardsBodyDescription">sharedCardsBodyDescription</a></code></div>
    +<div class="col-last odd-row-color"><code>"s "</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.status">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#status">status</a></code></div>
    +<div class="col-last even-row-color"><code>"Status"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.tab">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#tab">tab</a></code></div>
    +<div class="col-last odd-row-color"><code>"\t"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.tabBlackSquare">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#tabBlackSquare">tabBlackSquare</a></code></div>
    +<div class="col-last even-row-color"><code>"\t\u2b1b"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.topPaddingBoard">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#topPaddingBoard">topPaddingBoard</a></code></div>
    +<div class="col-last odd-row-color"><code>"\t\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u2b1b\u001b[1;31m Y\t\u001b[0m"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.totalScore">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#totalScore">totalScore</a></code></div>
    +<div class="col-last even-row-color"><code>"Total Score"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.verticalBoardIndex">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#verticalBoardIndex">verticalBoardIndex</a></code></div>
    +<div class="col-last odd-row-color"><code>"\u2b1b %d\t"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.waitingForPlayers">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#waitingForPlayers">waitingForPlayers</a></code></div>
    +<div class="col-last even-row-color"><code>"Waiting for game to be full before starting, %d/%d joined. GameID: %s"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.welcomeString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#welcomeString">welcomeString</a></code></div>
    +<div class="col-last odd-row-color"><code>"  \u2588\u2588\u2588    \u2588\u2588\u2588 \u2588\u2588    \u2588\u2588     \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588   \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588      \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\n  \u2588\u2588\u2588\u2588  \u2588\u2588\u2588\u2588  \u2588\u2588  \u2588\u2588      \u2588\u2588      \u2588\u2588   \u2588\u2588 \u2588\u2588      \u2588\u2588      \u2588\u2588      \u2588\u2588 \u2588\u2588\n  \u2588\u2588 \u2588\u2588\u2588\u2588 \u2588\u2588   \u2588\u2588\u2588\u2588       \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588   \u2588\u2588      \u2588\u2588\u2588\u2588\u2588   \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\n  \u2588\u2588  \u2588\u2588  \u2588\u2588    \u2588\u2588             \u2588\u2588 \u2588\u2588   \u2588\u2588 \u2588\u2588      \u2588\u2588      \u2588\u2588      \u2588\u2588 \u2588\u2588\n  \u2588\u2588      \u2588\u2588    \u2588\u2588        \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588   \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588 \u2588\u2588      \u2588\u2588 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\n\n  Politecnico di Milano - Software Engineering Project - Group IS23AM10\n\n"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.winnerString">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#winnerString">winnerString</a></code></div>
    +<div class="col-last even-row-color"><code>"WINNER: %s"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CLIStrings.yourTurn">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#yourTurn">yourTurn</a></code></div>
    +<div class="col-last odd-row-color"><code>"Your turn"</code></div>
    +</div>
    +</li>
    +<li>
    +<div class="caption"><span>it.polimi.is23am10.client.userinterface.helpers.<a href="it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Constant Field</div>
    +<div class="table-header col-last">Value</div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder.CREATE_GAME">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#CREATE_GAME">CREATE_GAME</a></code></div>
    +<div class="col-last even-row-color"><code>"c"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder.JOIN_GAME">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#JOIN_GAME">JOIN_GAME</a></code></div>
    +<div class="col-last odd-row-color"><code>"j"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder.MOVE_TILE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#MOVE_TILE">MOVE_TILE</a></code></div>
    +<div class="col-last even-row-color"><code>"move"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder.SEND_MESSAGE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#SEND_MESSAGE">SEND_MESSAGE</a></code></div>
    +<div class="col-last odd-row-color"><code>"chat"</code></div>
    +</div>
    +</li>
    +</ul>
    +<ul class="block-list">
    +<li>
    +<div class="caption"><span>it.polimi.is23am10.server.controller.<a href="it/polimi/is23am10/server/controller/ServerDebugPrefixString.html" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Constant Field</div>
    +<div class="table-header col-last">Value</div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.server.controller.ServerDebugPrefixString.ADD_PLAYER_COMMAND_PREFIX">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/server/controller/ServerDebugPrefixString.html#ADD_PLAYER_COMMAND_PREFIX">ADD_PLAYER_COMMAND_PREFIX</a></code></div>
    +<div class="col-last even-row-color"><code>"ADD_PLAYER -&gt;"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.server.controller.ServerDebugPrefixString.MOVE_TILES_COMMAND_PREFIX">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/server/controller/ServerDebugPrefixString.html#MOVE_TILES_COMMAND_PREFIX">MOVE_TILES_COMMAND_PREFIX</a></code></div>
    +<div class="col-last odd-row-color"><code>"MOVE_TILES -&gt;"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.server.controller.ServerDebugPrefixString.SEND_CHAT_MESSAGE_COMMAND_PREFIX">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/server/controller/ServerDebugPrefixString.html#SEND_CHAT_MESSAGE_COMMAND_PREFIX">SEND_CHAT_MESSAGE_COMMAND_PREFIX</a></code></div>
    +<div class="col-last even-row-color"><code>"SEND_CHAT_MESSAGE -&gt;"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.server.controller.ServerDebugPrefixString.SNOOZE_TIMER_COMMAND_PREFIX">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/server/controller/ServerDebugPrefixString.html#SNOOZE_TIMER_COMMAND_PREFIX">SNOOZE_TIMER_COMMAND_PREFIX</a></code></div>
    +<div class="col-last odd-row-color"><code>"SNOOZE_TIMER -&gt;"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.server.controller.ServerDebugPrefixString.START_COMMAND_PREFIX">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/server/controller/ServerDebugPrefixString.html#START_COMMAND_PREFIX">START_COMMAND_PREFIX</a></code></div>
    +<div class="col-last even-row-color"><code>"START -&gt;"</code></div>
    +</div>
    +</li>
    +</ul>
    +<ul class="block-list">
    +<li>
    +<div class="caption"><span>it.polimi.is23am10.server.model.items.bookshelf.<a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Constant Field</div>
    +<div class="table-header col-last">Value</div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf.BOOKSHELF_COLS">public&nbsp;static&nbsp;final&nbsp;int</code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#BOOKSHELF_COLS">BOOKSHELF_COLS</a></code></div>
    +<div class="col-last even-row-color"><code>5</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf.BOOKSHELF_ROWS">public&nbsp;static&nbsp;final&nbsp;int</code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#BOOKSHELF_ROWS">BOOKSHELF_ROWS</a></code></div>
    +<div class="col-last odd-row-color"><code>6</code></div>
    +</div>
    +</li>
    +</ul>
    +<ul class="block-list">
    +<li>
    +<div class="caption"><span>it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Constant Field</div>
    +<div class="table-header col-last">Value</div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ArgParser.DEBUG_CLI_COMMAND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ArgParser.html#DEBUG_CLI_COMMAND">DEBUG_CLI_COMMAND</a></code></div>
    +<div class="col-last even-row-color"><code>"--debug"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ArgParser.IS_SERVER_CLI_COMMAND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ArgParser.html#IS_SERVER_CLI_COMMAND">IS_SERVER_CLI_COMMAND</a></code></div>
    +<div class="col-last odd-row-color"><code>"--is-server"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ArgParser.KEEP_ALIVE_CLI_COMMAND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ArgParser.html#KEEP_ALIVE_CLI_COMMAND">KEEP_ALIVE_CLI_COMMAND</a></code></div>
    +<div class="col-last even-row-color"><code>"--keep-alive"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ArgParser.MAX_CLIENT_INACTIVITY_TIME">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ArgParser.html#MAX_CLIENT_INACTIVITY_TIME">MAX_CLIENT_INACTIVITY_TIME</a></code></div>
    +<div class="col-last odd-row-color"><code>"--max-player-inactive-ms"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ArgParser.MAX_CONNECTIONS_CLI_COMMAND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ArgParser.html#MAX_CONNECTIONS_CLI_COMMAND">MAX_CONNECTIONS_CLI_COMMAND</a></code></div>
    +<div class="col-last even-row-color"><code>"--max-connections"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ArgParser.RMI_PORT_CLI_COMMAND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ArgParser.html#RMI_PORT_CLI_COMMAND">RMI_PORT_CLI_COMMAND</a></code></div>
    +<div class="col-last odd-row-color"><code>"--rmi-port"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ArgParser.SERVER_ADDRESS_CLI_COMMAND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ArgParser.html#SERVER_ADDRESS_CLI_COMMAND">SERVER_ADDRESS_CLI_COMMAND</a></code></div>
    +<div class="col-last even-row-color"><code>"--address"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ArgParser.SHOW_GUI_CLI_COMMAND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ArgParser.html#SHOW_GUI_CLI_COMMAND">SHOW_GUI_CLI_COMMAND</a></code></div>
    +<div class="col-last odd-row-color"><code>"--show-gui"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ArgParser.SOCKET_PORT_CLI_COMMAND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ArgParser.html#SOCKET_PORT_CLI_COMMAND">SOCKET_PORT_CLI_COMMAND</a></code></div>
    +<div class="col-last even-row-color"><code>"--socket-port"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ArgParser.USE_RMI_CLI_COMMAND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ArgParser.html#USE_RMI_CLI_COMMAND">USE_RMI_CLI_COMMAND</a></code></div>
    +<div class="col-last odd-row-color"><code>"--use-rmi"</code></div>
    +</div>
    +</li>
    +<li>
    +<div class="caption"><span>it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Constant Field</div>
    +<div class="table-header col-last">Value</div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_ADDING_CONNECTOR">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_ADDING_CONNECTOR">ERROR_ADDING_CONNECTOR</a></code></div>
    +<div class="col-last even-row-color"><code>"Failed to add player connector"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_ADDING_HANDLER">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_ADDING_HANDLER">ERROR_ADDING_HANDLER</a></code></div>
    +<div class="col-last odd-row-color"><code>"Failed to add game handler"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_ADDING_PLAYERS">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_ADDING_PLAYERS">ERROR_ADDING_PLAYERS</a></code></div>
    +<div class="col-last even-row-color"><code>"Failed to add player. Please consider re-joining."</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_GAME_FULL">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_GAME_FULL">ERROR_GAME_FULL</a></code></div>
    +<div class="col-last odd-row-color"><code>"This game is already full. Please join another game or create one."</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_GAME_STATE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_GAME_STATE">ERROR_GAME_STATE</a></code></div>
    +<div class="col-last even-row-color"><code>"Severe game state failure"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_INITIALIZING_NEW_GAME">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_INITIALIZING_NEW_GAME">ERROR_INITIALIZING_NEW_GAME</a></code></div>
    +<div class="col-last odd-row-color"><code>"Failed to initialize new game. Please try again."</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_INVALID_MOVE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_INVALID_MOVE">ERROR_INVALID_MOVE</a></code></div>
    +<div class="col-last even-row-color"><code>"Failed to execute the moves. Please try again."</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_JOINING">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_JOINING">ERROR_JOINING</a></code></div>
    +<div class="col-last odd-row-color"><code>"Failed to add player. Please consider re-joining."</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_MESSAGE_DELIVERY">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_MESSAGE_DELIVERY">ERROR_MESSAGE_DELIVERY</a></code></div>
    +<div class="col-last even-row-color"><code>"Thread interruption or Remote call failure"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_RMI_EXPOSURE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_RMI_EXPOSURE">ERROR_RMI_EXPOSURE</a></code></div>
    +<div class="col-last odd-row-color"><code>"Failed to rebind RMI player connector"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_SERVER_SIDE">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_SERVER_SIDE">ERROR_SERVER_SIDE</a></code></div>
    +<div class="col-last even-row-color"><code>"Generic server-side failure."</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_SNOOZING_TIMER">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_SNOOZING_TIMER">ERROR_SNOOZING_TIMER</a></code></div>
    +<div class="col-last odd-row-color"><code>"Failed snooze player timer"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_SOCKET_CONNECTOR">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_SOCKET_CONNECTOR">ERROR_SOCKET_CONNECTOR</a></code></div>
    +<div class="col-last even-row-color"><code>"Failed to get socket connector"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.ERROR_UPDATING_GAME">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_UPDATING_GAME">ERROR_UPDATING_GAME</a></code></div>
    +<div class="col-last odd-row-color"><code>"Failed to deliver game snapshot to user."</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.RECEIVER_NOT_FOUND">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#RECEIVER_NOT_FOUND">RECEIVER_NOT_FOUND</a></code></div>
    +<div class="col-last even-row-color"><code>"Player not found, message couldn\'t be delivered"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.WARNING_PLAYER_DISCONNECT">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#WARNING_PLAYER_DISCONNECT">WARNING_PLAYER_DISCONNECT</a></code></div>
    +<div class="col-last odd-row-color"><code>"Player %s disconnected from the game. Their turn will be skipped."</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.WARNING_PLAYER_JOIN">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#WARNING_PLAYER_JOIN">WARNING_PLAYER_JOIN</a></code></div>
    +<div class="col-last even-row-color"><code>"Player %s joined the game!"</code></div>
    +<div class="col-first odd-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.WARNING_PLAYER_JOIN_SERVER">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#WARNING_PLAYER_JOIN_SERVER">WARNING_PLAYER_JOIN_SERVER</a></code></div>
    +<div class="col-last odd-row-color"><code>"Player %s joined the game %s"</code></div>
    +<div class="col-first even-row-color"><code id="it.polimi.is23am10.utils.ErrorTypeString.WARNING_PLAYER_REJOIN">public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="it/polimi/is23am10/utils/ErrorTypeString.html#WARNING_PLAYER_REJOIN">WARNING_PLAYER_REJOIN</a></code></div>
    +<div class="col-last even-row-color"><code>"Player %s rejoined the game! Welcome back."</code></div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/copy.svg b/deliverables/javadoc/copy.svg
    new file mode 100644
    index 00000000..7c46ab15
    --- /dev/null
    +++ b/deliverables/javadoc/copy.svg
    @@ -0,0 +1,33 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +
    +<!--
    + Copyright (c) 2021, Oracle and/or its affiliates. All rights reserved.
    + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    +
    + This code is free software; you can redistribute it and/or modify it
    + under the terms of the GNU General Public License version 2 only, as
    + published by the Free Software Foundation.  Oracle designates this
    + particular file as subject to the "Classpath" exception as provided
    + by Oracle in the LICENSE file that accompanied this code.
    +
    + This code is distributed in the hope that it will be useful, but WITHOUT
    + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    + FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    + version 2 for more details (a copy is included in the LICENSE file that
    + accompanied this code).
    +
    + You should have received a copy of the GNU General Public License version
    + 2 along with this work; if not, write to the Free Software Foundation,
    + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    +
    + Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    + or visit www.oracle.com if you need additional information or have any
    + questions.
    +-->
    +
    +<svg version="1.1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 380 460" fill="#505050">
    +  <path
    +     d="M 346,8 H 108 C 90,8 75,23 75,41 v 316 c 0,18 15,33 33,33 h 238 c 18,0 33,-15 33,-33 V 41 C 379,23 364,8 346,8 Z m -8,344 H 116 c -2,0 -3,-1 -3,-3 V 49 c 0,-2 1,-3 3,-3 h 222 c 2,0 3,1 3,3 v 300 h 10e-4 c 0,2 -1,3 -3,3 z"/>
    +  <path
    +     d="m 290,389 v 26 h 10e-4 c 0,2 -1,3 -3,3 H 49 c -2,0 -3,-1 -3,-3 V 99 c 0,-2 1,-3 3,-3 h 27 v 0 l -5e-4,-38 H 41 C 23,58 8,73 8,91 v 332 c 10e-4,18 15,33 33,33 h 254 c 18,0 33,-15 33,-33 v -34"/>
    +</svg>
    diff --git a/deliverables/javadoc/element-list b/deliverables/javadoc/element-list
    new file mode 100644
    index 00000000..cc770b88
    --- /dev/null
    +++ b/deliverables/javadoc/element-list
    @@ -0,0 +1,42 @@
    +it.polimi.is23am10
    +it.polimi.is23am10.client
    +it.polimi.is23am10.client.exceptions
    +it.polimi.is23am10.client.interfaces
    +it.polimi.is23am10.client.userinterface
    +it.polimi.is23am10.client.userinterface.guifactory
    +it.polimi.is23am10.client.userinterface.guifactory.interfaces
    +it.polimi.is23am10.client.userinterface.helpers
    +it.polimi.is23am10.server
    +it.polimi.is23am10.server.command
    +it.polimi.is23am10.server.controller
    +it.polimi.is23am10.server.controller.exceptions
    +it.polimi.is23am10.server.controller.interfaces
    +it.polimi.is23am10.server.model.factory
    +it.polimi.is23am10.server.model.factory.exceptions
    +it.polimi.is23am10.server.model.game
    +it.polimi.is23am10.server.model.game.exceptions
    +it.polimi.is23am10.server.model.items.board
    +it.polimi.is23am10.server.model.items.board.exceptions
    +it.polimi.is23am10.server.model.items.bookshelf
    +it.polimi.is23am10.server.model.items.bookshelf.exceptions
    +it.polimi.is23am10.server.model.items.card
    +it.polimi.is23am10.server.model.items.card.exceptions
    +it.polimi.is23am10.server.model.items.scoreblock
    +it.polimi.is23am10.server.model.items.scoreblock.exceptions
    +it.polimi.is23am10.server.model.items.tile
    +it.polimi.is23am10.server.model.pattern
    +it.polimi.is23am10.server.model.player
    +it.polimi.is23am10.server.model.player.exceptions
    +it.polimi.is23am10.server.model.score
    +it.polimi.is23am10.server.model.score.exceptions
    +it.polimi.is23am10.server.network.gamehandler
    +it.polimi.is23am10.server.network.gamehandler.exceptions
    +it.polimi.is23am10.server.network.messages
    +it.polimi.is23am10.server.network.playerconnector
    +it.polimi.is23am10.server.network.playerconnector.exceptions
    +it.polimi.is23am10.server.network.playerconnector.interfaces
    +it.polimi.is23am10.server.network.virtualview
    +it.polimi.is23am10.utils
    +it.polimi.is23am10.utils.config
    +it.polimi.is23am10.utils.config.exceptions
    +it.polimi.is23am10.utils.exceptions
    diff --git a/deliverables/javadoc/help-doc.html b/deliverables/javadoc/help-doc.html
    new file mode 100644
    index 00000000..89e34d8d
    --- /dev/null
    +++ b/deliverables/javadoc/help-doc.html
    @@ -0,0 +1,194 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>API Help</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="help">
    +<meta name="generator" content="javadoc/HelpWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="help-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="index-files/index-1.html">Index</a></li>
    +<li class="nav-bar-cell1-rev">Help</li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Help:</p>
    +<ul>
    +<li><a href="#help-navigation">Navigation</a></li>
    +<li><a href="#help-pages">Pages</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Help:&nbsp;</li>
    +<li><a href="#help-navigation">Navigation</a>&nbsp;|&nbsp;</li>
    +<li><a href="#help-pages">Pages</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<h1 class="title">JavaDoc Help</h1>
    +<ul class="help-toc">
    +<li><a href="#help-navigation">Navigation</a>: 
    +<ul class="help-subtoc">
    +<li><a href="#search">Search</a></li>
    +</ul>
    +</li>
    +<li><a href="#help-pages">Kinds of Pages</a>: 
    +<ul class="help-subtoc">
    +<li><a href="#overview">Overview</a></li>
    +<li><a href="#package">Package</a></li>
    +<li><a href="#class">Class or Interface</a></li>
    +<li><a href="#doc-file">Other Files</a></li>
    +<li><a href="#tree">Tree (Class Hierarchy)</a></li>
    +<li><a href="#constant-values">Constant Field Values</a></li>
    +<li><a href="#serialized-form">Serialized Form</a></li>
    +<li><a href="#all-packages">All Packages</a></li>
    +<li><a href="#all-classes">All Classes and Interfaces</a></li>
    +<li><a href="#index">Index</a></li>
    +</ul>
    +</li>
    +</ul>
    +<hr>
    +<div class="sub-title">
    +<h2 id="help-navigation">Navigation</h2>
    +Starting from the <a href="index.html">Overview</a> page, you can browse the documentation using the links in each page, and in the navigation bar at the top of each page. The <a href="index-files/index-1.html">Index</a> and Search box allow you to navigate to specific declarations and summary pages, including: <a href="allpackages-index.html">All Packages</a>, <a href="allclasses-index.html">All Classes and Interfaces</a>
    +<section class="help-section" id="search">
    +<h3>Search</h3>
    +<p>You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API. These items can be searched using part or all of the name, optionally using "camelCase" abbreviations, or multiple search terms separated by whitespace. Some examples:</p>
    +<ul class="help-section-list">
    +<li><code>"j.l.obj"</code> matches "java.lang.Object"</li>
    +<li><code>"InpStr"</code> matches "java.io.InputStream"</li>
    +<li><code>"math exact long"</code> matches "java.lang.Math.absExact(long)"</li>
    +</ul>
    +<p>Refer to the <a href="https://docs.oracle.com/en/java/javase/19/docs/specs/javadoc/javadoc-search-spec.html">Javadoc Search Specification</a> for a full description of search features.</p>
    +</section>
    +</div>
    +<hr>
    +<div class="sub-title">
    +<h2 id="help-pages">Kinds of Pages</h2>
    +The following sections describe the different kinds of pages in this collection.
    +<section class="help-section" id="overview">
    +<h3>Overview</h3>
    +<p>The <a href="index.html">Overview</a> page is the front page of this API document and provides a list of all packages with a summary for each.  This page can also contain an overall description of the set of packages.</p>
    +</section>
    +<section class="help-section" id="package">
    +<h3>Package</h3>
    +<p>Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain the following categories:</p>
    +<ul class="help-section-list">
    +<li>Interfaces</li>
    +<li>Classes</li>
    +<li>Enum Classes</li>
    +<li>Exception Classes</li>
    +<li>Annotation Interfaces</li>
    +</ul>
    +</section>
    +<section class="help-section" id="class">
    +<h3>Class or Interface</h3>
    +<p>Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a declaration and description, member summary tables, and detailed member descriptions. Entries in each of these sections are omitted if they are empty or not applicable.</p>
    +<ul class="help-section-list">
    +<li>Class Inheritance Diagram</li>
    +<li>Direct Subclasses</li>
    +<li>All Known Subinterfaces</li>
    +<li>All Known Implementing Classes</li>
    +<li>Class or Interface Declaration</li>
    +<li>Class or Interface Description</li>
    +</ul>
    +<br>
    +<ul class="help-section-list">
    +<li>Nested Class Summary</li>
    +<li>Enum Constant Summary</li>
    +<li>Field Summary</li>
    +<li>Property Summary</li>
    +<li>Constructor Summary</li>
    +<li>Method Summary</li>
    +<li>Required Element Summary</li>
    +<li>Optional Element Summary</li>
    +</ul>
    +<br>
    +<ul class="help-section-list">
    +<li>Enum Constant Details</li>
    +<li>Field Details</li>
    +<li>Property Details</li>
    +<li>Constructor Details</li>
    +<li>Method Details</li>
    +<li>Element Details</li>
    +</ul>
    +<p><span class="help-note">Note:</span> Annotation interfaces have required and optional elements, but not methods. Only enum classes have enum constants. The components of a record class are displayed as part of the declaration of the record class. Properties are a feature of JavaFX.</p>
    +<p>The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.</p>
    +</section>
    +<section class="help-section" id="doc-file">
    +<h3>Other Files</h3>
    +<p>Packages and modules may contain pages with additional information related to the declarations nearby.</p>
    +</section>
    +<section class="help-section" id="tree">
    +<h3>Tree (Class Hierarchy)</h3>
    +<p>There is a <a href="overview-tree.html">Class Hierarchy</a> page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with <code>java.lang.Object</code>. Interfaces do not inherit from <code>java.lang.Object</code>.</p>
    +<ul class="help-section-list">
    +<li>When viewing the Overview page, clicking on TREE displays the hierarchy for all packages.</li>
    +<li>When viewing a particular package, class or interface page, clicking on TREE displays the hierarchy for only that package.</li>
    +</ul>
    +</section>
    +<section class="help-section" id="constant-values">
    +<h3>Constant Field Values</h3>
    +<p>The <a href="constant-values.html">Constant Field Values</a> page lists the static final fields and their values.</p>
    +</section>
    +<section class="help-section" id="serialized-form">
    +<h3>Serialized Form</h3>
    +<p>Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.</p>
    +</section>
    +<section class="help-section" id="all-packages">
    +<h3>All Packages</h3>
    +<p>The <a href="allpackages-index.html">All Packages</a> page contains an alphabetic index of all packages contained in the documentation.</p>
    +</section>
    +<section class="help-section" id="all-classes">
    +<h3>All Classes and Interfaces</h3>
    +<p>The <a href="allclasses-index.html">All Classes and Interfaces</a> page contains an alphabetic index of all classes and interfaces contained in the documentation, including annotation interfaces, enum classes, and record classes.</p>
    +</section>
    +<section class="help-section" id="index">
    +<h3>Index</h3>
    +<p>The <a href="index-files/index-1.html">Index</a> contains an alphabetic index of all classes, interfaces, constructors, methods, and fields in the documentation, as well as summary pages such as <a href="allpackages-index.html">All Packages</a>, <a href="allclasses-index.html">All Classes and Interfaces</a>.</p>
    +</section>
    +</div>
    +<hr>
    +<span class="help-footnote">This help file applies to API documentation generated by the standard doclet.</span></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-1.html b/deliverables/javadoc/index-files/index-1.html
    new file mode 100644
    index 00000000..5f7dcd51
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-1.html
    @@ -0,0 +1,228 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>A-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: A">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:A">A</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/AbstractCard.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a>&lt;<a href="../it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="type parameter in AbstractCard">R</a>,<wbr><a href="../it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="type parameter in AbstractCard">T</a> extends <a href="../it/polimi/is23am10/server/model/pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;<a href="../it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="type parameter in AbstractCard">R</a>&gt;&gt; - Class in <a href="../it/polimi/is23am10/server/model/items/card/package-summary.html">it.polimi.is23am10.server.model.items.card</a></dt>
    +<dd>
    +<div class="block">Abstract card object.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/AbstractCard.html#%3Cinit%3E()" class="member-name-link">AbstractCard()</a> - Constructor for class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">AbstractCommand</a> - Class in <a href="../it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></dt>
    +<dd>
    +<div class="block">The abstract command class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a> - Enum Class in <a href="../it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></dt>
    +<dd>
    +<div class="block">Opcodes to communicate the action taken by a player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a> - Class in <a href="../it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></dt>
    +<dd>
    +<div class="block">Abstract class representing a generic message exchanged.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.html#%3Cinit%3E()" class="member-name-link">AbstractMessage()</a> - Constructor for class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a> - Enum Class in <a href="../it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></dt>
    +<dd>
    +<div class="block">Enum for type of message sent.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/AbstractPattern.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;<a href="../it/polimi/is23am10/server/model/pattern/AbstractPattern.html" title="type parameter in AbstractPattern">T</a>&gt; - Class in <a href="../it/polimi/is23am10/server/model/pattern/package-summary.html">it.polimi.is23am10.server.model.pattern</a></dt>
    +<dd>
    +<div class="block">Abstract pattern object.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a> - Class in <a href="../it/polimi/is23am10/server/network/playerconnector/package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></dt>
    +<dd>
    +<div class="block">The player connector class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html#accept(org.apache.logging.log4j.Logger,it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,C)" class="member-name-link">accept(Logger, AbstractPlayerConnector, C)</a> - Method in interface it.polimi.is23am10.server.controller.interfaces.<a href="../it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#activePlayerMove(java.util.Map)" class="member-name-link">activePlayerMove(Map&lt;Coordinates, Coordinates&gt;)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Method that plays the active player's turn.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#ADD_PLAYER" class="member-name-link">ADD_PLAYER</a> - Enum constant in enum class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></dt>
    +<dd>
    +<div class="block">Add a new player to existing game command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html#ADD_PLAYER_COMMAND_PREFIX" class="member-name-link">ADD_PLAYER_COMMAND_PREFIX</a> - Static variable in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a></dt>
    +<dd>
    +<div class="block"><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#ADD_PLAYER"><code>AbstractCommand.Opcode.ADD_PLAYER</code></a> prefix string.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#addAssignedPrivatePattern(it.polimi.is23am10.server.model.pattern.PrivatePattern)" class="member-name-link">addAssignedPrivatePattern(PrivatePattern&lt;Function&lt;Bookshelf, Integer&gt;&gt;)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Add a new consumed <a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#addAssignedSharedPattern(it.polimi.is23am10.server.model.pattern.SharedPattern)" class="member-name-link">addAssignedSharedPattern(SharedPattern&lt;Predicate&lt;Bookshelf&gt;&gt;)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Add a new consumed <a href="../it/polimi/is23am10/server/model/pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>SharedPattern</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html#addCardWinner(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">addCardWinner(Player)</a> - Method in class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a></dt>
    +<dd>
    +<div class="block">Method used to add a player to the winner array.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerState.html#addGameHandler(it.polimi.is23am10.server.network.gamehandler.GameHandler)" class="member-name-link">addGameHandler(GameHandler)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></dt>
    +<dd>
    +<div class="block">Add a new game handler to the pool.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#addMsgQueue(java.lang.String)" class="member-name-link">addMsgQueue(String)</a> - Static method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Add a new message to the input list queue.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#addPlayer(java.lang.String)" class="member-name-link">addPlayer(String)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Creates and adds a new player to the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a> - Class in <a href="../it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></dt>
    +<dd>
    +<div class="block">The add new player to game command class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html#%3Cinit%3E(java.lang.String,java.util.UUID)" class="member-name-link">AddPlayerCommand(String, UUID)</a> - Constructor for class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerState.html#addPlayerConnector(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)" class="member-name-link">addPlayerConnector(AbstractPlayerConnector)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></dt>
    +<dd>
    +<div class="block">Add player link to the pool.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#addPlayerConnector(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)" class="member-name-link">addPlayerConnector(AbstractPlayerConnector)</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dd>
    +<div class="block">Add a new player connector from socket server.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html#addPlayerConsumer" class="member-name-link">addPlayerConsumer</a> - Static variable in interface it.polimi.is23am10.server.controller.interfaces.<a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></dt>
    +<dd>
    +<div class="block">The <a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#ADD_PLAYER"><code>AbstractCommand.Opcode.ADD_PLAYER</code></a> command callback worker.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#addPlayers(java.util.List)" class="member-name-link">addPlayers(List&lt;Player&gt;)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Function that adds multiple players to game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerState.html#addRmiProxyConnector(java.util.UUID,it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)" class="member-name-link">addRmiProxyConnector(UUID, AbstractPlayerConnector)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></dt>
    +<dd>
    +<div class="block">Add a new rmi connector reference.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#addScoreBlock(it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock)" class="member-name-link">addScoreBlock(ScoreBlock)</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">Method to add a scoreblock to the player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/interfaces/AlarmConsumer.html" class="type-name-link" title="interface in it.polimi.is23am10.client.interfaces">AlarmConsumer</a> - Interface in <a href="../it/polimi/is23am10/client/interfaces/package-summary.html">it.polimi.is23am10.client.interfaces</a></dt>
    +<dd>
    +<div class="block">Custom functional interface definition for the application timer.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#allowedNumOfPlayers" class="member-name-link">allowedNumOfPlayers</a> - Static variable in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">The allowed player values.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/exceptions/AlreadyInitiatedPatternException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for duplicate <a href="../it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card"><code>AbstractCard</code></a> <a href="../it/polimi/is23am10/server/model/pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>AbstractPattern</code></a>
    + initialization.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/exceptions/AlreadyInitiatedPatternException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">AlreadyInitiatedPatternException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.card.exceptions.<a href="../it/polimi/is23am10/server/model/items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a> - Class in <a href="../it/polimi/is23am10/client/userinterface/helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#%3Cinit%3E()" class="member-name-link">ANSICodes()</a> - Constructor for class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/App.html" class="type-name-link" title="class in it.polimi.is23am10">App</a> - Class in <a href="../it/polimi/is23am10/package-summary.html">it.polimi.is23am10</a></dt>
    +<dd>
    +<div class="block">The entrypoint for the app.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/App.html#%3Cinit%3E()" class="member-name-link">App()</a> - Constructor for class it.polimi.is23am10.<a href="../it/polimi/is23am10/App.html" title="class in it.polimi.is23am10">App</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config">AppConfig</a> - Class in <a href="../it/polimi/is23am10/utils/config/package-summary.html">it.polimi.is23am10.utils.config</a></dt>
    +<dd>
    +<div class="block">The application config class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a> - Class in <a href="../it/polimi/is23am10/utils/config/package-summary.html">it.polimi.is23am10.utils.config</a></dt>
    +<dd>
    +<div class="block">The server config context class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#%3Cinit%3E()" class="member-name-link">AppConfigContext()</a> - Constructor for class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Constructor with default values.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#%3Cinit%3E(java.lang.Integer,java.lang.Integer,java.lang.Integer,boolean,boolean,boolean,boolean,java.lang.String,boolean,long)" class="member-name-link">AppConfigContext(Integer, Integer, Integer, boolean, boolean, boolean, boolean, String, boolean, long)</a> - Constructor for class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html" class="type-name-link" title="class in it.polimi.is23am10.utils">ArgParser</a> - Class in <a href="../it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></dt>
    +<dd>
    +<div class="block">Parser for argument from CLI.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#assignPlayers()" class="member-name-link">assignPlayers()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Method that is called when all players joined
    + the game and the first one should be picked.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html#AVAILABLE_GAMES" class="member-name-link">AVAILABLE_GAMES</a> - Enum constant in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></dt>
    +<dd>
    +<div class="block">Message containing the available games joinable by player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a> - Class in <a href="../it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></dt>
    +<dd>
    +<div class="block">A message containing a list of available games to be sent to the client.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html#%3Cinit%3E(java.util.List,it.polimi.is23am10.server.model.player.Player...)" class="member-name-link">AvailableGamesMessage(List&lt;VirtualView&gt;, Player...)</a> - Constructor for class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></dt>
    +<dd>
    +<div class="block">Public constructor for AvailableGamesMessage in broadcast.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#availableGameString" class="member-name-link">availableGameString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-10.html b/deliverables/javadoc/index-files/index-10.html
    new file mode 100644
    index 00000000..ca1f83a9
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-10.html
    @@ -0,0 +1,76 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>J-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: J">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:J">J</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html#JOIN_GAME" class="member-name-link">JOIN_GAME</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#JOIN_GAME" class="member-name-link">JOIN_GAME</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></dt>
    +<dd>
    +<div class="block">The command string for joining a game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#joinExisting" class="member-name-link">joinExisting</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html#joinGameCallBack" class="member-name-link">joinGameCallBack</a> - Static variable in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></dt>
    +<dd>
    +<div class="block">A callback implementation for joining a game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#joinOrCreateString" class="member-name-link">joinOrCreateString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-11.html b/deliverables/javadoc/index-files/index-11.html
    new file mode 100644
    index 00000000..f943a40b
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-11.html
    @@ -0,0 +1,66 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>K-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: K">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:K">K</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#KEEP_ALIVE_CLI_COMMAND" class="member-name-link">KEEP_ALIVE_CLI_COMMAND</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">The keep alive cli command.</div>
    +</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-12.html b/deliverables/javadoc/index-files/index-12.html
    new file mode 100644
    index 00000000..711cbca8
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-12.html
    @@ -0,0 +1,72 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>L-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: L">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:L">L</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#L_PADDING" class="member-name-link">L_PADDING</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html#LAST_ROUND" class="member-name-link">LAST_ROUND</a> - Enum constant in enum class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#lastRoundString" class="member-name-link">lastRoundString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#line" class="member-name-link">line</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#listGamesString" class="member-name-link">listGamesString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-13.html b/deliverables/javadoc/index-files/index-13.html
    new file mode 100644
    index 00000000..3eb0c6a9
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-13.html
    @@ -0,0 +1,158 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>M-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: M">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:M">M</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#M_PADDING" class="member-name-link">M_PADDING</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/App.html#main(java.lang.String%5B%5D)" class="member-name-link">main(String[])</a> - Static method in class it.polimi.is23am10.<a href="../it/polimi/is23am10/App.html" title="class in it.polimi.is23am10">App</a></dt>
    +<dd>
    +<div class="block">The main function.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#mainStage" class="member-name-link">mainStage</a> - Static variable in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">The <code>Stage</code> reference.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#MAX_CLIENT_INACTIVITY_TIME" class="member-name-link">MAX_CLIENT_INACTIVITY_TIME</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">The max players inactivity time command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#MAX_CONNECTIONS_CLI_COMMAND" class="member-name-link">MAX_CONNECTIONS_CLI_COMMAND</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">The max connections cli command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#MAX_CONNECTIONS_NUMBER" class="member-name-link">MAX_CONNECTIONS_NUMBER</a> - Static variable in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">The upper bound of connection numbers.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#MAX_PORT_NUMBER" class="member-name-link">MAX_PORT_NUMBER</a> - Static variable in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">The upper bound of port numbers.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#messageStringReceiver" class="member-name-link">messageStringReceiver</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#messageStringSender" class="member-name-link">messageStringSender</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#MIN_CONNECTIONS_NUMBER" class="member-name-link">MIN_CONNECTIONS_NUMBER</a> - Static variable in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">The lower bound of connection numbers.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#MIN_PADDING_FOR_NAMES" class="member-name-link">MIN_PADDING_FOR_NAMES</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#MIN_PORT_NUMBER" class="member-name-link">MIN_PORT_NUMBER</a> - Static variable in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">The lower bound of port numbers.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/MissingParameterException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">MissingParameterException</a> - Exception Class in <a href="../it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for invalid cli argument parsed.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/MissingParameterException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">MissingParameterException(String)</a> - Constructor for exception class it.polimi.is23am10.utils.exceptions.<a href="../it/polimi/is23am10/utils/exceptions/MissingParameterException.html" title="class in it.polimi.is23am10.utils.exceptions">MissingParameterException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#MOVE_TILE" class="member-name-link">MOVE_TILE</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></dt>
    +<dd>
    +<div class="block">The command string for moving a tile.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#MOVE_TILES" class="member-name-link">MOVE_TILES</a> - Enum constant in enum class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></dt>
    +<dd>
    +<div class="block">Move tiles from board to user's bookshelf command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html#MOVE_TILES_COMMAND_PREFIX" class="member-name-link">MOVE_TILES_COMMAND_PREFIX</a> - Static variable in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a></dt>
    +<dd>
    +<div class="block"><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#MOVE_TILES"><code>AbstractCommand.Opcode.MOVE_TILES</code></a> prefix string.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/MoveCommandHelper.html" class="type-name-link" title="class in it.polimi.is23am10.utils">MoveCommandHelper</a> - Class in <a href="../it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></dt>
    +<dd>
    +<div class="block">Helper class to convert input move from index to coordinates.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/MovesValidator.html" class="type-name-link" title="class in it.polimi.is23am10.utils">MovesValidator</a> - Class in <a href="../it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></dt>
    +<dd>
    +<div class="block">The game movement validator class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html#moveTileCallBack" class="member-name-link">moveTileCallBack</a> - Static variable in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></dt>
    +<dd>
    +<div class="block">A callback implementation for moving a tile on the bookshelf.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#moveTileCmd(java.lang.String)" class="member-name-link">moveTileCmd(String)</a> - Static method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></dt>
    +<dd>
    +<div class="block">Builds a move tile command with the specified move.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html" class="type-name-link" title="class in it.polimi.is23am10.utils">MoveTileCommandTypeAdaptor</a> - Class in <a href="../it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></dt>
    +<dd>
    +<div class="block">Custom deserializer class definition for Gson usage.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html#%3Cinit%3E()" class="member-name-link">MoveTileCommandTypeAdaptor()</a> - Constructor for class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html" title="class in it.polimi.is23am10.utils">MoveTileCommandTypeAdaptor</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a> - Class in <a href="../it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></dt>
    +<dd>
    +<div class="block">The move tiles command class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html#%3Cinit%3E(java.lang.String,java.util.UUID,java.util.Map)" class="member-name-link">MoveTilesCommand(String, UUID, Map&lt;Coordinates, Coordinates&gt;)</a> - Constructor for class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></dt>
    +<dd>
    +<div class="block">Public constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html#moveTilesConsumer" class="member-name-link">moveTilesConsumer</a> - Static variable in interface it.polimi.is23am10.server.controller.interfaces.<a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></dt>
    +<dd>
    +<div class="block">The <a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#MOVE_TILES"><code>AbstractCommand.Opcode.MOVE_TILES</code></a> command callback worker.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#moveTilesExampleString" class="member-name-link">moveTilesExampleString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#moveTilesInviteString" class="member-name-link">moveTilesInviteString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-14.html b/deliverables/javadoc/index-files/index-14.html
    new file mode 100644
    index 00000000..fa2186c4
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-14.html
    @@ -0,0 +1,236 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>N-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: N">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:N">N</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#N" class="member-name-link">N</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/exceptions/NegativeMatchedBlockCountException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for negative matched block count Integer.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/exceptions/NegativeMatchedBlockCountException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NegativeMatchedBlockCountException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.card.exceptions.<a href="../it/polimi/is23am10/server/model/items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#newLine" class="member-name-link">newLine</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#nextTurn()" class="member-name-link">nextTurn()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Method that computes active player's Score, updates the view,
    + checks if game is over and if not picks next player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#noGamesString" class="member-name-link">noGamesString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#notify(it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">notify(AbstractMessage)</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Notify the player an update.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html#notify(it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">notify(AbstractMessage)</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a></dt>
    +<dd>
    +<div class="block">Notify the player an update.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html#notify(it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">notify(AbstractMessage)</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a></dt>
    +<dd>
    +<div class="block">Notify the player an update.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for not valid score block value.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NotValidScoreBlockValueException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.scoreblock.exceptions.<a href="../it/polimi/is23am10/server/model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#nowPlaying" class="member-name-link">nowPlaying</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#NULL" class="member-name-link">NULL</a> - Enum constant in enum class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></dt>
    +<dd>
    +<div class="block">Null command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/NullAssignedPatternException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to null pattern instances.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/NullAssignedPatternException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullAssignedPatternException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.game.exceptions.<a href="../it/polimi/is23am10/server/model/game/exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/exceptions/NullBlockingQueueException.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullBlockingQueueException</a> - Exception Class in <a href="../it/polimi/is23am10/server/network/playerconnector/exceptions/package-summary.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle null blocking queue instances.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/exceptions/NullBlockingQueueException.html#%3Cinit%3E()" class="member-name-link">NullBlockingQueueException()</a> - Constructor for exception class it.polimi.is23am10.server.network.playerconnector.exceptions.<a href="../it/polimi/is23am10/server/network/playerconnector/exceptions/NullBlockingQueueException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullBlockingQueueException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/exceptions/NullGameHandlerInstance.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a> - Exception Class in <a href="../it/polimi/is23am10/server/controller/exceptions/package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle null game handler instances.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/exceptions/NullGameHandlerInstance.html#%3Cinit%3E()" class="member-name-link">NullGameHandlerInstance()</a> - Constructor for exception class it.polimi.is23am10.server.controller.exceptions.<a href="../it/polimi/is23am10/server/controller/exceptions/NullGameHandlerInstance.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/NullIndexValueException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a> - Exception Class in <a href="../it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for null index values.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/NullIndexValueException.html#%3Cinit%3E()" class="member-name-link">NullIndexValueException()</a> - Constructor for exception class it.polimi.is23am10.utils.exceptions.<a href="../it/polimi/is23am10/utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/exceptions/NullMatchedBlockCountException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for null matched block count Integer.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/exceptions/NullMatchedBlockCountException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullMatchedBlockCountException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.card.exceptions.<a href="../it/polimi/is23am10/server/model/items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/NullMaxPlayerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle null max players value.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/NullMaxPlayerException.html#%3Cinit%3E()" class="member-name-link">NullMaxPlayerException()</a> - Constructor for exception class it.polimi.is23am10.server.model.game.exceptions.<a href="../it/polimi/is23am10/server/model/game/exceptions/NullMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/exceptions/NullNumOfPlayersException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for null number of players value.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/exceptions/NullNumOfPlayersException.html#%3Cinit%3E()" class="member-name-link">NullNumOfPlayersException()</a> - Constructor for exception class it.polimi.is23am10.server.model.items.board.exceptions.<a href="../it/polimi/is23am10/server/model/items/board/exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerBookshelfException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/player/exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></dt>
    +<dd>
    +<div class="block">Null player name exception.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerBookshelfException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerBookshelfException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.player.exceptions.<a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/exceptions/NullPlayerConnector.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">NullPlayerConnector</a> - Exception Class in <a href="../it/polimi/is23am10/server/network/gamehandler/exceptions/package-summary.html">it.polimi.is23am10.server.network.gamehandler.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle null max player connectors.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/exceptions/NullPlayerConnector.html#%3Cinit%3E()" class="member-name-link">NullPlayerConnector()</a> - Constructor for exception class it.polimi.is23am10.server.network.gamehandler.exceptions.<a href="../it/polimi/is23am10/server/network/gamehandler/exceptions/NullPlayerConnector.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">NullPlayerConnector</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/NullPlayerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">NullPlayerException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle null player value.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/NullPlayerException.html#%3Cinit%3E()" class="member-name-link">NullPlayerException()</a> - Constructor for exception class it.polimi.is23am10.server.model.game.exceptions.<a href="../it/polimi/is23am10/server/model/game/exceptions/NullPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullPlayerException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerIdException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/player/exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></dt>
    +<dd>
    +<div class="block">Null player id exception.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerIdException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerIdException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.player.exceptions.<a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerNameException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/player/exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></dt>
    +<dd>
    +<div class="block">Null player name exception.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerNameException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerNameException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.player.exceptions.<a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/exceptions/NullPlayerNamesException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/factory/exceptions/package-summary.html">it.polimi.is23am10.server.model.factory.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle null player names when checking for duplicates
    + in Player Factory.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/exceptions/NullPlayerNamesException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerNamesException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.factory.exceptions.<a href="../it/polimi/is23am10/server/model/factory/exceptions/NullPlayerNamesException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerPrivateCardException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/player/exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></dt>
    +<dd>
    +<div class="block">Null player private card exception.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerPrivateCardException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerPrivateCardException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.player.exceptions.<a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreBlocksException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/player/exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></dt>
    +<dd>
    +<div class="block">Null player score blocks exception.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreBlocksException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerScoreBlocksException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.player.exceptions.<a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/player/exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></dt>
    +<dd>
    +<div class="block">Null player score exception.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerScoreException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.player.exceptions.<a href="../it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/exceptions/NullPointsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.score.exceptions">NullPointsException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/score/exceptions/package-summary.html">it.polimi.is23am10.server.model.score.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle null points values.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/exceptions/NullPointsException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPointsException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.score.exceptions.<a href="../it/polimi/is23am10/server/model/score/exceptions/NullPointsException.html" title="class in it.polimi.is23am10.server.model.score.exceptions">NullPointsException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/exceptions/NullRmiServerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiServerException</a> - Exception Class in <a href="../it/polimi/is23am10/server/controller/exceptions/package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom runtime exception to null RMI servers.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/exceptions/NullRmiServerException.html#%3Cinit%3E()" class="member-name-link">NullRmiServerException()</a> - Constructor for exception class it.polimi.is23am10.server.controller.exceptions.<a href="../it/polimi/is23am10/server/controller/exceptions/NullRmiServerException.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiServerException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/exceptions/NullRmiStubException.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiStubException</a> - Exception Class in <a href="../it/polimi/is23am10/server/controller/exceptions/package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom runtime exception to null RMI stubs.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/exceptions/NullRmiStubException.html#%3Cinit%3E()" class="member-name-link">NullRmiStubException()</a> - Constructor for exception class it.polimi.is23am10.server.controller.exceptions.<a href="../it/polimi/is23am10/server/controller/exceptions/NullRmiStubException.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiStubException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/exceptions/NullScoreBlockListException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for null score blocks list instance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/exceptions/NullScoreBlockListException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullScoreBlockListException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.card.exceptions.<a href="../it/polimi/is23am10/server/model/items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/exceptions/NullSocketConnectorException.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullSocketConnectorException</a> - Exception Class in <a href="../it/polimi/is23am10/server/network/playerconnector/exceptions/package-summary.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle null socket client connector.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/exceptions/NullSocketConnectorException.html#%3Cinit%3E()" class="member-name-link">NullSocketConnectorException()</a> - Constructor for exception class it.polimi.is23am10.server.network.playerconnector.exceptions.<a href="../it/polimi/is23am10/server/network/playerconnector/exceptions/NullSocketConnectorException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullSocketConnectorException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/NullTileException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></dt>
    +<dd>
    +<div class="block">Null Tile exception.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/NullTileException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">NullTileException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/NullTileException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-15.html b/deliverables/javadoc/index-files/index-15.html
    new file mode 100644
    index 00000000..b35803f6
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-15.html
    @@ -0,0 +1,87 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>O-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: O">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:O">O</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html#obfuscatePrivateCard()" class="member-name-link">obfuscatePrivateCard()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></dt>
    +<dd>
    +<div class="block">Void method used when pushing state
    + to all players, in order to keep secret
    + each player's card to other players.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#obfuscatePrivatePoints()" class="member-name-link">obfuscatePrivatePoints()</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a> - Class in <a href="../it/polimi/is23am10/client/userinterface/helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></dt>
    +<dd>
    +<div class="block">An helper class with all the methods needed to properly print
    + CLI messages for client.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#%3Cinit%3E(boolean)" class="member-name-link">OutputWrapper(boolean)</a> - Constructor for class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Public constructor for OutputWrapper.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" class="type-name-link" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a> - Enum Class in <a href="../it/polimi/is23am10/client/userinterface/helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></dt>
    +<dd>
    +<div class="block">Enum containing the output types.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#ow" class="member-name-link">ow</a> - Variable in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Output Wrapper, entrypoint for all UI output functions.</div>
    +</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-16.html b/deliverables/javadoc/index-files/index-16.html
    new file mode 100644
    index 00000000..55cfbeab
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-16.html
    @@ -0,0 +1,187 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>P-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: P">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:P">P</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#paddingBookshelf" class="member-name-link">paddingBookshelf</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#parse(java.lang.String%5B%5D)" class="member-name-link">parse(String[])</a> - Static method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">Argument parser method that checks commands.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#patternsArray" class="member-name-link">patternsArray</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">The list of <a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a> containing all the 12 different patterns.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#PLANT" class="member-name-link">PLANT</a> - Enum constant in enum class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#player" class="member-name-link">player</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player">Player</a> - Class in <a href="../it/polimi/is23am10/server/model/player/package-summary.html">it.polimi.is23am10.server.model.player</a></dt>
    +<dd>
    +<div class="block">The Player class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#%3Cinit%3E()" class="member-name-link">Player()</a> - Constructor for class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">Constructor for Player class.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#%3Cinit%3E(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">Player(Player)</a> - Constructor for class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">Copy constructor for Player class.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a> - Class in <a href="../it/polimi/is23am10/server/network/playerconnector/package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></dt>
    +<dd>
    +<div class="block">The player connector class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html#%3Cinit%3E(java.util.concurrent.LinkedBlockingQueue,it.polimi.is23am10.client.IClient)" class="member-name-link">PlayerConnectorRmi(LinkedBlockingQueue&lt;AbstractMessage&gt;, IClient)</a> - Constructor for class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a> - Class in <a href="../it/polimi/is23am10/server/network/playerconnector/package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></dt>
    +<dd>
    +<div class="block">The player connector class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html#%3Cinit%3E(java.net.Socket,java.util.concurrent.LinkedBlockingQueue)" class="member-name-link">PlayerConnectorSocket(Socket, LinkedBlockingQueue&lt;AbstractMessage&gt;)</a> - Constructor for class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PlayerFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">PlayerFactory</a> - Class in <a href="../it/polimi/is23am10/server/model/factory/package-summary.html">it.polimi.is23am10.server.model.factory</a></dt>
    +<dd>
    +<div class="block">The PlayerFactory class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#playerIdx" class="member-name-link">playerIdx</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/PlayerNotFoundException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle player not found.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/PlayerNotFoundException.html#%3Cinit%3E()" class="member-name-link">PlayerNotFoundException()</a> - Constructor for exception class it.polimi.is23am10.server.model.game.exceptions.<a href="../it/polimi/is23am10/server/model/game/exceptions/PlayerNotFoundException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#playerScoreString" class="member-name-link">playerScoreString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html#PLAYING" class="member-name-link">PLAYING</a> - Enum constant in enum class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></dt>
    +<dd>
    +<div class="block">Player is in the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#printString(it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel,java.lang.String,boolean)" class="member-name-link">printString(OutputWrapper.OutputLevel, String, boolean)</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Public method to print a string.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/PrivateCard.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a> - Class in <a href="../it/polimi/is23am10/server/model/items/card/package-summary.html">it.polimi.is23am10.server.model.items.card</a></dt>
    +<dd>
    +<div class="block">Private card class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/PrivateCard.html#%3Cinit%3E()" class="member-name-link">PrivateCard()</a> - Constructor for class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></dt>
    +<dd>
    +<div class="block">Empty constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/PrivateCard.html#%3Cinit%3E(java.util.List)" class="member-name-link">PrivateCard(List&lt;PrivatePattern&lt;Function&lt;Bookshelf, Integer&gt;&gt;&gt;)</a> - Constructor for class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#privateCardIdx" class="member-name-link">privateCardIdx</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#privateCardPointsMap" class="member-name-link">privateCardPointsMap</a> - Static variable in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">Map that allows the conversion from number of matches 
    + in private cards to points received.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="type parameter in PrivatePattern">T</a>&gt; - Class in <a href="../it/polimi/is23am10/server/model/pattern/package-summary.html">it.polimi.is23am10.server.model.pattern</a></dt>
    +<dd>
    +<div class="block">Private pattern object.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html#%3Cinit%3E(T,java.lang.Integer)" class="member-name-link">PrivatePattern(T, Integer)</a> - Constructor for class it.polimi.is23am10.server.model.pattern.<a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a></dt>
    +<dd>
    +<div class="block">The constructor of the class PrivatePattern.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a> - Class in <a href="../it/polimi/is23am10/server/model/factory/package-summary.html">it.polimi.is23am10.server.model.factory</a></dt>
    +<dd>
    +<div class="block">Private pattern factory object.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">PrivatePatternsHelper</a> - Class in <a href="../it/polimi/is23am10/client/userinterface/helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></dt>
    +<dd>
    +<div class="block">Map containing the private bookshelf patterns associated with an index.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper.html#%3Cinit%3E()" class="member-name-link">PrivatePatternsHelper()</a> - Constructor for class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">PrivatePatternsHelper</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#privatePoints" class="member-name-link">privatePoints</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE" class="member-name-link">PURPLE</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_BACKGROUND" class="member-name-link">PURPLE_BACKGROUND</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_BACKGROUND_BRIGHT" class="member-name-link">PURPLE_BACKGROUND_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_BOLD" class="member-name-link">PURPLE_BOLD</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_BOLD_BRIGHT" class="member-name-link">PURPLE_BOLD_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_BRIGHT" class="member-name-link">PURPLE_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#PURPLE_UNDERLINED" class="member-name-link">PURPLE_UNDERLINED</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#pushGameState()" class="member-name-link">pushGameState()</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dd>
    +<div class="block">Push a new game state to the message queue for each connected player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#putTileAction(it.polimi.is23am10.server.model.items.tile.Tile,it.polimi.is23am10.utils.Coordinates)" class="member-name-link">putTileAction(Tile, Coordinates)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Function that puts a tile inside the active player's bookshelf.</div>
    +</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-17.html b/deliverables/javadoc/index-files/index-17.html
    new file mode 100644
    index 00000000..01a2b7d5
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-17.html
    @@ -0,0 +1,153 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>R-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: R">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:R">R</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html#rebindServerControllerAction(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)" class="member-name-link">rebindServerControllerAction(IServerControllerAction)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a></dt>
    +<dd>
    +<div class="block">Rebind a <a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#RECEIVER_NOT_FOUND" class="member-name-link">RECEIVER_NOT_FOUND</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in sending message to player name not existing.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED" class="member-name-link">RED</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_BACKGROUND" class="member-name-link">RED_BACKGROUND</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_BACKGROUND_BRIGHT" class="member-name-link">RED_BACKGROUND_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_BOLD" class="member-name-link">RED_BOLD</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_BOLD_BRIGHT" class="member-name-link">RED_BOLD_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_BRIGHT" class="member-name-link">RED_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RED_UNDERLINED" class="member-name-link">RED_UNDERLINED</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#refillIfNeeded()" class="member-name-link">refillIfNeeded()</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">Method called at the end of the turn that
    + checks if the Board needs to be refilled
    + and proceeds if so.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerState.html#removeGameHandlerById(java.util.UUID)" class="member-name-link">removeGameHandlerById(UUID)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></dt>
    +<dd>
    +<div class="block">Remove a game handler from the pool.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerState.html#removePlayerByGame(java.util.UUID,it.polimi.is23am10.server.model.player.Player)" class="member-name-link">removePlayerByGame(UUID, Player)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></dt>
    +<dd>
    +<div class="block">Remove a player connector from the pool.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#removePlayerByGame(java.util.UUID,it.polimi.is23am10.server.model.player.Player)" class="member-name-link">removePlayerByGame(UUID, Player)</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dd>
    +<div class="block">Method that remove player by the game handler</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#removeTileAt(java.lang.Integer,java.lang.Integer)" class="member-name-link">removeTileAt(Integer, Integer)</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">Support method that removes a tile</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#RESET" class="member-name-link">RESET</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#RMI_PORT_CLI_COMMAND" class="member-name-link">RMI_PORT_CLI_COMMAND</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">The rmi port cli command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/RMIClient.html" class="type-name-link" title="class in it.polimi.is23am10.client">RMIClient</a> - Class in <a href="../it/polimi/is23am10/client/package-summary.html">it.polimi.is23am10.client</a></dt>
    +<dd>
    +<div class="block">A client using RMI as communication method.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/RMIClient.html#%3Cinit%3E(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi,it.polimi.is23am10.client.userinterface.UserInterface,it.polimi.is23am10.server.controller.interfaces.IServerControllerAction,java.rmi.registry.Registry)" class="member-name-link">RMIClient(PlayerConnectorRmi, UserInterface, IServerControllerAction, Registry)</a> - Constructor for class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/RMIClient.html" title="class in it.polimi.is23am10.client">RMIClient</a></dt>
    +<dd>
    +<div class="block">Public constructor for client using RMI as communication method.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#role" class="member-name-link">role</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a> - Exception Class in <a href="../it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle index out of bounds values.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html#%3Cinit%3E(java.lang.String,java.lang.Integer,java.lang.Integer)" class="member-name-link">RowIndexOutOfBoundsException(String, Integer, Integer)</a> - Constructor for exception class it.polimi.is23am10.utils.exceptions.<a href="../it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.html#run()" class="member-name-link">run()</a> - Method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a></dt>
    +<dd>
    +<div class="block">Abstract method that run the client into the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/RMIClient.html#run()" class="member-name-link">run()</a> - Method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/RMIClient.html" title="class in it.polimi.is23am10.client">RMIClient</a></dt>
    +<dd>
    +<div class="block">Client core cycle.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/SocketClient.html#run()" class="member-name-link">run()</a> - Method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/SocketClient.html" title="class in it.polimi.is23am10.client">SocketClient</a></dt>
    +<dd>
    +<div class="block">Client core cycle.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ClientConnectionChecker.html#run()" class="member-name-link">run()</a> - Method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ClientConnectionChecker.html" title="class in it.polimi.is23am10.server.controller">ClientConnectionChecker</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerSocket.html#run()" class="member-name-link">run()</a> - Method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerSocket.html" title="class in it.polimi.is23am10.server.controller">ServerControllerSocket</a></dt>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#runInputHandler()" class="member-name-link">runInputHandler()</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">CLI method to retrieve user input and add it to the queue
    + for it to be consumed when needed by controller.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/SocketClient.html#runInputMessageHandler()" class="member-name-link">runInputMessageHandler()</a> - Method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/SocketClient.html" title="class in it.polimi.is23am10.client">SocketClient</a></dt>
    +<dd>
    +<div class="block">Poll payloads from the socket stream and process <a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages"><code>AbstractMessage</code></a> that
    + can be
    + recognized.</div>
    +</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-18.html b/deliverables/javadoc/index-files/index-18.html
    new file mode 100644
    index 00000000..603b9ad1
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-18.html
    @@ -0,0 +1,505 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>S-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: S">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:S">S</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#S_PADDING" class="member-name-link">S_PADDING</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.score">Score</a> - Class in <a href="../it/polimi/is23am10/server/model/score/package-summary.html">it.polimi.is23am10.server.model.score</a></dt>
    +<dd>
    +<div class="block">The Score class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#%3Cinit%3E()" class="member-name-link">Score()</a> - Constructor for class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#%3Cinit%3E(it.polimi.is23am10.server.model.score.Score)" class="member-name-link">Score(Score)</a> - Constructor for class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">Copy constructor to generate another copy of same Score.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a> - Class in <a href="../it/polimi/is23am10/server/model/items/scoreblock/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock</a></dt>
    +<dd>
    +<div class="block">ScoreBlock class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html#%3Cinit%3E(java.lang.Integer)" class="member-name-link">ScoreBlock(Integer)</a> - Constructor for class it.polimi.is23am10.server.model.items.scoreblock.<a href="../it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#scoreBlockPoints" class="member-name-link">scoreBlockPoints</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#SEND_CHAT_MESSAGE" class="member-name-link">SEND_CHAT_MESSAGE</a> - Enum constant in enum class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></dt>
    +<dd>
    +<div class="block">Send chat message command</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html#SEND_CHAT_MESSAGE_COMMAND_PREFIX" class="member-name-link">SEND_CHAT_MESSAGE_COMMAND_PREFIX</a> - Static variable in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a></dt>
    +<dd>
    +<div class="block"><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#SEND_CHAT_MESSAGE"><code>AbstractCommand.Opcode.SEND_CHAT_MESSAGE</code></a> prefix string.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#SEND_MESSAGE" class="member-name-link">SEND_MESSAGE</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></dt>
    +<dd>
    +<div class="block">The command string for sending a message</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#sendChatMessageCmd(java.lang.String)" class="member-name-link">sendChatMessageCmd(String)</a> - Static method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></dt>
    +<dd>
    +<div class="block">Builds a chat message and sends it.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/SendChatMessageCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">SendChatMessageCommand</a> - Class in <a href="../it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></dt>
    +<dd>
    +<div class="block">The command used by player to send a chat message.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/SendChatMessageCommand.html#%3Cinit%3E(it.polimi.is23am10.server.network.messages.ChatMessage)" class="member-name-link">SendChatMessageCommand(ChatMessage)</a> - Constructor for class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/SendChatMessageCommand.html" title="class in it.polimi.is23am10.server.command">SendChatMessageCommand</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html#sendChatMessageConsumer" class="member-name-link">sendChatMessageConsumer</a> - Static variable in interface it.polimi.is23am10.server.controller.interfaces.<a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></dt>
    +<dd>
    +<div class="block">The <a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#SEND_CHAT_MESSAGE"><code>AbstractCommand.Opcode.SEND_CHAT_MESSAGE</code></a> command callback worker.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html#sendMessageCallBack" class="member-name-link">sendMessageCallBack</a> - Static variable in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></dt>
    +<dd>
    +<div class="block">A callback implementation to send a chat message.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html#serialize(java.util.Map,java.lang.reflect.Type,com.google.gson.JsonSerializationContext)" class="member-name-link">serialize(Map&lt;Coordinates, Coordinates&gt;, Type, JsonSerializationContext)</a> - Method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html" title="class in it.polimi.is23am10.utils">MoveTileCommandTypeAdaptor</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.html" class="type-name-link" title="class in it.polimi.is23am10.server">Server</a> - Class in <a href="../it/polimi/is23am10/server/package-summary.html">it.polimi.is23am10.server</a></dt>
    +<dd>
    +<div class="block">The Server entry point class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.html#%3Cinit%3E(java.net.ServerSocket,java.util.concurrent.ExecutorService,it.polimi.is23am10.server.controller.interfaces.IServerControllerAction,java.rmi.registry.Registry)" class="member-name-link">Server(ServerSocket, ExecutorService, IServerControllerAction, Registry)</a> - Constructor for class it.polimi.is23am10.server.<a href="../it/polimi/is23am10/server/Server.html" title="class in it.polimi.is23am10.server">Server</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#SERVER_ADDRESS_CLI_COMMAND" class="member-name-link">SERVER_ADDRESS_CLI_COMMAND</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">The server address cli command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.ServerStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a> - Enum Class in <a href="../it/polimi/is23am10/server/package-summary.html">it.polimi.is23am10.server</a></dt>
    +<dd>
    +<div class="block">The serverSocket status.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a> - Class in <a href="../it/polimi/is23am10/server/controller/package-summary.html">it.polimi.is23am10.server.controller</a></dt>
    +<dd>
    +<div class="block">The server controller action class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html#%3Cinit%3E()" class="member-name-link">ServerControllerAction()</a> - Constructor for class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a> - Class in <a href="../it/polimi/is23am10/server/controller/package-summary.html">it.polimi.is23am10.server.controller</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerSocket.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerSocket</a> - Class in <a href="../it/polimi/is23am10/server/controller/package-summary.html">it.polimi.is23am10.server.controller</a></dt>
    +<dd>
    +<div class="block">The server controller class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerSocket.html#%3Cinit%3E(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket,it.polimi.is23am10.server.controller.ServerControllerAction)" class="member-name-link">ServerControllerSocket(PlayerConnectorSocket, ServerControllerAction)</a> - Constructor for class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerSocket.html" title="class in it.polimi.is23am10.server.controller">ServerControllerSocket</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerState.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a> - Class in <a href="../it/polimi/is23am10/server/controller/package-summary.html">it.polimi.is23am10.server.controller</a></dt>
    +<dd>
    +<div class="block">The server controller state class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a> - Class in <a href="../it/polimi/is23am10/server/controller/package-summary.html">it.polimi.is23am10.server.controller</a></dt>
    +<dd>
    +<div class="block">The server debug prefixes string interface definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#setActivePlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setActivePlayer(Player)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Method to set the active player (playing this turn).</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#setBookshelf(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)" class="member-name-link">setBookshelf(Bookshelf)</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">bookshelf setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#setBookshelfGridIndex(java.lang.Integer,java.lang.Integer,it.polimi.is23am10.server.model.items.tile.Tile)" class="member-name-link">setBookshelfGridIndex(Integer, Integer, Tile)</a> - Method in class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">Set a <a href="../it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile"><code>Tile</code></a> inside the bookshelf grid.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#setBookshelfPoints(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)" class="member-name-link">setBookshelfPoints(Bookshelf)</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">bookshelfPoints setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html#setClient(it.polimi.is23am10.client.IClient)" class="member-name-link">setClient(IClient)</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a></dt>
    +<dd>
    +<div class="block">Set the <a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client"><code>Client</code></a> reference.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.html#setClientStatus(it.polimi.is23am10.client.Client.ClientGameStatus)" class="member-name-link">setClientStatus(Client.ClientGameStatus)</a> - Method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a></dt>
    +<dd>
    +<div class="block">Client status setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/Coordinates.html#setCol(java.lang.Integer)" class="member-name-link">setCol(Integer)</a> - Method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></dt>
    +<dd>
    +<div class="block">Column setter</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html#setConnector(java.net.Socket)" class="member-name-link">setConnector(Socket)</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a></dt>
    +<dd>
    +<div class="block">Setter for <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link"><code>Socket</code></a>, the low level connector.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#setDebug(boolean)" class="member-name-link">setDebug(boolean)</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Setter for the debug flag.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#setExtraPoint()" class="member-name-link">setExtraPoint()</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">extraPoint setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#setFirstPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setFirstPlayer(Player)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">The firstPlayer setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.html#setForceCloseApplication(boolean)" class="member-name-link">setForceCloseApplication(boolean)</a> - Static method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a></dt>
    +<dd>
    +<div class="block">Set a force close application request.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#setGameBoard()" class="member-name-link">setGameBoard()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">GameBoard setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#setGameId(java.util.UUID)" class="member-name-link">setGameId(UUID)</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Setter for the associated game id.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#setIsActivePlayer(boolean)" class="member-name-link">setIsActivePlayer(boolean)</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">Setter of active player status.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#setIsConnected(boolean)" class="member-name-link">setIsConnected(boolean)</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">Setter of connected status.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#setIsServer(boolean)" class="member-name-link">setIsServer(boolean)</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Keep alive setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#setKeepAlive(boolean)" class="member-name-link">setKeepAlive(boolean)</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Keep alive setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#setLastSnoozeMs(long)" class="member-name-link">setLastSnoozeMs(long)</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Set the client last snooze time in ms.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/PrivateCard.html#setMatchedBlocksCount(java.lang.Integer)" class="member-name-link">setMatchedBlocksCount(Integer)</a> - Method in class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></dt>
    +<dd>
    +<div class="block">matchedBlocksCount setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#setMaxConnections(java.lang.Integer)" class="member-name-link">setMaxConnections(Integer)</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Max connections setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#setMaxInactivityTimeMs(long)" class="member-name-link">setMaxInactivityTimeMs(long)</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Max inactivity time setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#setMaxPlayers(java.lang.Integer)" class="member-name-link">setMaxPlayers(Integer)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">The maxPlayers setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html#setNotified(boolean)" class="member-name-link">setNotified(boolean)</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></dt>
    +<dd>
    +<div class="block">The notified setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html#setPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setPlayer(Player)</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></dt>
    +<dd>
    +<div class="block">The player setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#setPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setPlayer(Player)</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Setter for the player reference.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html#setPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setPlayer(Player)</a> - Method in interface it.polimi.is23am10.server.network.playerconnector.interfaces.<a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Setter for the associated player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#setPlayerID(java.util.UUID)" class="member-name-link">setPlayerID(UUID)</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">playerId setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#setPlayerName(java.lang.String)" class="member-name-link">setPlayerName(String)</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">playerName setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#setPrivateCard(it.polimi.is23am10.server.model.items.card.PrivateCard)" class="member-name-link">setPrivateCard(PrivateCard)</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">privateCard setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#setPrivatePoints(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,it.polimi.is23am10.server.model.items.card.PrivateCard)" class="member-name-link">setPrivatePoints(Bookshelf, PrivateCard)</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">privatePoints setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html#setRmiRegistry(java.rmi.registry.Registry)" class="member-name-link">setRmiRegistry(Registry)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a></dt>
    +<dd>
    +<div class="block">Set the rmi registry.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/Coordinates.html#setRow(java.lang.Integer)" class="member-name-link">setRow(Integer)</a> - Method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></dt>
    +<dd>
    +<div class="block">Row setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#setScore(it.polimi.is23am10.server.model.score.Score)" class="member-name-link">setScore(Score)</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">score setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#setScoreBlockPoints(java.util.List)" class="member-name-link">setScoreBlockPoints(List&lt;ScoreBlock&gt;)</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">scoreBlockPoints setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html#setScoreBlocks(java.util.List)" class="member-name-link">setScoreBlocks(List&lt;ScoreBlock&gt;)</a> - Method in class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a></dt>
    +<dd>
    +<div class="block">ScoreBlocks setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#setScoreBlocks(java.util.List)" class="member-name-link">setScoreBlocks(List&lt;ScoreBlock&gt;)</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">scoreBlocks setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#setServerAddress(java.lang.String)" class="member-name-link">setServerAddress(String)</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Server address setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html#setServerControllerActionServer(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)" class="member-name-link">setServerControllerActionServer(IServerControllerAction)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a></dt>
    +<dd>
    +<div class="block">Set the rmi server for <a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html#setServerControllerActionStub(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)" class="member-name-link">setServerControllerActionStub(IServerControllerAction)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a></dt>
    +<dd>
    +<div class="block">Set the rmi stub for <a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#setServerRmiPort(java.lang.Integer)" class="member-name-link">setServerRmiPort(Integer)</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Server port setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#setServerSocketPort(java.lang.Integer)" class="member-name-link">setServerSocketPort(Integer)</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Server port setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#setSharedCards(java.util.List)" class="member-name-link">setSharedCards(List&lt;SharedCard&gt;)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">The sharedCards setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#setShowDebug(boolean)" class="member-name-link">setShowDebug(boolean)</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Show verbose debug.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#setShowGUI(boolean)" class="member-name-link">setShowGUI(boolean)</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Show GUI setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.html#setSocketClientConnected(int)" class="member-name-link">setSocketClientConnected(int)</a> - Static method in class it.polimi.is23am10.server.<a href="../it/polimi/is23am10/server/Server.html" title="class in it.polimi.is23am10.server">Server</a></dt>
    +<dd>
    +<div class="block">Set the current number of clients connected to the socket.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html#setStartPlayingTimeMs(long)" class="member-name-link">setStartPlayingTimeMs(long)</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></dt>
    +<dd>
    +<div class="block">The start playing time setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#setStatus(it.polimi.is23am10.server.model.game.Game.GameStatus)" class="member-name-link">setStatus(Game.GameStatus)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">The status setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.html#setTile(it.polimi.is23am10.server.model.items.tile.Tile.TileType)" class="member-name-link">setTile(Tile.TileType)</a> - Method in class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></dt>
    +<dd>
    +<div class="block">The method that allows us to manually change the type of a specific Tile.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#setUseRMI(boolean)" class="member-name-link">setUseRMI(boolean)</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Use RMI setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#setWinnerPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setWinnerPlayer(Player)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">WinnerPlayer setter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a> - Class in <a href="../it/polimi/is23am10/server/model/items/card/package-summary.html">it.polimi.is23am10.server.model.items.card</a></dt>
    +<dd>
    +<div class="block">Shared card object.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html#%3Cinit%3E(java.util.List,java.lang.Integer)" class="member-name-link">SharedCard(List&lt;SharedPattern&lt;Predicate&lt;Bookshelf&gt;&gt;&gt;, Integer)</a> - Constructor for class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#sharedCardHeaderDescription" class="member-name-link">sharedCardHeaderDescription</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#sharedCardsBody" class="member-name-link">sharedCardsBody</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#sharedCardsBodyDescription" class="member-name-link">sharedCardsBodyDescription</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#sharedCardsHeader" class="member-name-link">sharedCardsHeader</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/SharedPattern.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="../it/polimi/is23am10/server/model/pattern/SharedPattern.html" title="type parameter in SharedPattern">T</a>&gt; - Class in <a href="../it/polimi/is23am10/server/model/pattern/package-summary.html">it.polimi.is23am10.server.model.pattern</a></dt>
    +<dd>
    +<div class="block">Shared pattern object.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/SharedPattern.html#%3Cinit%3E(T,java.lang.Integer)" class="member-name-link">SharedPattern(T, Integer)</a> - Constructor for class it.polimi.is23am10.server.model.pattern.<a href="../it/polimi/is23am10/server/model/pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a></dt>
    +<dd>
    +<div class="block">The constructor of the class SharedPattern.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a> - Class in <a href="../it/polimi/is23am10/server/model/factory/package-summary.html">it.polimi.is23am10.server.model.factory</a></dt>
    +<dd>
    +<div class="block">Shared pattern factory object.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#sharedPatternsDesc" class="member-name-link">sharedPatternsDesc</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#show(it.polimi.is23am10.server.network.virtualview.VirtualView,boolean)" class="member-name-link">show(VirtualView, boolean)</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Print the current game status on console.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#SHOW_GUI_CLI_COMMAND" class="member-name-link">SHOW_GUI_CLI_COMMAND</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">The show gui cli command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.html#showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">showServerMessage(AbstractMessage)</a> - Method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a></dt>
    +<dd>
    +<div class="block">Show the received message to the client.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/IClient.html#showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">showServerMessage(AbstractMessage)</a> - Method in interface it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/IClient.html" title="interface in it.polimi.is23am10.client">IClient</a></dt>
    +<dd>
    +<div class="block">Displays a server message on the client.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html#SNOOZE_ACK" class="member-name-link">SNOOZE_ACK</a> - Enum constant in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></dt>
    +<dd>
    +<div class="block">ACK message sent from server to client to confirm that the timer has
    + been snoozed.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html#SNOOZE_TIMER_COMMAND_PREFIX" class="member-name-link">SNOOZE_TIMER_COMMAND_PREFIX</a> - Static variable in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a></dt>
    +<dd>
    +<div class="block"><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#GAME_TIMER"><code>AbstractCommand.Opcode.GAME_TIMER</code></a> prefix string.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/SnoozeACKMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">SnoozeACKMessage</a> - Class in <a href="../it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></dt>
    +<dd>
    +<div class="block">Class representing a ACK message sent from server to client
    + in response to a snooze command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/SnoozeACKMessage.html#%3Cinit%3E()" class="member-name-link">SnoozeACKMessage()</a> - Constructor for class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/SnoozeACKMessage.html" title="class in it.polimi.is23am10.server.network.messages">SnoozeACKMessage</a></dt>
    +<dd>
    +<div class="block">Public constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">SnoozeGameTimerCommand</a> - Class in <a href="../it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></dt>
    +<dd>
    +<div class="block">The snooze game timer command class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html#%3Cinit%3E(java.lang.String)" class="member-name-link">SnoozeGameTimerCommand(String)</a> - Constructor for class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html" title="class in it.polimi.is23am10.server.command">SnoozeGameTimerCommand</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html#snoozeTimerConsumer" class="member-name-link">snoozeTimerConsumer</a> - Static variable in interface it.polimi.is23am10.server.controller.interfaces.<a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></dt>
    +<dd>
    +<div class="block">The <a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#GAME_TIMER"><code>AbstractCommand.Opcode.GAME_TIMER</code></a> command callback worker.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#SOCKET_PORT_CLI_COMMAND" class="member-name-link">SOCKET_PORT_CLI_COMMAND</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">The socket port cli command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/SocketClient.html" class="type-name-link" title="class in it.polimi.is23am10.client">SocketClient</a> - Class in <a href="../it/polimi/is23am10/client/package-summary.html">it.polimi.is23am10.client</a></dt>
    +<dd>
    +<div class="block">A client using Socket as communication method.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/SocketClient.html#%3Cinit%3E(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket,it.polimi.is23am10.client.userinterface.UserInterface)" class="member-name-link">SocketClient(PlayerConnectorSocket, UserInterface)</a> - Constructor for class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/SocketClient.html" title="class in it.polimi.is23am10.client">SocketClient</a></dt>
    +<dd>
    +<div class="block">Public constructor for client using Socket as communication method.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html#SPLASH_SCREEN" class="member-name-link">SPLASH_SCREEN</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#stages" class="member-name-link">stages</a> - Static variable in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">A mapping from a <a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory"><code>GuiFactory.SCENE</code></a> to a <code>Scene</code>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/interfaces/AlarmConsumer.html#start()" class="member-name-link">start()</a> - Method in interface it.polimi.is23am10.client.interfaces.<a href="../it/polimi/is23am10/client/interfaces/AlarmConsumer.html" title="interface in it.polimi.is23am10.client.interfaces">AlarmConsumer</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.html#start(it.polimi.is23am10.utils.config.AppConfigContext)" class="member-name-link">start(AppConfigContext)</a> - Method in class it.polimi.is23am10.server.<a href="../it/polimi/is23am10/server/Server.html" title="class in it.polimi.is23am10.server">Server</a></dt>
    +<dd>
    +<div class="block">Server entry point.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#start(javafx.stage.Stage)" class="member-name-link">start(Stage)</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#START" class="member-name-link">START</a> - Enum constant in enum class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></dt>
    +<dd>
    +<div class="block">Start a new game command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html#START_COMMAND_PREFIX" class="member-name-link">START_COMMAND_PREFIX</a> - Static variable in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerDebugPrefixString.html" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a></dt>
    +<dd>
    +<div class="block"><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#START"><code>AbstractCommand.Opcode.START</code></a> prefix string.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html#startConsumer" class="member-name-link">startConsumer</a> - Static variable in interface it.polimi.is23am10.server.controller.interfaces.<a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></dt>
    +<dd>
    +<div class="block">The <a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#START"><code>AbstractCommand.Opcode.START</code></a> command callback worker.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html#STARTED" class="member-name-link">STARTED</a> - Enum constant in enum class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.ServerStatus.html#STARTED" class="member-name-link">STARTED</a> - Enum constant in enum class it.polimi.is23am10.server.<a href="../it/polimi/is23am10/server/Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/StartGameCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">StartGameCommand</a> - Class in <a href="../it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></dt>
    +<dd>
    +<div class="block">The start game command class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/StartGameCommand.html#%3Cinit%3E(java.lang.String,java.lang.Integer)" class="member-name-link">StartGameCommand(String, Integer)</a> - Constructor for class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/StartGameCommand.html" title="class in it.polimi.is23am10.server.command">StartGameCommand</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#status" class="member-name-link">status</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.html#status()" class="member-name-link">status()</a> - Method in class it.polimi.is23am10.server.<a href="../it/polimi/is23am10/server/Server.html" title="class in it.polimi.is23am10.server">Server</a></dt>
    +<dd>
    +<div class="block">Check the current serverSocket status.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.html#stop()" class="member-name-link">stop()</a> - Method in class it.polimi.is23am10.server.<a href="../it/polimi/is23am10/server/Server.html" title="class in it.polimi.is23am10.server">Server</a></dt>
    +<dd>
    +<div class="block">Stop the serverSocket.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.ServerStatus.html#STOPPED" class="member-name-link">STOPPED</a> - Enum constant in enum class it.polimi.is23am10.server.<a href="../it/polimi/is23am10/server/Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html#switchToPlayerBookshelf" class="member-name-link">switchToPlayerBookshelf</a> - Static variable in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></dt>
    +<dd>
    +<div class="block">Callback for "see XYZ's bookshelf" button.</div>
    +</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-19.html b/deliverables/javadoc/index-files/index-19.html
    new file mode 100644
    index 00000000..474d39b8
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-19.html
    @@ -0,0 +1,142 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>T-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: T">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:T">T</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#tab" class="member-name-link">tab</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#tabBlackSquare" class="member-name-link">tabBlackSquare</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#tableBody1" class="member-name-link">tableBody1</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#tableBody2" class="member-name-link">tableBody2</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#tableHeader1" class="member-name-link">tableHeader1</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#tableHeader2" class="member-name-link">tableHeader2</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#tableLines1" class="member-name-link">tableLines1</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#tableLines2" class="member-name-link">tableLines2</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#takeMsgQueue()" class="member-name-link">takeMsgQueue()</a> - Static method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Retrirve the head of the message queue.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#takeTileAction(it.polimi.is23am10.utils.Coordinates)" class="member-name-link">takeTileAction(Coordinates)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Function that allows the player to take a tile from the board.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#takeTileAt(java.lang.Integer,java.lang.Integer)" class="member-name-link">takeTileAt(Integer, Integer)</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">Retrieve the tile in a specific board position.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.html#terminateClient()" class="member-name-link">terminateClient()</a> - Method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a></dt>
    +<dd>
    +<div class="block">Method to terminate the client and all client's threads.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#terminateUserInterface()" class="member-name-link">terminateUserInterface()</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Method used when game is over to close input and eventually show infos.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#terminateUserInterface()" class="member-name-link">terminateUserInterface()</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Method used when game is over to close input and eventually show infos.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/UserInterface.html#terminateUserInterface()" class="member-name-link">terminateUserInterface()</a> - Method in interface it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></dt>
    +<dd>
    +<div class="block">Method used when game is over to close input and eventually show infos.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/TextFieldCallBack.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">TextFieldCallBack</a> - Interface in <a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a></dt>
    +<dd>
    +<div class="block">The TextFieldCallBack interface represents a callback that is invoked when a text field event occurs.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory.html" class="type-name-link" title="class in it.polimi.is23am10.utils">ThreadLocalTypeAdapterFactory</a> - Class in <a href="../it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory.html#%3Cinit%3E()" class="member-name-link">ThreadLocalTypeAdapterFactory()</a> - Constructor for class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory.html" title="class in it.polimi.is23am10.utils">ThreadLocalTypeAdapterFactory</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a> - Class in <a href="../it/polimi/is23am10/server/model/items/tile/package-summary.html">it.polimi.is23am10.server.model.items.tile</a></dt>
    +<dd>
    +<div class="block">The tile class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.html#%3Cinit%3E(it.polimi.is23am10.server.model.items.tile.Tile)" class="member-name-link">Tile(Tile)</a> - Constructor for class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></dt>
    +<dd>
    +<div class="block">Copy constructor for Tile.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.html#%3Cinit%3E(it.polimi.is23am10.server.model.items.tile.Tile.TileType)" class="member-name-link">Tile(Tile.TileType)</a> - Constructor for class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#TILE_TYPE_NUM" class="member-name-link">TILE_TYPE_NUM</a> - Static variable in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">The number of tiles for each <a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a> - Enum Class in <a href="../it/polimi/is23am10/server/model/items/tile/package-summary.html">it.polimi.is23am10.server.model.items.tile</a></dt>
    +<dd>
    +<div class="block">An enumeration about the available tile types.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#topPaddingBoard" class="member-name-link">topPaddingBoard</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/Coordinates.html#toString()" class="member-name-link">toString()</a> - Method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#totalScore" class="member-name-link">totalScore</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#TROPHY" class="member-name-link">TROPHY</a> - Enum constant in enum class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-2.html b/deliverables/javadoc/index-files/index-2.html
    new file mode 100644
    index 00000000..c3c7537d
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-2.html
    @@ -0,0 +1,194 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>B-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: B">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:B">B</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK" class="member-name-link">BLACK</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_BACKGROUND" class="member-name-link">BLACK_BACKGROUND</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_BACKGROUND_BRIGHT" class="member-name-link">BLACK_BACKGROUND_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_BOLD" class="member-name-link">BLACK_BOLD</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_BOLD_BRIGHT" class="member-name-link">BLACK_BOLD_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_BRIGHT" class="member-name-link">BLACK_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLACK_UNDERLINED" class="member-name-link">BLACK_UNDERLINED</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#blackLargeSquare" class="member-name-link">blackLargeSquare</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#blackSquareTab" class="member-name-link">blackSquareTab</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE" class="member-name-link">BLUE</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_BACKGROUND" class="member-name-link">BLUE_BACKGROUND</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_BACKGROUND_BRIGHT" class="member-name-link">BLUE_BACKGROUND_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_BOLD" class="member-name-link">BLUE_BOLD</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_BOLD_BRIGHT" class="member-name-link">BLUE_BOLD_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_BRIGHT" class="member-name-link">BLUE_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#BLUE_UNDERLINED" class="member-name-link">BLUE_UNDERLINED</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board">Board</a> - Class in <a href="../it/polimi/is23am10/server/model/items/board/package-summary.html">it.polimi.is23am10.server.model.items.board</a></dt>
    +<dd>
    +<div class="block">Game's board class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#%3Cinit%3E(it.polimi.is23am10.server.model.items.board.Board)" class="member-name-link">Board(Board)</a> - Constructor for class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">Copy constructor for Board.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#%3Cinit%3E(java.lang.Integer)" class="member-name-link">Board(Integer)</a> - Constructor for class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#BOARD_GRID_COLS" class="member-name-link">BOARD_GRID_COLS</a> - Static variable in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">The game board max col value.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#BOARD_GRID_ROWS" class="member-name-link">BOARD_GRID_ROWS</a> - Static variable in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">The game board max row value.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle board grid out of bounds column values.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html#%3Cinit%3E(java.lang.Integer)" class="member-name-link">BoardGridColIndexOutOfBoundsException(Integer)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.board.exceptions.<a href="../it/polimi/is23am10/server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle board grid out of bounds row values.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html#%3Cinit%3E(java.lang.Integer)" class="member-name-link">BoardGridRowIndexOutOfBoundsException(Integer)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.board.exceptions.<a href="../it/polimi/is23am10/server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#boardStatus" class="member-name-link">boardStatus</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#BOOK" class="member-name-link">BOOK</a> - Enum constant in enum class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a> - Class in <a href="../it/polimi/is23am10/server/model/items/bookshelf/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf</a></dt>
    +<dd>
    +<div class="block">Players' bookshelf class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#%3Cinit%3E()" class="member-name-link">Bookshelf()</a> - Constructor for class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">Constructor for the Bookshelf instance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#%3Cinit%3E(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)" class="member-name-link">Bookshelf(Bookshelf)</a> - Constructor for class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">Copy constructor of Bookshelf.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#%3Cinit%3E(java.lang.String)" class="member-name-link">Bookshelf(String)</a> - Constructor for class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">This constructor takes a 30 char long string containing the content
    + of a bookshelf, with each tile associated to a letter, as shown below
    + and builds and returns the matching bookshelf object.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#BOOKSHELF_COLS" class="member-name-link">BOOKSHELF_COLS</a> - Static variable in class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">The bookshelf max columns value.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#BOOKSHELF_ROWS" class="member-name-link">BOOKSHELF_ROWS</a> - Static variable in class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">The bookshelf max rows value.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#bookshelfError" class="member-name-link">bookshelfError</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle bookshelf grid out of bounds column values.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html#%3Cinit%3E(java.lang.Integer)" class="member-name-link">BookshelfGridColIndexOutOfBoundsException(Integer)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle bookshelf grid out of bounds row values.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html#%3Cinit%3E(java.lang.Integer)" class="member-name-link">BookshelfGridRowIndexOutOfBoundsException(Integer)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#bookshelfPoints" class="member-name-link">bookshelfPoints</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/BookShelfSelectionCallBack.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">BookShelfSelectionCallBack</a> - Interface in <a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a></dt>
    +<dd>
    +<div class="block">The BookShelfSelectionCallBack interface represents a callback for bookshelf selection events.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#bottomPaddingBoard" class="member-name-link">bottomPaddingBoard</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#broadcastErrorString" class="member-name-link">broadcastErrorString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#broadcastMessageString" class="member-name-link">broadcastMessageString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#buildCreateGameCmd(java.lang.String)" class="member-name-link">buildCreateGameCmd(String)</a> - Static method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></dt>
    +<dd>
    +<div class="block">Builds a create game command with the specified player name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#buildJoinGameCmd(java.lang.String)" class="member-name-link">buildJoinGameCmd(String)</a> - Static method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></dt>
    +<dd>
    +<div class="block">Builds a join game command with the specified game ID.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/ButtonCallBack.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a> - Interface in <a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a></dt>
    +<dd>
    +<div class="block">The ButtonCallBack interface represents a callback function that is invoked when a button is clicked.</div>
    +</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-20.html b/deliverables/javadoc/index-files/index-20.html
    new file mode 100644
    index 00000000..03c41b9c
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-20.html
    @@ -0,0 +1,94 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>U-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: U">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:U">U</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html#updateBookshelf(javafx.scene.layout.StackPane,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,java.lang.String)" class="member-name-link">updateBookshelf(StackPane, Bookshelf, String)</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.GameSnapshotFactory</a></dt>
    +<dd>
    +<div class="block">Method used to update the bookshelf currently on stage.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html#updateChatHistory(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">updateChatHistory(StackPane, AbstractMessage)</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.GameSnapshotFactory</a></dt>
    +<dd>
    +<div class="block">Method used to update the chat widget dynamically.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#updateCurrentPlayerHandler()" class="member-name-link">updateCurrentPlayerHandler()</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dd>
    +<div class="block">Update the current player handler based on the game model updates.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html#updateGameWidget(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">updateGameWidget(StackPane, VirtualView, VirtualView)</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.GameSnapshotFactory</a></dt>
    +<dd>
    +<div class="block">Method used to update the current game widget scene dynamically.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#updateScore()" class="member-name-link">updateScore()</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">Function to be called by <a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> at the end of Player's turn.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#USE_RMI_CLI_COMMAND" class="member-name-link">USE_RMI_CLI_COMMAND</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">The use rmi cli command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.html#userInterface" class="member-name-link">userInterface</a> - Variable in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a></dt>
    +<dd>
    +<div class="block">Interface used for communicating with the user.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/UserInterface.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a> - Interface in <a href="../it/polimi/is23am10/client/userinterface/package-summary.html">it.polimi.is23am10.client.userinterface</a></dt>
    +<dd>
    +<div class="block">The user interface.</div>
    +</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-21.html b/deliverables/javadoc/index-files/index-21.html
    new file mode 100644
    index 00000000..158d6871
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-21.html
    @@ -0,0 +1,191 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>V-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: V">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:V">V</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/utils/CommandSyntaxValidator.html#validateColIdx(java.lang.String)" class="member-name-link">validateColIdx(String)</a> - Static method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/CommandSyntaxValidator.html" title="class in it.polimi.is23am10.utils">CommandSyntaxValidator</a></dt>
    +<dd>
    +<div class="block">Method validator of column index input.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/CommandSyntaxValidator.html#validateCoord(java.lang.String)" class="member-name-link">validateCoord(String)</a> - Static method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/CommandSyntaxValidator.html" title="class in it.polimi.is23am10.utils">CommandSyntaxValidator</a></dt>
    +<dd>
    +<div class="block">Method validator of coordinates input.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/CommandSyntaxValidator.html#validateGameIdx(java.lang.String,java.lang.Integer)" class="member-name-link">validateGameIdx(String, Integer)</a> - Static method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/CommandSyntaxValidator.html" title="class in it.polimi.is23am10.utils">CommandSyntaxValidator</a></dt>
    +<dd>
    +<div class="block">Method validator of game index input.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/MovesValidator.html#validateGameMoves(java.util.Map,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,it.polimi.is23am10.server.model.items.board.Board)" class="member-name-link">validateGameMoves(Map&lt;Coordinates, Coordinates&gt;, Bookshelf, Board)</a> - Static method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/MovesValidator.html" title="class in it.polimi.is23am10.utils">MovesValidator</a></dt>
    +<dd>
    +<div class="block">Validates the game moves for the given moves, bookshelf and board.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/CommandSyntaxValidator.html#validateMaxPlayer(java.lang.String)" class="member-name-link">validateMaxPlayer(String)</a> - Static method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/CommandSyntaxValidator.html" title="class in it.polimi.is23am10.utils">CommandSyntaxValidator</a></dt>
    +<dd>
    +<div class="block">Method validator of max player input.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/IndexValidator.html#validColIndex(java.lang.Integer,java.lang.Integer)" class="member-name-link">validColIndex(Integer, Integer)</a> - Static method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/IndexValidator.html" title="class in it.polimi.is23am10.utils">IndexValidator</a></dt>
    +<dd>
    +<div class="block">Validate the column index.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/IndexValidator.html#validRowIndex(java.lang.Integer,java.lang.Integer)" class="member-name-link">validRowIndex(Integer, Integer)</a> - Static method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/IndexValidator.html" title="class in it.polimi.is23am10.utils">IndexValidator</a></dt>
    +<dd>
    +<div class="block">Validate the row index.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.ServerStatus.html#valueOf(java.lang.String)" class="member-name-link">valueOf(String)</a> - Static method in enum class it.polimi.is23am10.server.<a href="../it/polimi/is23am10/server/Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></dt>
    +<dd>
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html#values()" class="member-name-link">values()</a> - Static method in enum class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html#values()" class="member-name-link">values()</a> - Static method in enum class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html#values()" class="member-name-link">values()</a> - Static method in enum class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#values()" class="member-name-link">values()</a> - Static method in enum class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html#values()" class="member-name-link">values()</a> - Static method in enum class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#values()" class="member-name-link">values()</a> - Static method in enum class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html#values()" class="member-name-link">values()</a> - Static method in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html#values()" class="member-name-link">values()</a> - Static method in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.ServerStatus.html#values()" class="member-name-link">values()</a> - Static method in enum class it.polimi.is23am10.server.<a href="../it/polimi/is23am10/server/Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></dt>
    +<dd>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#verticalBoardIndex" class="member-name-link">verticalBoardIndex</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a> - Class in <a href="../it/polimi/is23am10/server/network/virtualview/package-summary.html">it.polimi.is23am10.server.network.virtualview</a></dt>
    +<dd>
    +<div class="block">A virtual view with the state of a player, downscoped
    + to what is essential for the client to view</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html#%3Cinit%3E(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">VirtualPlayer(Player)</a> - Constructor for class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></dt>
    +<dd>
    +<div class="block">Public constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a> - Class in <a href="../it/polimi/is23am10/server/network/virtualview/package-summary.html">it.polimi.is23am10.server.network.virtualview</a></dt>
    +<dd>
    +<div class="block">A virtual view with the state of the game, downscoped
    + to what is essential for the client to view</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#%3Cinit%3E(it.polimi.is23am10.server.model.game.Game)" class="member-name-link">VirtualView(Game)</a> - Constructor for class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Public constructor.</div>
    +</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-22.html b/deliverables/javadoc/index-files/index-22.html
    new file mode 100644
    index 00000000..5bfff436
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-22.html
    @@ -0,0 +1,145 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>W-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: W">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:W">W</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html#WAIT_GAME" class="member-name-link">WAIT_GAME</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html#WAITING_FOR_PLAYERS" class="member-name-link">WAITING_FOR_PLAYERS</a> - Enum constant in enum class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#waitingForPlayers" class="member-name-link">waitingForPlayers</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#warning(java.lang.String,boolean)" class="member-name-link">warning(String, boolean)</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Prints a warning line on console.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html#WARNING" class="member-name-link">WARNING</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html#WARNING" class="member-name-link">WARNING</a> - Enum constant in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#WARNING_PLAYER_DISCONNECT" class="member-name-link">WARNING_PLAYER_DISCONNECT</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message warning sent to all players to inform them of a player
    + leaving the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#WARNING_PLAYER_JOIN" class="member-name-link">WARNING_PLAYER_JOIN</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message warning sent to all players to inform them of a new player
    + joining the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#WARNING_PLAYER_JOIN_SERVER" class="member-name-link">WARNING_PLAYER_JOIN_SERVER</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message warning logged when new player is joining the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#WARNING_PLAYER_REJOIN" class="member-name-link">WARNING_PLAYER_REJOIN</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message warning sent to all players to inform them of a new player
    + joining the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#welcomeString" class="member-name-link">welcomeString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE" class="member-name-link">WHITE</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_BACKGROUND" class="member-name-link">WHITE_BACKGROUND</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_BACKGROUND_BRIGHT" class="member-name-link">WHITE_BACKGROUND_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_BOLD" class="member-name-link">WHITE_BOLD</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_BOLD_BRIGHT" class="member-name-link">WHITE_BOLD_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_BRIGHT" class="member-name-link">WHITE_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#WHITE_UNDERLINED" class="member-name-link">WHITE_UNDERLINED</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#winnerString" class="member-name-link">winnerString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/WrongBookShelfPicksException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a> - Exception Class in <a href="../it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle wrong picks inside the book shelf.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/WrongBookShelfPicksException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">WrongBookShelfPicksException(String)</a> - Constructor for exception class it.polimi.is23am10.utils.exceptions.<a href="../it/polimi/is23am10/utils/exceptions/WrongBookShelfPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongCharBookshelfStringException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongCharBookshelfStringException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></dt>
    +<dd>
    +<div class="block">One char in the bookshelfString is not among the possibles <a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a>
    + Can be used public methods of <a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf"><code>Bookshelf</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongCharBookshelfStringException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">WrongCharBookshelfStringException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongCharBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongCharBookshelfStringException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/WrongGameBoardPicksException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">WrongGameBoardPicksException</a> - Exception Class in <a href="../it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle wrong picks inside the game board.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/WrongGameBoardPicksException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">WrongGameBoardPicksException(String)</a> - Constructor for exception class it.polimi.is23am10.utils.exceptions.<a href="../it/polimi/is23am10/utils/exceptions/WrongGameBoardPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongGameBoardPicksException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongLengthBookshelfStringException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongLengthBookshelfStringException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></dt>
    +<dd>
    +<div class="block">bookshelfString given to the constructor has wrong length
    + Can be used public methods of <a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf"><code>Bookshelf</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongLengthBookshelfStringException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">WrongLengthBookshelfStringException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongLengthBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongLengthBookshelfStringException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/WrongMovesNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">WrongMovesNumberException</a> - Exception Class in <a href="../it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle wrong movements number.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/WrongMovesNumberException.html#%3Cinit%3E()" class="member-name-link">WrongMovesNumberException()</a> - Constructor for exception class it.polimi.is23am10.utils.exceptions.<a href="../it/polimi/is23am10/utils/exceptions/WrongMovesNumberException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongMovesNumberException</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-23.html b/deliverables/javadoc/index-files/index-23.html
    new file mode 100644
    index 00000000..61beea24
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-23.html
    @@ -0,0 +1,70 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>X-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: X">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:X">X</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#XL_PADDING" class="member-name-link">XL_PADDING</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#XS_PADDING" class="member-name-link">XS_PADDING</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#XXL_PADDING" class="member-name-link">XXL_PADDING</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#XXS_PADDING" class="member-name-link">XXS_PADDING</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-24.html b/deliverables/javadoc/index-files/index-24.html
    new file mode 100644
    index 00000000..36cd74e1
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-24.html
    @@ -0,0 +1,78 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Y-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: Y">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:Y">Y</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW" class="member-name-link">YELLOW</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_BACKGROUND" class="member-name-link">YELLOW_BACKGROUND</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_BACKGROUND_BRIGHT" class="member-name-link">YELLOW_BACKGROUND_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_BOLD" class="member-name-link">YELLOW_BOLD</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_BOLD_BRIGHT" class="member-name-link">YELLOW_BOLD_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_BRIGHT" class="member-name-link">YELLOW_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#YELLOW_UNDERLINED" class="member-name-link">YELLOW_UNDERLINED</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#yourTurn" class="member-name-link">yourTurn</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-3.html b/deliverables/javadoc/index-files/index-3.html
    new file mode 100644
    index 00000000..7b784b4e
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-3.html
    @@ -0,0 +1,346 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>C-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: C">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:C">C</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/BookShelfSelectionCallBack.html#call(java.lang.String)" class="member-name-link">call(String)</a> - Method in interface it.polimi.is23am10.client.userinterface.guifactory.interfaces.<a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/BookShelfSelectionCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">BookShelfSelectionCallBack</a></dt>
    +<dd>
    +<div class="block">The `call` method is invoked when a bookshelf selection event occurs.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/TextFieldCallBack.html#call(java.lang.String)" class="member-name-link">call(String)</a> - Method in interface it.polimi.is23am10.client.userinterface.guifactory.interfaces.<a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/TextFieldCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">TextFieldCallBack</a></dt>
    +<dd>
    +<div class="block">Called when a text field event occurs.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/ButtonCallBack.html#call(javafx.scene.control.TextField...)" class="member-name-link">call(TextField...)</a> - Method in interface it.polimi.is23am10.client.userinterface.guifactory.interfaces.<a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></dt>
    +<dd>
    +<div class="block">Executes the callback function when the button is clicked.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a> - Class in <a href="../it/polimi/is23am10/client/userinterface/guifactory/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></dt>
    +<dd>
    +<div class="block">The CallBack class provides various callback implementations used in the GUI.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html#%3Cinit%3E()" class="member-name-link">CallBack()</a> - Constructor for class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#CAT" class="member-name-link">CAT</a> - Enum constant in enum class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#chat(java.lang.String,boolean)" class="member-name-link">chat(String, boolean)</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Prints a chat message on console.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html#CHAT" class="member-name-link">CHAT</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html#CHAT_MESSAGE" class="member-name-link">CHAT_MESSAGE</a> - Enum constant in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></dt>
    +<dd>
    +<div class="block">Message containing a chat textual exchange between players.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a> - Class in <a href="../it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></dt>
    +<dd>
    +<div class="block">A message sent via chat.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html#%3Cinit%3E(it.polimi.is23am10.server.model.player.Player,java.lang.String)" class="member-name-link">ChatMessage(Player, String)</a> - Constructor for class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></dt>
    +<dd>
    +<div class="block">Public constructor for building a broadcast message.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html#%3Cinit%3E(it.polimi.is23am10.server.model.player.Player,java.lang.String,it.polimi.is23am10.server.model.player.Player)" class="member-name-link">ChatMessage(Player, String, Player)</a> - Constructor for class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></dt>
    +<dd>
    +<div class="block">Public constructor for building a direct message.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html#%3Cinit%3E(it.polimi.is23am10.server.model.player.Player,java.lang.String,java.lang.String)" class="member-name-link">ChatMessage(Player, String, String)</a> - Constructor for class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></dt>
    +<dd>
    +<div class="block">Public constructor for building a direct message.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkCornersMatch" class="member-name-link">checkCornersMatch</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkDiagonalsSameType" class="member-name-link">checkDiagonalsSameType</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>
    +<div class="block">#7 in rulebook, #11 in images
    + Rule that checks if the diagonals are filled with tiles of the same type.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkEightOfSameType" class="member-name-link">checkEightOfSameType</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#checkEndGame()" class="member-name-link">checkEndGame()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Function that checks if there's a player who completed
    + their bookshelf and sets flags accordingly.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkFourAdjacent" class="member-name-link">checkFourAdjacent</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>
    +<div class="block">#3 in rulebook, #8 in images
    + Rule that checks if there are at least 4 separate groups of 4 elements of
    + the same type in adjacent positions(row or column).</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkMaxThreeTypesInColumn" class="member-name-link">checkMaxThreeTypesInColumn</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>
    +<div class="block">#5 both in rulebook and images
    + Rule that checks if there are at least three columns containing maximum 3
    + different types of tiles.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkMaxThreeTypesInRow" class="member-name-link">checkMaxThreeTypesInRow</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>
    +<div class="block">#8 in rulebook, #7 in images
    + Rule that checks if there are maximum three different types in at least 4
    + rows.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkOrderedBookshelfColumns" class="member-name-link">checkOrderedBookshelfColumns</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>
    +<div class="block">#12 both in rulebook and images
    + Rule that checks if the columns in the bookshelf are ordered (asc o desc) and
    + the rest of the bookshelf is filled with <a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#EMPTY"><code>Tile.TileType.EMPTY</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern1" class="member-name-link">checkPattern1</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #1.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern10" class="member-name-link">checkPattern10</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #10.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern11" class="member-name-link">checkPattern11</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #11.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern12" class="member-name-link">checkPattern12</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #12.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern2" class="member-name-link">checkPattern2</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #2.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern3" class="member-name-link">checkPattern3</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #3.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern4" class="member-name-link">checkPattern4</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #4.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern5" class="member-name-link">checkPattern5</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #5.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern6" class="member-name-link">checkPattern6</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #6.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern7" class="member-name-link">checkPattern7</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #7.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern8" class="member-name-link">checkPattern8</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #8.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#checkPattern9" class="member-name-link">checkPattern9</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">PrivatePattern Rule #9.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkSquares" class="member-name-link">checkSquares</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkTilesXShape" class="member-name-link">checkTilesXShape</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>
    +<div class="block">#11 in rulebook, #10 in images
    + Rule that checks if there are 5 tiles of the same type on a 'X' shape.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkTwoAdjacent" class="member-name-link">checkTwoAdjacent</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>
    +<div class="block">#1 in rulebook, #4 in images
    + Rule that checks if there are at least six couples of the same tile type in
    + adjacent positions (row or column).</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkTwoColumnAllDiff" class="member-name-link">checkTwoColumnAllDiff</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>
    +<div class="block">#9 in rulebook, #2 in images
    + Rule that checks if there are at least two columns with all the elements of
    + different type.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#checkTwoRowsAllDiff" class="member-name-link">checkTwoRowsAllDiff</a> - Static variable in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>
    +<div class="block">#10 in rulebook, #6 in images
    + Rule that checks if there are at least two rows full of different types of
    + tiles.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#clean()" class="member-name-link">clean()</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Helper method to call to clean the console.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.html" class="type-name-link" title="class in it.polimi.is23am10.client">Client</a> - Class in <a href="../it/polimi/is23am10/client/package-summary.html">it.polimi.is23am10.client</a></dt>
    +<dd>
    +<div class="block">An abstract class representing the app running in client mode.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a> - Enum Class in <a href="../it/polimi/is23am10/client/package-summary.html">it.polimi.is23am10.client</a></dt>
    +<dd>
    +<div class="block">The three possible states in which the client can be.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ClientConnectionChecker.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ClientConnectionChecker</a> - Class in <a href="../it/polimi/is23am10/server/controller/package-summary.html">it.polimi.is23am10.server.controller</a></dt>
    +<dd>
    +<div class="block">The server client connection checker class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ClientConnectionChecker.html#%3Cinit%3E(long)" class="member-name-link">ClientConnectionChecker(long)</a> - Constructor for class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ClientConnectionChecker.html" title="class in it.polimi.is23am10.server.controller">ClientConnectionChecker</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a> - Class in <a href="../it/polimi/is23am10/client/userinterface/helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></dt>
    +<dd>
    +<div class="block">An helper class containing all the strings to display
    + to the user through UserInterface.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#%3Cinit%3E()" class="member-name-link">CLIStrings()</a> - Constructor for class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a> - Exception Class in <a href="../it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle index out of bounds values.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html#%3Cinit%3E(java.lang.String,java.lang.Integer,java.lang.Integer)" class="member-name-link">ColIndexOutOfBoundsException(String, Integer, Integer)</a> - Constructor for exception class it.polimi.is23am10.utils.exceptions.<a href="../it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a> - Class in <a href="../it/polimi/is23am10/client/userinterface/package-summary.html">it.polimi.is23am10.client.userinterface</a></dt>
    +<dd>
    +<div class="block">A client interface using command line as I/O.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#%3Cinit%3E(boolean)" class="member-name-link">CommandLineInterface(boolean)</a> - Constructor for class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Public constructor for CLI.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a> - Class in <a href="../it/polimi/is23am10/client/userinterface/helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></dt>
    +<dd>
    +<div class="block">Game mode string constants.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#%3Cinit%3E()" class="member-name-link">CommandsBuilder()</a> - Constructor for class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/exceptions/CommandSerializationErrorException.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">CommandSerializationErrorException</a> - Exception Class in <a href="../it/polimi/is23am10/server/controller/exceptions/package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom runtime exception to handle <a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command"><code>AbstractCommand.Opcode</code></a> deserialization errors.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/CommandSyntaxValidator.html" class="type-name-link" title="class in it.polimi.is23am10.utils">CommandSyntaxValidator</a> - Class in <a href="../it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></dt>
    +<dd>
    +<div class="block">Helper class to validate user input strings.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html#confirmJoinGameCallBack" class="member-name-link">confirmJoinGameCallBack</a> - Static variable in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></dt>
    +<dd>
    +<div class="block">A callback implementation for confirming joining a game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html#confirmNameCallBack" class="member-name-link">confirmNameCallBack</a> - Static variable in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></dt>
    +<dd>
    +<div class="block">A callback implementation for confirming a name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html#confirmPlayerNumCallBack" class="member-name-link">confirmPlayerNumCallBack</a> - Static variable in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></dt>
    +<dd>
    +<div class="block">A callback implementation for confirming the number of players.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html" class="type-name-link" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="../it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html" title="type parameter in ControllerConsumer">R</a>,<wbr><a href="../it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html" title="type parameter in ControllerConsumer">C</a>&gt; - Interface in <a href="../it/polimi/is23am10/server/controller/interfaces/package-summary.html">it.polimi.is23am10.server.controller.interfaces</a></dt>
    +<dd>
    +<div class="block">Custom functional interface definition for the controller consumer.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/Coordinates.html" class="type-name-link" title="class in it.polimi.is23am10.utils">Coordinates</a> - Class in <a href="../it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></dt>
    +<dd>
    +<div class="block">The Coordinate helper class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/Coordinates.html#%3Cinit%3E()" class="member-name-link">Coordinates()</a> - Constructor for class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></dt>
    +<dd>
    +<div class="block">Empty constructor that sets the coordinates in the origin.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/Coordinates.html#%3Cinit%3E(java.lang.Integer,java.lang.Integer)" class="member-name-link">Coordinates(Integer, Integer)</a> - Constructor for class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></dt>
    +<dd>
    +<div class="block">Constructor of Coordinates given the two indexes.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory.html#create(com.google.gson.Gson,com.google.gson.reflect.TypeToken)" class="member-name-link">create(Gson, TypeToken&lt;T&gt;)</a> - Method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory.html" title="class in it.polimi.is23am10.utils">ThreadLocalTypeAdapterFactory</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html#CREATE_GAME" class="member-name-link">CREATE_GAME</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html#CREATE_GAME" class="member-name-link">CREATE_GAME</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></dt>
    +<dd>
    +<div class="block">The command string for creating a game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#createGame" class="member-name-link">createGame</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html#createNewGameCallBack" class="member-name-link">createNewGameCallBack</a> - Static variable in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></dt>
    +<dd>
    +<div class="block">A callback implementation for creating a new game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#critical(java.lang.String,boolean)" class="member-name-link">critical(String, boolean)</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Prints a critical error line on console.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html#CRITICAL" class="member-name-link">CRITICAL</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html#CRITICAL" class="member-name-link">CRITICAL</a> - Enum constant in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a> - Class in <a href="../it/polimi/is23am10/server/network/gamehandler/package-summary.html">it.polimi.is23am10.server.network.gamehandler</a></dt>
    +<dd>
    +<div class="block">The current player handler class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html#%3Cinit%3E()" class="member-name-link">CurrentPlayerHandler()</a> - Constructor for class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#currentStateString" class="member-name-link">currentStateString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN" class="member-name-link">CYAN</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_BACKGROUND" class="member-name-link">CYAN_BACKGROUND</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_BACKGROUND_BRIGHT" class="member-name-link">CYAN_BACKGROUND_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_BOLD" class="member-name-link">CYAN_BOLD</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_BOLD_BRIGHT" class="member-name-link">CYAN_BOLD_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_BRIGHT" class="member-name-link">CYAN_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#CYAN_UNDERLINED" class="member-name-link">CYAN_UNDERLINED</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-4.html b/deliverables/javadoc/index-files/index-4.html
    new file mode 100644
    index 00000000..85b9d35a
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-4.html
    @@ -0,0 +1,164 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>D-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: D">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:D">D</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#debug(java.lang.String,boolean)" class="member-name-link">debug(String, boolean)</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Prints a debug line on console.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html#DEBUG" class="member-name-link">DEBUG</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#DEBUG_CLI_COMMAND" class="member-name-link">DEBUG_CLI_COMMAND</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">The debug command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#description" class="member-name-link">description</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html#deserialize(com.google.gson.JsonElement,java.lang.reflect.Type,com.google.gson.JsonDeserializationContext)" class="member-name-link">deserialize(JsonElement, Type, JsonDeserializationContext)</a> - Method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html" title="class in it.polimi.is23am10.utils">MoveTileCommandTypeAdaptor</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#disconnectedPlayers" class="member-name-link">disconnectedPlayers</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#displayAvailableGames(java.util.List)" class="member-name-link">displayAvailableGames(List&lt;VirtualView&gt;)</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Method called when the user wants to join an existing
    + game and has to pick between the available ones.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#displayAvailableGames(java.util.List)" class="member-name-link">displayAvailableGames(List&lt;VirtualView&gt;)</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Method called when the user wants to join an existing
    + game and has to pick between the available ones.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/UserInterface.html#displayAvailableGames(java.util.List)" class="member-name-link">displayAvailableGames(List&lt;VirtualView&gt;)</a> - Method in interface it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></dt>
    +<dd>
    +<div class="block">Method called when the user wants to join an existing
    + game and has to pick between the available ones.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)" class="member-name-link">displayChatMessage(ChatMessage)</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Method called to notify the user of a new chat message.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)" class="member-name-link">displayChatMessage(ChatMessage)</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Method called to notify the user of a new chat message.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/UserInterface.html#displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)" class="member-name-link">displayChatMessage(ChatMessage)</a> - Method in interface it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></dt>
    +<dd>
    +<div class="block">Method called to notify the user of a new chat message.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)" class="member-name-link">displayError(ErrorMessage)</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Method called to notify the user of an error.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)" class="member-name-link">displayError(ErrorMessage)</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Method called to notify the user of an error.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/UserInterface.html#displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)" class="member-name-link">displayError(ErrorMessage)</a> - Method in interface it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></dt>
    +<dd>
    +<div class="block">Method called to notify the user of an error.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#displayGameJoinGuide()" class="member-name-link">displayGameJoinGuide()</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Method to display a quick help guide to explain how
    + to join the games or create one.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#displayGameJoinGuide()" class="member-name-link">displayGameJoinGuide()</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Method to display a quick help guide to explain how
    + to join the games or create one.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/UserInterface.html#displayGameJoinGuide()" class="member-name-link">displayGameJoinGuide()</a> - Method in interface it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></dt>
    +<dd>
    +<div class="block">Method to display a quick help guide to explain how
    + to join the games or create one.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#displaySplashScreen()" class="member-name-link">displaySplashScreen()</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Method called when first running the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#displaySplashScreen()" class="member-name-link">displaySplashScreen()</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Method called when first running the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/UserInterface.html#displaySplashScreen()" class="member-name-link">displaySplashScreen()</a> - Method in interface it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></dt>
    +<dd>
    +<div class="block">Method called when first running the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">displayVirtualView(VirtualView, VirtualView)</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Method called to display the state of the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">displayVirtualView(VirtualView, VirtualView)</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Method called to display the state of the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/UserInterface.html#displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">displayVirtualView(VirtualView, VirtualView)</a> - Method in interface it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></dt>
    +<dd>
    +<div class="block">Method called to display the state of the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#doubleNewLine" class="member-name-link">doubleNewLine</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/exceptions/DuplicatePlayerNameException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/factory/exceptions/package-summary.html">it.polimi.is23am10.server.model.factory.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle duplicate player names inside a game instance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/exceptions/DuplicatePlayerNameException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">DuplicatePlayerNameException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.factory.exceptions.<a href="../it/polimi/is23am10/server/model/factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-5.html b/deliverables/javadoc/index-files/index-5.html
    new file mode 100644
    index 00000000..d7ca5c30
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-5.html
    @@ -0,0 +1,205 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>E-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: E">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:E">E</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#EMPTY" class="member-name-link">EMPTY</a> - Enum constant in enum class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html#END_GAME" class="member-name-link">END_GAME</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html#ENDED" class="member-name-link">ENDED</a> - Enum constant in enum class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html#ENTER_GAME_SELECTION" class="member-name-link">ENTER_GAME_SELECTION</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/command/GetAvailableGamesCommand.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/command/SendChatMessageCommand.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/SendChatMessageCommand.html" title="class in it.polimi.is23am10.server.command">SendChatMessageCommand</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html" title="class in it.polimi.is23am10.server.command">SnoozeGameTimerCommand</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/command/StartGameCommand.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/StartGameCommand.html" title="class in it.polimi.is23am10.server.command">StartGameCommand</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.model.items.scoreblock.<a href="../it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></dt>
    +<dd>
    +<div class="block">}</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.model.pattern.<a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/SharedPattern.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.model.pattern.<a href="../it/polimi/is23am10/server/model/pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dt><a href="../it/polimi/is23am10/utils/Coordinates.html#equals(java.lang.Object)" class="member-name-link">equals(Object)</a> - Method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></dt>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#error(java.lang.String,boolean)" class="member-name-link">error(String, boolean)</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Prints a error line on console.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html#ERROR" class="member-name-link">ERROR</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html#ERROR" class="member-name-link">ERROR</a> - Enum constant in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_ADDING_CONNECTOR" class="member-name-link">ERROR_ADDING_CONNECTOR</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in adding player connector.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_ADDING_HANDLER" class="member-name-link">ERROR_ADDING_HANDLER</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in adding game handler.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_ADDING_PLAYERS" class="member-name-link">ERROR_ADDING_PLAYERS</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in adding player to the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_GAME_FULL" class="member-name-link">ERROR_GAME_FULL</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error to be shown client-side when trying to join a game already full.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_GAME_STATE" class="member-name-link">ERROR_GAME_STATE</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in game model fault.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_INITIALIZING_NEW_GAME" class="member-name-link">ERROR_INITIALIZING_NEW_GAME</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in initializing the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_INVALID_MOVE" class="member-name-link">ERROR_INVALID_MOVE</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in executing a move chosen by the client.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_JOINING" class="member-name-link">ERROR_JOINING</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in adding player to the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html#ERROR_MESSAGE" class="member-name-link">ERROR_MESSAGE</a> - Enum constant in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></dt>
    +<dd>
    +<div class="block">Message containing an error to display to the player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_MESSAGE_DELIVERY" class="member-name-link">ERROR_MESSAGE_DELIVERY</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error on failure while pushing messages in player queues.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_RMI_EXPOSURE" class="member-name-link">ERROR_RMI_EXPOSURE</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in adding a new RMI player connector.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_SERVER_SIDE" class="member-name-link">ERROR_SERVER_SIDE</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error to be shown client-side to hide server-side controller failures
    + that the user can't help fixing (player connectors, gamehandlers, networking...).</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_SNOOZING_TIMER" class="member-name-link">ERROR_SNOOZING_TIMER</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in snoozing game time handler.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_SOCKET_CONNECTOR" class="member-name-link">ERROR_SOCKET_CONNECTOR</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error in retrieving socket connector.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html#ERROR_UPDATING_GAME" class="member-name-link">ERROR_UPDATING_GAME</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></dt>
    +<dd>
    +<div class="block">Message error on failure while pushing game updates in player queues.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#errorMessage" class="member-name-link">errorMessage</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a> - Class in <a href="../it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></dt>
    +<dd>
    +<div class="block">A message containing an error message to be sent to the client.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html#%3Cinit%3E(java.lang.String,it.polimi.is23am10.server.model.player.Player,it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity)" class="member-name-link">ErrorMessage(String, Player, ErrorMessage.ErrorSeverity)</a> - Constructor for class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></dt>
    +<dd>
    +<div class="block">Public constructor for ErrorMessage.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html#%3Cinit%3E(java.lang.String,it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity)" class="member-name-link">ErrorMessage(String, ErrorMessage.ErrorSeverity)</a> - Constructor for class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></dt>
    +<dd>
    +<div class="block">Public constructor for ErrorMessage in broadcast.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a> - Enum Class in <a href="../it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></dt>
    +<dd>
    +<div class="block">Three degrees of severity.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ErrorTypeString.html" class="type-name-link" title="class in it.polimi.is23am10.utils">ErrorTypeString</a> - Class in <a href="../it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></dt>
    +<dd>
    +<div class="block">Helper class to identify messages to be sent to client and to logger.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html#execute(it.polimi.is23am10.server.command.GetAvailableGamesCommand)" class="member-name-link">execute(GetAvailableGamesCommand)</a> - Method in interface it.polimi.is23am10.server.controller.interfaces.<a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></dt>
    +<dd>
    +<div class="block">Execute the client <a href="../it/polimi/is23am10/server/command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command"><code>GetAvailableGamesCommand</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html#execute(it.polimi.is23am10.server.command.GetAvailableGamesCommand)" class="member-name-link">execute(GetAvailableGamesCommand)</a> - Method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a></dt>
    +<dd>
    +<div class="block">Execute the client <a href="../it/polimi/is23am10/server/command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command"><code>GetAvailableGamesCommand</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html#execute(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,it.polimi.is23am10.server.command.AbstractCommand)" class="member-name-link">execute(AbstractPlayerConnector, AbstractCommand)</a> - Method in interface it.polimi.is23am10.server.controller.interfaces.<a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></dt>
    +<dd>
    +<div class="block">Execute the client request.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html#execute(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,it.polimi.is23am10.server.command.AbstractCommand)" class="member-name-link">execute(AbstractPlayerConnector, AbstractCommand)</a> - Method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a></dt>
    +<dd>
    +<div class="block">Execute the client request.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#executeOnJavaFX(java.lang.Runnable)" class="member-name-link">executeOnJavaFX(Runnable)</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">Executes a callback inside of JavaFX thread.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#extraPoints" class="member-name-link">extraPoints</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-6.html b/deliverables/javadoc/index-files/index-6.html
    new file mode 100644
    index 00000000..9efde913
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-6.html
    @@ -0,0 +1,83 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>F-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: F">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:F">F</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#firstPlayer" class="member-name-link">firstPlayer</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.html" class="type-name-link" title="class in it.polimi.is23am10.client.exceptions">ForceCloseApplicationException</a> - Exception Class in <a href="../it/polimi/is23am10/client/exceptions/package-summary.html">it.polimi.is23am10.client.exceptions</a></dt>
    +<dd>
    +<div class="block">Force application close.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.html#%3Cinit%3E()" class="member-name-link">ForceCloseApplicationException()</a> - Constructor for exception class it.polimi.is23am10.client.exceptions.<a href="../it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.html" title="class in it.polimi.is23am10.client.exceptions">ForceCloseApplicationException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#FRAME" class="member-name-link">FRAME</a> - Enum constant in enum class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/MoveCommandHelper.html#fromColIdxToCoord(java.lang.String,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,java.lang.Integer)" class="member-name-link">fromColIdxToCoord(String, Bookshelf, Integer)</a> - Static method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/MoveCommandHelper.html" title="class in it.polimi.is23am10.utils">MoveCommandHelper</a></dt>
    +<dd>
    +<div class="block">Method that takes the column input of the player bookshelf and returns the list of the 
    + first available empty coordinates.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/FullGameException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></dt>
    +<dd>
    +<div class="block">The game reached its maximum number of players.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/FullGameException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">FullGameException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.game.exceptions.<a href="../it/polimi/is23am10/server/model/game/exceptions/FullGameException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-7.html b/deliverables/javadoc/index-files/index-7.html
    new file mode 100644
    index 00000000..c973afdc
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-7.html
    @@ -0,0 +1,784 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>G-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: G">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:G">G</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game">Game</a> - Class in <a href="../it/polimi/is23am10/server/model/game/package-summary.html">it.polimi.is23am10.server.model.game</a></dt>
    +<dd>
    +<div class="block">The Game class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#%3Cinit%3E()" class="member-name-link">Game()</a> - Constructor for class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Constructor that assigns the only value that is
    + generated, immutable and not set by factory.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#GAME" class="member-name-link">GAME</a> - Enum constant in enum class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html#GAME_SELECTION" class="member-name-link">GAME_SELECTION</a> - Enum constant in enum class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></dt>
    +<dd>
    +<div class="block">Player selected name but not yet the game.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html#GAME_SNAPSHOT" class="member-name-link">GAME_SNAPSHOT</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html#GAME_SNAPSHOT" class="member-name-link">GAME_SNAPSHOT</a> - Enum constant in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></dt>
    +<dd>
    +<div class="block">Message containing a VirtualView, representing a game snapshot.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#GAME_TIMER" class="member-name-link">GAME_TIMER</a> - Enum constant in enum class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></dt>
    +<dd>
    +<div class="block">Game timer snooze command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.GameStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a> - Enum Class in <a href="../it/polimi/is23am10/server/model/game/package-summary.html">it.polimi.is23am10.server.model.game</a></dt>
    +<dd>
    +<div class="block">All the possible status the game can be in.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/GameFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">GameFactory</a> - Class in <a href="../it/polimi/is23am10/server/model/factory/package-summary.html">it.polimi.is23am10.server.model.factory</a></dt>
    +<dd>
    +<div class="block">The GameFactory class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a> - Class in <a href="../it/polimi/is23am10/server/network/gamehandler/package-summary.html">it.polimi.is23am10.server.network.gamehandler</a></dt>
    +<dd>
    +<div class="block">The match class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#%3Cinit%3E(java.lang.String,java.lang.Integer)" class="member-name-link">GameHandler(String, Integer)</a> - Constructor for class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/GameMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">GameMessage</a> - Class in <a href="../it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></dt>
    +<dd>
    +<div class="block">A message containing a serialized JSON of a virtual view instance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/GameMessage.html#%3Cinit%3E(it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">GameMessage(VirtualView)</a> - Constructor for class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/GameMessage.html" title="class in it.polimi.is23am10.server.network.messages">GameMessage</a></dt>
    +<dd>
    +<div class="block">Public constructor for virtualView message.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#gameOverString" class="member-name-link">gameOverString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html#%3Cinit%3E()" class="member-name-link">GameSnapshotFactory()</a> - Constructor for class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.GameSnapshotFactory</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/exceptions/GameSnapshotUpdateException.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">GameSnapshotUpdateException</a> - Exception Class in <a href="../it/polimi/is23am10/server/network/gamehandler/exceptions/package-summary.html">it.polimi.is23am10.server.network.gamehandler.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to wrap InterruptedException on game snapshot updates.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/exceptions/GameSnapshotUpdateException.html#%3Cinit%3E(it.polimi.is23am10.server.model.game.Game)" class="member-name-link">GameSnapshotUpdateException(Game)</a> - Constructor for exception class it.polimi.is23am10.server.network.gamehandler.exceptions.<a href="../it/polimi/is23am10/server/network/gamehandler/exceptions/GameSnapshotUpdateException.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">GameSnapshotUpdateException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#GET_GAMES" class="member-name-link">GET_GAMES</a> - Enum constant in enum class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></dt>
    +<dd>
    +<div class="block">Retrieve existing games to join command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.html#getActiveGameServers()" class="member-name-link">getActiveGameServers()</a> - Static method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a></dt>
    +<dd>
    +<div class="block">Available games param getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getActivePlayer()" class="member-name-link">getActivePlayer()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">ActivePlayer getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#getActivePlayer()" class="member-name-link">getActivePlayer()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Getter for active player</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getAssignedPrivatePatterns()" class="member-name-link">getAssignedPrivatePatterns()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Retrieve the already used <a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a>s.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getAssignedSharedPatterns()" class="member-name-link">getAssignedSharedPatterns()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Retrieve the already used <a href="../it/polimi/is23am10/server/model/pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>SharedPattern</code></a>s.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/GetAvailableGamesCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a> - Class in <a href="../it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></dt>
    +<dd>
    +<div class="block">The command used by player to get the list of the games they can join.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/GetAvailableGamesCommand.html#%3Cinit%3E()" class="member-name-link">GetAvailableGamesCommand()</a> - Constructor for class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html#getAvailableGamesConsumer" class="member-name-link">getAvailableGamesConsumer</a> - Static variable in interface it.polimi.is23am10.server.controller.interfaces.<a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></dt>
    +<dd>
    +<div class="block">The <a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#GET_GAMES"><code>AbstractCommand.Opcode.GET_GAMES</code></a> command callback worker.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html#getAvailableGamesConsumerRmi" class="member-name-link">getAvailableGamesConsumerRmi</a> - Static variable in interface it.polimi.is23am10.server.controller.interfaces.<a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></dt>
    +<dd>
    +<div class="block">The <a href="../it/polimi/is23am10/server/command/AbstractCommand.Opcode.html#GET_GAMES"><code>AbstractCommand.Opcode.GET_GAMES</code></a> command callback worker for RMI.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#getBlackMapAt(java.lang.Integer,java.lang.Integer)" class="member-name-link">getBlackMapAt(Integer, Integer)</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">View the tile in a specific black map position.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#getBoardGrid()" class="member-name-link">getBoardGrid()</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">boardGrid getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#getBookshelf()" class="member-name-link">getBookshelf()</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">bookshelf getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html#getBookshelf()" class="member-name-link">getBookshelf()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></dt>
    +<dd>
    +<div class="block">Getter for bookshelf.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper.html#getBookshelf(java.lang.Integer)" class="member-name-link">getBookshelf(Integer)</a> - Static method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">PrivatePatternsHelper</a></dt>
    +<dd>
    +<div class="block">Public function used to retrieve a bookshelf from its
    + private card.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#getBookshelfGrid()" class="member-name-link">getBookshelfGrid()</a> - Method in class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">bookshelfGrid getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#getBookshelfGridAt(java.lang.Integer,java.lang.Integer)" class="member-name-link">getBookshelfGridAt(Integer, Integer)</a> - Method in class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">bookshelfGrid index getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#getBookshelfPoints()" class="member-name-link">getBookshelfPoints()</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">bookshelfPoints getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#getBookshelfString()" class="member-name-link">getBookshelfString()</a> - Method in class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">Method used to get a string representation for a bookshelf.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html#getCardWinners()" class="member-name-link">getCardWinners()</a> - Method in class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a></dt>
    +<dd>
    +<div class="block">cardWinners getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/SendChatMessageCommand.html#getChatMessage()" class="member-name-link">getChatMessage()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/SendChatMessageCommand.html" title="class in it.polimi.is23am10.server.command">SendChatMessageCommand</a></dt>
    +<dd>
    +<div class="block">Chat message getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html#getClient()" class="member-name-link">getClient()</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a></dt>
    +<dd>
    +<div class="block">Retrive the <a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client"><code>Client</code></a> reference.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.html#getClientStatus()" class="member-name-link">getClientStatus()</a> - Method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a></dt>
    +<dd>
    +<div class="block">Client status getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/Coordinates.html#getCol()" class="member-name-link">getCol()</a> - Method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></dt>
    +<dd>
    +<div class="block">Column getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html#getConnector()" class="member-name-link">getConnector()</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a></dt>
    +<dd>
    +<div class="block">Getter for <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link"><code>Socket</code></a>, the low level connector.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#getCreateJoinScene(java.util.List)" class="member-name-link">getCreateJoinScene(List&lt;VirtualView&gt;)</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">Creates and returns a new JavaFX Scene for the join game selection screen.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#getCreateNewGameSelectionScene()" class="member-name-link">getCreateNewGameSelectionScene()</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">Creates and returns a new JavaFX Scene for the create new game selection
    + screen.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#getCurrentPlayerHandler()" class="member-name-link">getCurrentPlayerHandler()</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dd>
    +<div class="block">Current player handler getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getDisconnectedPlayersNum()" class="member-name-link">getDisconnectedPlayersNum()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Simple helper function to get the number of disconnected
    + players to discount when looking for available games.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#getDisconnectedPlayersNum()" class="member-name-link">getDisconnectedPlayersNum()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Simple helper function to get the number of disconnected
    + players to discount when looking for available games.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#getEndGameScene(it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">getEndGameScene(VirtualView)</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">Creates and returns a new JavaFX Scene for the game snapshot.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#getEnterGameSelectionScene()" class="member-name-link">getEnterGameSelectionScene()</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">Creates the enter game selection scene.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#getErrorMessage(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.messages.ErrorMessage)" class="member-name-link">getErrorMessage(StackPane, ErrorMessage)</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">Method that creates and shows the alert modal for error messages</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html#getErrorSeverity()" class="member-name-link">getErrorSeverity()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></dt>
    +<dd>
    +<div class="block">Getter for the severity.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#getExtraPoint()" class="member-name-link">getExtraPoint()</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">extraPoints getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getFirstPlayer()" class="member-name-link">getFirstPlayer()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">The firstPlayer getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#getFirstPlayer()" class="member-name-link">getFirstPlayer()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Getter for first player</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#getFormattedChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)" class="member-name-link">getFormattedChatMessage(ChatMessage)</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Helper function that returns a well-formatted chat message string.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#getFreeRowsInCol(int)" class="member-name-link">getFreeRowsInCol(int)</a> - Method in class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">Retrieve the number of <a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html#EMPTY"><code>Tile.TileType.EMPTY</code></a> inside the bookshelf for a
    + given column.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#getGame()" class="member-name-link">getGame()</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dd>
    +<div class="block">Getter for <a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> instance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/GameMessage.html#getGame()" class="member-name-link">getGame()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/GameMessage.html" title="class in it.polimi.is23am10.server.network.messages">GameMessage</a></dt>
    +<dd>
    +<div class="block">Getter for virtualView instance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getGameBoard()" class="member-name-link">getGameBoard()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">The gameBoard getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#getGameBoard()" class="member-name-link">getGameBoard()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Getter for game board</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerState.html#getGameHandlerByUUID(java.util.UUID)" class="member-name-link">getGameHandlerByUUID(UUID)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></dt>
    +<dd>
    +<div class="block">Finds a game handler in the game pool by its game id.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html#getGameId()" class="member-name-link">getGameId()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a></dt>
    +<dd>
    +<div class="block">Game id getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html#getGameId()" class="member-name-link">getGameId()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></dt>
    +<dd>
    +<div class="block">GameId getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getGameId()" class="member-name-link">getGameId()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">The gameId getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#getGameId()" class="member-name-link">getGameId()</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Getter for the associated game id.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html#getGameId()" class="member-name-link">getGameId()</a> - Method in interface it.polimi.is23am10.server.network.playerconnector.interfaces.<a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Getter for the associated game id.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#getGameId()" class="member-name-link">getGameId()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Getter for game id</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerState.html#getGamePools()" class="member-name-link">getGamePools()</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></dt>
    +<dd>
    +<div class="block">Game pool getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#getGameSnapshotScene(it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">getGameSnapshotScene(VirtualView)</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">Creates and returns a new JavaFX Scene for the game snapshot.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/AbstractPattern.html#getIndex()" class="member-name-link">getIndex()</a> - Method in class it.polimi.is23am10.server.model.pattern.<a href="../it/polimi/is23am10/server/model/pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a></dt>
    +<dd>
    +<div class="block">CardIndex getter</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#getIsActivePlayer()" class="member-name-link">getIsActivePlayer()</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">Getter of active player status.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#getIsConnected()" class="member-name-link">getIsConnected()</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">Getter of connected status.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html#getIsConnected()" class="member-name-link">getIsConnected()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></dt>
    +<dd>
    +<div class="block">Getter for connected status.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#getIsServer()" class="member-name-link">getIsServer()</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Is server getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#getIsServer()" class="member-name-link">getIsServer()</a> - Method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Is server getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#getKeepAlive()" class="member-name-link">getKeepAlive()</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Keep alive getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#getKeepAlive()" class="member-name-link">getKeepAlive()</a> - Method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Keep alive getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#getLastSnoozeMs()" class="member-name-link">getLastSnoozeMs()</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Get the client last snooze time in ms.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/PrivateCard.html#getMatchedBlocksCount()" class="member-name-link">getMatchedBlocksCount()</a> - Method in class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></dt>
    +<dd>
    +<div class="block">matchedBlocksCount getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#getMaxConnections()" class="member-name-link">getMaxConnections()</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Max connections getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#getMaxConnections()" class="member-name-link">getMaxConnections()</a> - Method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Max connections getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#getMaxInactivityTime()" class="member-name-link">getMaxInactivityTime()</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Max inactivity time getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#getMaxInactivityTime()" class="member-name-link">getMaxInactivityTime()</a> - Method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Max inactivity time getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getMaxPlayer()" class="member-name-link">getMaxPlayer()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">MaxPlayer getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/StartGameCommand.html#getMaxPlayers()" class="member-name-link">getMaxPlayers()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/StartGameCommand.html" title="class in it.polimi.is23am10.server.command">StartGameCommand</a></dt>
    +<dd>
    +<div class="block">Max player getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#getMaxPlayers()" class="member-name-link">getMaxPlayers()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Getter for max players</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.html#getMessage()" class="member-name-link">getMessage()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></dt>
    +<dd>
    +<div class="block">Getter for message.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#getMessageFromQueue()" class="member-name-link">getMessageFromQueue()</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Retrieve a message from the queue.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html#getMessageFromQueue()" class="member-name-link">getMessageFromQueue()</a> - Method in interface it.polimi.is23am10.server.network.playerconnector.interfaces.<a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Retrieve a message from the queue.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.html#getMessageType()" class="member-name-link">getMessageType()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></dt>
    +<dd>
    +<div class="block">Getter for message type.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html#getMoves()" class="member-name-link">getMoves()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></dt>
    +<dd>
    +<div class="block">Moves map getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html#getMovingPlayer()" class="member-name-link">getMovingPlayer()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></dt>
    +<dd>
    +<div class="block">Moving player getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#getMsgQueueSize()" class="member-name-link">getMsgQueueSize()</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Retrieve the message queue size.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html#getMsgQueueSize()" class="member-name-link">getMsgQueueSize()</a> - Method in interface it.polimi.is23am10.server.network.playerconnector.interfaces.<a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Retrieve the message queue size.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/GameFactory.html#getNewGame(java.lang.String,java.lang.Integer)" class="member-name-link">getNewGame(String, Integer)</a> - Static method in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/GameFactory.html" title="class in it.polimi.is23am10.server.model.factory">GameFactory</a></dt>
    +<dd>
    +<div class="block">Create a new <a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> instance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PlayerFactory.html#getNewPlayer(java.lang.String,it.polimi.is23am10.server.model.game.Game)" class="member-name-link">getNewPlayer(String, Game)</a> - Static method in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PlayerFactory.html" title="class in it.polimi.is23am10.server.model.factory">PlayerFactory</a></dt>
    +<dd>
    +<div class="block">Build a new <a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a> object.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html#getNotified()" class="member-name-link">getNotified()</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></dt>
    +<dd>
    +<div class="block">The notified getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html#getNotUsedPattern(java.util.List)" class="member-name-link">getNotUsedPattern(List&lt;PrivatePattern&lt;Function&lt;Bookshelf, Integer&gt;&gt;&gt;)</a> - Static method in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></dt>
    +<dd>
    +<div class="block">Method used to get random PrivatePattern between the 12 possible.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html#getNotUsedPattern(java.util.List)" class="member-name-link">getNotUsedPattern(List&lt;SharedPattern&lt;Predicate&lt;Bookshelf&gt;&gt;&gt;)</a> - Static method in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></dt>
    +<dd>
    +<div class="block">Method used to get random SharedPattern between the 12 possible.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AbstractCommand.html#getOpcode()" class="member-name-link">getOpcode()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></dt>
    +<dd>
    +<div class="block">Opcode getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/AbstractCard.html#getPattern()" class="member-name-link">getPattern()</a> - Method in class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a></dt>
    +<dd>
    +<div class="block">Pattern getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html#getPlayer()" class="member-name-link">getPlayer()</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></dt>
    +<dd>
    +<div class="block">The player getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#getPlayer()" class="member-name-link">getPlayer()</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Getter for the associated player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html#getPlayer()" class="member-name-link">getPlayer()</a> - Method in interface it.polimi.is23am10.server.network.playerconnector.interfaces.<a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></dt>
    +<dd>
    +<div class="block">Getter for the associated player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getPlayerByName(java.lang.String)" class="member-name-link">getPlayerByName(String)</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Method used to retrieve a player from the list
    + given its name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.html#getPlayerConnector()" class="member-name-link">getPlayerConnector()</a> - Static method in class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a></dt>
    +<dd>
    +<div class="block">Retrieve the player connector intance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#getPlayerConnectorFromPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">getPlayerConnectorFromPlayer(Player)</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dd>
    +<div class="block">Retrieve the <a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector"><code>AbstractPlayerConnector</code></a> from a <a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a> instance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#getPlayerConnectors()" class="member-name-link">getPlayerConnectors()</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dd>
    +<div class="block">Getter for <a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector"><code>AbstractPlayerConnector</code></a> list instance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html#getPlayerId()" class="member-name-link">getPlayerId()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></dt>
    +<dd>
    +<div class="block">Getter for player id.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#getPlayerID()" class="member-name-link">getPlayerID()</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">playerId getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html#getPlayerName()" class="member-name-link">getPlayerName()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a></dt>
    +<dd>
    +<div class="block">Starting player name getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html#getPlayerName()" class="member-name-link">getPlayerName()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html" title="class in it.polimi.is23am10.server.command">SnoozeGameTimerCommand</a></dt>
    +<dd>
    +<div class="block">Player name getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#getPlayerName()" class="member-name-link">getPlayerName()</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">playerName getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html#getPlayerName()" class="member-name-link">getPlayerName()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></dt>
    +<dd>
    +<div class="block">Getter for player name.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getPlayerNames()" class="member-name-link">getPlayerNames()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">Retrieve the current players' names.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getPlayers()" class="member-name-link">getPlayers()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">The players getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#getPlayers()" class="member-name-link">getPlayers()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Getter for player list (<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview"><code>VirtualPlayer</code></a>)</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerState.html#getPlayersPool()" class="member-name-link">getPlayersPool()</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></dt>
    +<dd>
    +<div class="block">Player pool getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#getPrivateCard()" class="member-name-link">getPrivateCard()</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">privateCard getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html#getPrivateCardIndex()" class="member-name-link">getPrivateCardIndex()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></dt>
    +<dd>
    +<div class="block">Getter for private card index.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#getPrivatePoints()" class="member-name-link">getPrivatePoints()</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">privatePoints getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html#getReceiver()" class="member-name-link">getReceiver()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></dt>
    +<dd>
    +<div class="block">Getter for the receiving player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html#getReceiver()" class="member-name-link">getReceiver()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></dt>
    +<dd>
    +<div class="block">Getter for the receiving player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html#getReceiver()" class="member-name-link">getReceiver()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></dt>
    +<dd>
    +<div class="block">Getter for the receiving player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html#getReceiverName()" class="member-name-link">getReceiverName()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></dt>
    +<dd>
    +<div class="block">Getter for the receiving player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerState.html#getRmiProxyConnector(java.util.UUID)" class="member-name-link">getRmiProxyConnector(UUID)</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></dt>
    +<dd>
    +<div class="block">Retrieve the rmi connector proxy associated to a player id.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html#getRmiRegistry()" class="member-name-link">getRmiRegistry()</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a></dt>
    +<dd>
    +<div class="block">Retrieve the Server rmi registry.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/Coordinates.html#getRow()" class="member-name-link">getRow()</a> - Method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></dt>
    +<dd>
    +<div class="block">Row getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/AbstractPattern.html#getRule()" class="member-name-link">getRule()</a> - Method in class it.polimi.is23am10.server.model.pattern.<a href="../it/polimi/is23am10/server/model/pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a></dt>
    +<dd>
    +<div class="block">Rule getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html#getScore()" class="member-name-link">getScore()</a> - Method in class it.polimi.is23am10.server.model.items.scoreblock.<a href="../it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a></dt>
    +<dd>
    +<div class="block">score getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#getScore()" class="member-name-link">getScore()</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">score getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html#getScore()" class="member-name-link">getScore()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></dt>
    +<dd>
    +<div class="block">Getter for score.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#getScoreBlockPoints()" class="member-name-link">getScoreBlockPoints()</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">scoreBlockPoints getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html#getScoreBlocks()" class="member-name-link">getScoreBlocks()</a> - Method in class it.polimi.is23am10.server.model.items.card.<a href="../it/polimi/is23am10/server/model/items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a></dt>
    +<dd>
    +<div class="block">scoreBlocks getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#getScoreBlocks()" class="member-name-link">getScoreBlocks()</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dd>
    +<div class="block">scoreBlocks getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html#getSender()" class="member-name-link">getSender()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></dt>
    +<dd>
    +<div class="block">Getter for the sending player.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#getServerAddress()" class="member-name-link">getServerAddress()</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Server address getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#getServerAddress()" class="member-name-link">getServerAddress()</a> - Method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Server address getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html#getServerControllerActionRmiStub()" class="member-name-link">getServerControllerActionRmiStub()</a> - Static method in class it.polimi.is23am10.server.controller.<a href="../it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a></dt>
    +<dd>
    +<div class="block">Retrieve the rmi stub for <a href="../it/polimi/is23am10/server/controller/ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#getServerRmiPort()" class="member-name-link">getServerRmiPort()</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Server port getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#getServerRmiPort()" class="member-name-link">getServerRmiPort()</a> - Method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Server rmi port getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#getServerSocketPort()" class="member-name-link">getServerSocketPort()</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Server port getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#getServerSocketPort()" class="member-name-link">getServerSocketPort()</a> - Method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Server socket port getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getSharedCard()" class="member-name-link">getSharedCard()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">The sharedCards getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#getSharedCards()" class="member-name-link">getSharedCards()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Getter for shared cards indexes</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#getShowDebug()" class="member-name-link">getShowDebug()</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Show debug getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#getShowDebug()" class="member-name-link">getShowDebug()</a> - Method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Show debug getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#getShowGUI()" class="member-name-link">getShowGUI()</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Show GUI getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#getShowGUI()" class="member-name-link">getShowGUI()</a> - Method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Show GUI getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/Server.html#getSocketClientsConnected()" class="member-name-link">getSocketClientsConnected()</a> - Static method in class it.polimi.is23am10.server.<a href="../it/polimi/is23am10/server/Server.html" title="class in it.polimi.is23am10.server">Server</a></dt>
    +<dd>
    +<div class="block">Get the current number of clients connected to the socket.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#getSplashScreenScene()" class="member-name-link">getSplashScreenScene()</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">Creates the splash screen scene.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/StartGameCommand.html#getStartingPlayerName()" class="member-name-link">getStartingPlayerName()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/StartGameCommand.html" title="class in it.polimi.is23am10.server.command">StartGameCommand</a></dt>
    +<dd>
    +<div class="block">Starting player name getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html#getStartPlayingTimeMs()" class="member-name-link">getStartPlayingTimeMs()</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></dt>
    +<dd>
    +<div class="block">The start playing time getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getStatus()" class="member-name-link">getStatus()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">The ended status getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#getStatus()" class="member-name-link">getStatus()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Getter for status.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#getString(it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel,java.lang.String)" class="member-name-link">getString(OutputWrapper.OutputLevel, String)</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Helper method used by tests to retrieve the string to be printed
    + before actually printing it.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#getStringTotalScore()" class="member-name-link">getStringTotalScore()</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">Method used to retrieve a string representing the
    + total score.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#getTileAt(java.lang.Integer,java.lang.Integer)" class="member-name-link">getTileAt(Integer, Integer)</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">View the tile in a specific board position.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#getTileFromSack()" class="member-name-link">getTileFromSack()</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">Extract a tile from the sack.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#getTileSackSize()" class="member-name-link">getTileSackSize()</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">Retrieve the number of tiles remained inside the sack.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#getTotalScore()" class="member-name-link">getTotalScore()</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">Getter method that returns the total score
    + computing it from all the available scores.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.html#getType()" class="member-name-link">getType()</a> - Method in class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></dt>
    +<dd>
    +<div class="block">type getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#getUserInput()" class="member-name-link">getUserInput()</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Method used to retrieve the strings the user might have sent trough their 
    + input interface.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#getUserInput()" class="member-name-link">getUserInput()</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Method used to retrieve the strings the user might have sent trough their 
    + input interface.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/UserInterface.html#getUserInput()" class="member-name-link">getUserInput()</a> - Method in interface it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></dt>
    +<dd>
    +<div class="block">Method used to retrieve the strings the user might have sent trough their 
    + input interface.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfig.html#getUseRMI()" class="member-name-link">getUseRMI()</a> - Static method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></dt>
    +<dd>
    +<div class="block">Use RMI getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/AppConfigContext.html#getUseRMI()" class="member-name-link">getUseRMI()</a> - Method in class it.polimi.is23am10.utils.config.<a href="../it/polimi/is23am10/utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></dt>
    +<dd>
    +<div class="block">Use RMI getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#getVisibleScore()" class="member-name-link">getVisibleScore()</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dd>
    +<div class="block">Method used to retrieve the total score from a
    + possibly obfuscated score.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html#getWaitGameScene()" class="member-name-link">getWaitGameScene()</a> - Static method in class it.polimi.is23am10.client.userinterface.guifactory.<a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></dt>
    +<dd>
    +<div class="block">Creates and returns a new JavaFX Scene for the wait game screen.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/Game.html#getWinnerPlayer()" class="member-name-link">getWinnerPlayer()</a> - Method in class it.polimi.is23am10.server.model.game.<a href="../it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></dt>
    +<dd>
    +<div class="block">WinnerPlayer getter.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#getWinnerPlayer()" class="member-name-link">getWinnerPlayer()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dd>
    +<div class="block">Getter for winner player</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a> - Class in <a href="../it/polimi/is23am10/client/userinterface/package-summary.html">it.polimi.is23am10.client.userinterface</a></dt>
    +<dd>
    +<div class="block">A client interface using a graphic UI as I/O.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html#%3Cinit%3E()" class="member-name-link">GraphicUserInterface()</a> - Constructor for class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></dt>
    +<dd>
    +<div class="block">Constructor.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN" class="member-name-link">GREEN</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_BACKGROUND" class="member-name-link">GREEN_BACKGROUND</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_BACKGROUND_BRIGHT" class="member-name-link">GREEN_BACKGROUND_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_BOLD" class="member-name-link">GREEN_BOLD</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_BOLD_BRIGHT" class="member-name-link">GREEN_BOLD_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_BRIGHT" class="member-name-link">GREEN_BRIGHT</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html#GREEN_UNDERLINED" class="member-name-link">GREEN_UNDERLINED</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a> - Class in <a href="../it/polimi/is23am10/client/userinterface/guifactory/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></dt>
    +<dd>
    +<div class="block">GUI scene factory.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.GameSnapshotFactory</a> - Class in <a href="../it/polimi/is23am10/client/userinterface/guifactory/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></dt>
    +<dd>
    +<div class="block">GUI waiting for a game snapshot.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" class="type-name-link" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a> - Enum Class in <a href="../it/polimi/is23am10/client/userinterface/guifactory/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></dt>
    +<dd>
    +<div class="block">An enum representing different scenes that can be created by the factory.</div>
    +</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-8.html b/deliverables/javadoc/index-files/index-8.html
    new file mode 100644
    index 00000000..52a00bb4
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-8.html
    @@ -0,0 +1,84 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>H-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: H">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:H">H</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/AddPlayerCommand.html" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/MoveTilesCommand.html" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html" title="class in it.polimi.is23am10.server.command">SnoozeGameTimerCommand</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/command/StartGameCommand.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.command.<a href="../it/polimi/is23am10/server/command/StartGameCommand.html" title="class in it.polimi.is23am10.server.command">StartGameCommand</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.model.items.scoreblock.<a href="../it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></dt>
    +<dd>
    +<div class="block">}</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.model.pattern.<a href="../it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/SharedPattern.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.model.pattern.<a href="../it/polimi/is23am10/server/model/pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/player/Player.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.model.player.<a href="../it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/model/score/Score.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.model.score.<a href="../it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.network.gamehandler.<a href="../it/polimi/is23am10/server/network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.network.playerconnector.<a href="../it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></dt>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.server.network.virtualview.<a href="../it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></dt>
    +<dt><a href="../it/polimi/is23am10/utils/Coordinates.html#hashCode()" class="member-name-link">hashCode()</a> - Method in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></dt>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#HUNDRED_PADDING" class="member-name-link">HUNDRED_PADDING</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index-files/index-9.html b/deliverables/javadoc/index-files/index-9.html
    new file mode 100644
    index 00000000..fd978636
    --- /dev/null
    +++ b/deliverables/javadoc/index-files/index-9.html
    @@ -0,0 +1,260 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>I-Index</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index: I">
    +<meta name="generator" content="javadoc/IndexWriter">
    +<link rel="stylesheet" type="text/css" href="../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../script.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="index-page">
    +<script type="text/javascript">var pathtoroot = "../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="../overview-tree.html">Tree</a></li>
    +<li class="nav-bar-cell1-rev">Index</li>
    +<li><a href="../help-doc.html#index">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1>Index</h1>
    +</div>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a>
    +<h2 class="title" id="I:I">I</h2>
    +<dl class="index">
    +<dt><a href="../it/polimi/is23am10/client/IClient.html" class="type-name-link" title="interface in it.polimi.is23am10.client">IClient</a> - Interface in <a href="../it/polimi/is23am10/client/package-summary.html">it.polimi.is23am10.client</a></dt>
    +<dd>
    +<div class="block">The <code>IClient</code> interface represents the remote interface for clients in a Java RMI application.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#idx" class="member-name-link">idx</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#indexBoard" class="member-name-link">indexBoard</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#indexBookshelf" class="member-name-link">indexBookshelf</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/IndexValidator.html" class="type-name-link" title="class in it.polimi.is23am10.utils">IndexValidator</a> - Class in <a href="../it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></dt>
    +<dd>
    +<div class="block">Index validator class definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html#info(java.lang.String,boolean)" class="member-name-link">info(String, boolean)</a> - Method in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></dt>
    +<dd>
    +<div class="block">Prints a info line on console.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html#INFO" class="member-name-link">INFO</a> - Enum constant in enum class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html#INFO" class="member-name-link">INFO</a> - Enum constant in enum class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html#INIT" class="member-name-link">INIT</a> - Enum constant in enum class it.polimi.is23am10.client.<a href="../it/polimi/is23am10/client/Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></dt>
    +<dd>
    +<div class="block">Starting state.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#inputError" class="member-name-link">inputError</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html#insertPlayerNameString" class="member-name-link">insertPlayerNameString</a> - Static variable in class it.polimi.is23am10.client.userinterface.helpers.<a href="../it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/InvalidArgumentException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">InvalidArgumentException</a> - Exception Class in <a href="../it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for invalid cli argument parsed.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/InvalidArgumentException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">InvalidArgumentException(String)</a> - Constructor for exception class it.polimi.is23am10.utils.exceptions.<a href="../it/polimi/is23am10/utils/exceptions/InvalidArgumentException.html" title="class in it.polimi.is23am10.utils.exceptions">InvalidArgumentException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/InvalidBoardTileSelectionException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidBoardTileSelectionException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></dt>
    +<dd>
    +<div class="block">The TileType given is not inside the enum of possible TileType.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/InvalidBoardTileSelectionException.html#%3Cinit%3E(java.lang.String)" class="member-name-link">InvalidBoardTileSelectionException(String)</a> - Constructor for exception class it.polimi.is23am10.server.model.game.exceptions.<a href="../it/polimi/is23am10/server/model/game/exceptions/InvalidBoardTileSelectionException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidBoardTileSelectionException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/exceptions/InvalidMaxConnectionsNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidMaxConnectionsNumberException</a> - Exception Class in <a href="../it/polimi/is23am10/utils/config/exceptions/package-summary.html">it.polimi.is23am10.utils.config.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for invalid max connections number.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/exceptions/InvalidMaxConnectionsNumberException.html#%3Cinit%3E()" class="member-name-link">InvalidMaxConnectionsNumberException()</a> - Constructor for exception class it.polimi.is23am10.utils.config.exceptions.<a href="../it/polimi/is23am10/utils/config/exceptions/InvalidMaxConnectionsNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidMaxConnectionsNumberException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/InvalidMaxPlayerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception to handle invalid max players value.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/InvalidMaxPlayerException.html#%3Cinit%3E()" class="member-name-link">InvalidMaxPlayerException()</a> - Constructor for exception class it.polimi.is23am10.server.model.game.exceptions.<a href="../it/polimi/is23am10/server/model/game/exceptions/InvalidMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/exceptions/InvalidNumOfPlayersException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for wrong number of players.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/exceptions/InvalidNumOfPlayersException.html#%3Cinit%3E(java.lang.Integer)" class="member-name-link">InvalidNumOfPlayersException(Integer)</a> - Constructor for exception class it.polimi.is23am10.server.model.items.board.exceptions.<a href="../it/polimi/is23am10/server/model/items/board/exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/InvalidPlayersNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidPlayersNumberException</a> - Exception Class in <a href="../it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/InvalidPlayersNumberException.html#%3Cinit%3E()" class="member-name-link">InvalidPlayersNumberException()</a> - Constructor for exception class it.polimi.is23am10.server.model.game.exceptions.<a href="../it/polimi/is23am10/server/model/game/exceptions/InvalidPlayersNumberException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidPlayersNumberException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/exceptions/InvalidPortNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a> - Exception Class in <a href="../it/polimi/is23am10/utils/config/exceptions/package-summary.html">it.polimi.is23am10.utils.config.exceptions</a></dt>
    +<dd>
    +<div class="block">Custom exception for invalid port number.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/exceptions/InvalidPortNumberException.html#%3Cinit%3E()" class="member-name-link">InvalidPortNumberException()</a> - Constructor for exception class it.polimi.is23am10.utils.config.exceptions.<a href="../it/polimi/is23am10/utils/config/exceptions/InvalidPortNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a></dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html" class="type-name-link" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a> - Interface in <a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/package-summary.html">it.polimi.is23am10.server.network.playerconnector.interfaces</a></dt>
    +<dd>
    +<div class="block">The player connector interface definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/utils/ArgParser.html#IS_SERVER_CLI_COMMAND" class="member-name-link">IS_SERVER_CLI_COMMAND</a> - Static variable in class it.polimi.is23am10.utils.<a href="../it/polimi/is23am10/utils/ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></dt>
    +<dd>
    +<div class="block">The is server command.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html#isBookshelfFull()" class="member-name-link">isBookshelfFull()</a> - Method in class it.polimi.is23am10.server.model.items.bookshelf.<a href="../it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></dt>
    +<dd>
    +<div class="block">This function checks if player's bookshelf is full of tiles.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html#isBroadcast()" class="member-name-link">isBroadcast()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></dt>
    +<dd>
    +<div class="block">Boolean to check if message is direct or broadcast.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html#isBroadcast()" class="member-name-link">isBroadcast()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></dt>
    +<dd>
    +<div class="block">Boolean to check if message is direct or broadcast.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html#isBroadcast()" class="member-name-link">isBroadcast()</a> - Method in class it.polimi.is23am10.server.network.messages.<a href="../it/polimi/is23am10/server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></dt>
    +<dd>
    +<div class="block">Boolean to check if message is direct or broadcast.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html#isCheckForUserInput()" class="member-name-link">isCheckForUserInput()</a> - Method in class it.polimi.is23am10.client.userinterface.<a href="../it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></dt>
    +<dd>
    +<div class="block">Getter for checkForUserInput flag.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/Tile.html#isEmpty()" class="member-name-link">isEmpty()</a> - Method in class it.polimi.is23am10.server.model.items.tile.<a href="../it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></dt>
    +<dd>
    +<div class="block">Method that checks if the Tile's <a href="../it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a> is EMPTY or not.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" class="type-name-link" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a> - Interface in <a href="../it/polimi/is23am10/server/controller/interfaces/package-summary.html">it.polimi.is23am10.server.controller.interfaces</a></dt>
    +<dd>
    +<div class="block">The server controller action interface definition.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/PlayerFactory.html#isPlayerNameDuplicate(java.lang.String,java.util.List)" class="member-name-link">isPlayerNameDuplicate(String, List&lt;String&gt;)</a> - Static method in class it.polimi.is23am10.server.model.factory.<a href="../it/polimi/is23am10/server/model/factory/PlayerFactory.html" title="class in it.polimi.is23am10.server.model.factory">PlayerFactory</a></dt>
    +<dd>
    +<div class="block">Check if a player name has already been used across the game instance.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/Board.html#isRefillNeeded()" class="member-name-link">isRefillNeeded()</a> - Method in class it.polimi.is23am10.server.model.items.board.<a href="../it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></dt>
    +<dd>
    +<div class="block">Helper method used to determine if the board should be refilled or not.</div>
    +</dd>
    +<dt><a href="../it/polimi/is23am10/package-summary.html">it.polimi.is23am10</a> - package it.polimi.is23am10</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/package-summary.html">it.polimi.is23am10.client</a> - package it.polimi.is23am10.client</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/exceptions/package-summary.html">it.polimi.is23am10.client.exceptions</a> - package it.polimi.is23am10.client.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/interfaces/package-summary.html">it.polimi.is23am10.client.interfaces</a> - package it.polimi.is23am10.client.interfaces</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/package-summary.html">it.polimi.is23am10.client.userinterface</a> - package it.polimi.is23am10.client.userinterface</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a> - package it.polimi.is23am10.client.userinterface.guifactory</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a> - package it.polimi.is23am10.client.userinterface.guifactory.interfaces</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/client/userinterface/helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a> - package it.polimi.is23am10.client.userinterface.helpers</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/package-summary.html">it.polimi.is23am10.server</a> - package it.polimi.is23am10.server</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a> - package it.polimi.is23am10.server.command</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/package-summary.html">it.polimi.is23am10.server.controller</a> - package it.polimi.is23am10.server.controller</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/exceptions/package-summary.html">it.polimi.is23am10.server.controller.exceptions</a> - package it.polimi.is23am10.server.controller.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/controller/interfaces/package-summary.html">it.polimi.is23am10.server.controller.interfaces</a> - package it.polimi.is23am10.server.controller.interfaces</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/package-summary.html">it.polimi.is23am10.server.model.factory</a> - package it.polimi.is23am10.server.model.factory</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/factory/exceptions/package-summary.html">it.polimi.is23am10.server.model.factory.exceptions</a> - package it.polimi.is23am10.server.model.factory.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/package-summary.html">it.polimi.is23am10.server.model.game</a> - package it.polimi.is23am10.server.model.game</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a> - package it.polimi.is23am10.server.model.game.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/package-summary.html">it.polimi.is23am10.server.model.items.board</a> - package it.polimi.is23am10.server.model.items.board</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a> - package it.polimi.is23am10.server.model.items.board.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf</a> - package it.polimi.is23am10.server.model.items.bookshelf</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a> - package it.polimi.is23am10.server.model.items.bookshelf.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/package-summary.html">it.polimi.is23am10.server.model.items.card</a> - package it.polimi.is23am10.server.model.items.card</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a> - package it.polimi.is23am10.server.model.items.card.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/scoreblock/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock</a> - package it.polimi.is23am10.server.model.items.scoreblock</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock.exceptions</a> - package it.polimi.is23am10.server.model.items.scoreblock.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/items/tile/package-summary.html">it.polimi.is23am10.server.model.items.tile</a> - package it.polimi.is23am10.server.model.items.tile</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/pattern/package-summary.html">it.polimi.is23am10.server.model.pattern</a> - package it.polimi.is23am10.server.model.pattern</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/package-summary.html">it.polimi.is23am10.server.model.player</a> - package it.polimi.is23am10.server.model.player</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/player/exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a> - package it.polimi.is23am10.server.model.player.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/package-summary.html">it.polimi.is23am10.server.model.score</a> - package it.polimi.is23am10.server.model.score</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/model/score/exceptions/package-summary.html">it.polimi.is23am10.server.model.score.exceptions</a> - package it.polimi.is23am10.server.model.score.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/package-summary.html">it.polimi.is23am10.server.network.gamehandler</a> - package it.polimi.is23am10.server.network.gamehandler</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/gamehandler/exceptions/package-summary.html">it.polimi.is23am10.server.network.gamehandler.exceptions</a> - package it.polimi.is23am10.server.network.gamehandler.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a> - package it.polimi.is23am10.server.network.messages</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/package-summary.html">it.polimi.is23am10.server.network.playerconnector</a> - package it.polimi.is23am10.server.network.playerconnector</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/exceptions/package-summary.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a> - package it.polimi.is23am10.server.network.playerconnector.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/playerconnector/interfaces/package-summary.html">it.polimi.is23am10.server.network.playerconnector.interfaces</a> - package it.polimi.is23am10.server.network.playerconnector.interfaces</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/server/network/virtualview/package-summary.html">it.polimi.is23am10.server.network.virtualview</a> - package it.polimi.is23am10.server.network.virtualview</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a> - package it.polimi.is23am10.utils</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/package-summary.html">it.polimi.is23am10.utils.config</a> - package it.polimi.is23am10.utils.config</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/config/exceptions/package-summary.html">it.polimi.is23am10.utils.config.exceptions</a> - package it.polimi.is23am10.utils.config.exceptions</dt>
    +<dd>&nbsp;</dd>
    +<dt><a href="../it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a> - package it.polimi.is23am10.utils.exceptions</dt>
    +<dd>&nbsp;</dd>
    +</dl>
    +<a href="index-1.html">A</a>&nbsp;<a href="index-2.html">B</a>&nbsp;<a href="index-3.html">C</a>&nbsp;<a href="index-4.html">D</a>&nbsp;<a href="index-5.html">E</a>&nbsp;<a href="index-6.html">F</a>&nbsp;<a href="index-7.html">G</a>&nbsp;<a href="index-8.html">H</a>&nbsp;<a href="index-9.html">I</a>&nbsp;<a href="index-10.html">J</a>&nbsp;<a href="index-11.html">K</a>&nbsp;<a href="index-12.html">L</a>&nbsp;<a href="index-13.html">M</a>&nbsp;<a href="index-14.html">N</a>&nbsp;<a href="index-15.html">O</a>&nbsp;<a href="index-16.html">P</a>&nbsp;<a href="index-17.html">R</a>&nbsp;<a href="index-18.html">S</a>&nbsp;<a href="index-19.html">T</a>&nbsp;<a href="index-20.html">U</a>&nbsp;<a href="index-21.html">V</a>&nbsp;<a href="index-22.html">W</a>&nbsp;<a href="index-23.html">X</a>&nbsp;<a href="index-24.html">Y</a>&nbsp;<br><a href="../allclasses-index.html">All&nbsp;Classes&nbsp;and&nbsp;Interfaces</a><span class="vertical-separator">|</span><a href="../allpackages-index.html">All&nbsp;Packages</a><span class="vertical-separator">|</span><a href="../constant-values.html">Constant&nbsp;Field&nbsp;Values</a><span class="vertical-separator">|</span><a href="../serialized-form.html">Serialized&nbsp;Form</a></main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/index.html b/deliverables/javadoc/index.html
    new file mode 100644
    index 00000000..53ffea0a
    --- /dev/null
    +++ b/deliverables/javadoc/index.html
    @@ -0,0 +1,146 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Overview</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="package index">
    +<meta name="generator" content="javadoc/PackageIndexWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-index-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li class="nav-bar-cell1-rev">Overview</li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="index-files/index-1.html">Index</a></li>
    +<li><a href="help-doc.html#overview">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div id="all-packages-table">
    +<div class="caption"><span>Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/package-summary.html">it.polimi.is23am10</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/client/package-summary.html">it.polimi.is23am10.client</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/client/exceptions/package-summary.html">it.polimi.is23am10.client.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/client/interfaces/package-summary.html">it.polimi.is23am10.client.interfaces</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/client/userinterface/package-summary.html">it.polimi.is23am10.client.userinterface</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/client/userinterface/guifactory/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/client/userinterface/helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/package-summary.html">it.polimi.is23am10.server</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/controller/package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/controller/exceptions/package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/controller/interfaces/package-summary.html">it.polimi.is23am10.server.controller.interfaces</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/factory/package-summary.html">it.polimi.is23am10.server.model.factory</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/factory/exceptions/package-summary.html">it.polimi.is23am10.server.model.factory.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/game/package-summary.html">it.polimi.is23am10.server.model.game</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/items/board/package-summary.html">it.polimi.is23am10.server.model.items.board</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/items/bookshelf/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/items/card/package-summary.html">it.polimi.is23am10.server.model.items.card</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/items/scoreblock/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/items/tile/package-summary.html">it.polimi.is23am10.server.model.items.tile</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/pattern/package-summary.html">it.polimi.is23am10.server.model.pattern</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/player/package-summary.html">it.polimi.is23am10.server.model.player</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/player/exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/score/package-summary.html">it.polimi.is23am10.server.model.score</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/model/score/exceptions/package-summary.html">it.polimi.is23am10.server.model.score.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/network/gamehandler/package-summary.html">it.polimi.is23am10.server.network.gamehandler</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/network/gamehandler/exceptions/package-summary.html">it.polimi.is23am10.server.network.gamehandler.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/network/playerconnector/package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/network/playerconnector/exceptions/package-summary.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/network/playerconnector/interfaces/package-summary.html">it.polimi.is23am10.server.network.playerconnector.interfaces</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/server/network/virtualview/package-summary.html">it.polimi.is23am10.server.network.virtualview</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/utils/config/package-summary.html">it.polimi.is23am10.utils.config</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first even-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/utils/config/exceptions/package-summary.html">it.polimi.is23am10.utils.config.exceptions</a></div>
    +<div class="col-last even-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +<div class="col-first odd-row-color all-packages-table all-packages-table-tab1"><a href="it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<div class="col-last odd-row-color all-packages-table all-packages-table-tab1">&nbsp;</div>
    +</div>
    +</div>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/App.html b/deliverables/javadoc/it/polimi/is23am10/App.html
    new file mode 100644
    index 00000000..b32d9a0c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/App.html
    @@ -0,0 +1,182 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>App</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10, class: App">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../script.js"></script>
    +<script type="text/javascript" src="../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10</a></div>
    +<h1 title="Class App" class="title">Class App</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.App</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">App</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The entrypoint for the app. Parses args and launches
    + either client or server with desired options.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">App</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#main(java.lang.String%5B%5D)" class="member-name-link">main</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[]&nbsp;args)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">The main function.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>App</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">App</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="main(java.lang.String[])">
    +<h3>main</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">main</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[]&nbsp;args)</span></div>
    +<div class="block">The main function. Entrypoint for both server and client.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>args</code> - CLI arguments to parse.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/Client.ClientGameStatus.html b/deliverables/javadoc/it/polimi/is23am10/client/Client.ClientGameStatus.html
    new file mode 100644
    index 00000000..1e923932
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/Client.ClientGameStatus.html
    @@ -0,0 +1,254 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Client.ClientGameStatus</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client, class: Client, enum: ClientGameStatus">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#enum-constant-summary">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#enum-constant-detail">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client</a></div>
    +<h1 title="Enum Class Client.ClientGameStatus" class="title">Enum Class Client.ClientGameStatus</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a>&gt;
    +<div class="inheritance">it.polimi.is23am10.client.Client.ClientGameStatus</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><code><a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">Client.ClientGameStatus</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a>&gt;</span></div>
    +<div class="block">The three possible states in which the client can be.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#GAME_SELECTION" class="member-name-link">GAME_SELECTION</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Player selected name but not yet the game.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="#INIT" class="member-name-link">INIT</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Starting state.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="#PLAYING" class="member-name-link">PLAYING</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Player is in the game.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="INIT">
    +<h3>INIT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></span>&nbsp;<span class="element-name">INIT</span></div>
    +<div class="block">Starting state. Player hasn't selected name yet.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GAME_SELECTION">
    +<h3>GAME_SELECTION</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></span>&nbsp;<span class="element-name">GAME_SELECTION</span></div>
    +<div class="block">Player selected name but not yet the game.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PLAYING">
    +<h3>PLAYING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></span>&nbsp;<span class="element-name">PLAYING</span></div>
    +<div class="block">Player is in the game.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/Client.html b/deliverables/javadoc/it/polimi/is23am10/client/Client.html
    new file mode 100644
    index 00000000..e6875fe0
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/Client.html
    @@ -0,0 +1,353 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Client</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client, class: Client">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#field-summary">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client</a></div>
    +<h1 title="Class Client" class="title">Class Client</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.RemoteObject</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.RemoteServer</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.UnicastRemoteObject</a>
    +<div class="inheritance">it.polimi.is23am10.client.Client</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="IClient.html" title="interface in it.polimi.is23am10.client">IClient</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="RMIClient.html" title="class in it.polimi.is23am10.client">RMIClient</a></code>, <code><a href="SocketClient.html" title="class in it.polimi.is23am10.client">SocketClient</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">Client</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">UnicastRemoteObject</a>
    +implements <a href="IClient.html" title="interface in it.polimi.is23am10.client">IClient</a></span></div>
    +<div class="block">An abstract class representing the app running in client mode. Holds the three elements needed
    + for proper functioning:
    +
    + <ul>
    +   <li>Networking: Player Connector
    +   <li>Game state: VirtualView
    +   <li>UI/UX: UserInterface
    + </ul></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../serialized-form.html#it.polimi.is23am10.client.Client">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="Client.ClientGameStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The three possible states in which the client can be.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#userInterface" class="member-name-link">userInterface</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Interface used for communicating with the user.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getActiveGameServers()" class="member-name-link">getActiveGameServers</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Available games param getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getClientStatus()" class="member-name-link">getClientStatus</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Client status getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../server/network/playerconnector/interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getPlayerConnector()" class="member-name-link">getPlayerConnector</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Retrieve the player connector intance.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#run()" class="member-name-link">run</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Abstract method that run the client into the game.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setClientStatus(it.polimi.is23am10.client.Client.ClientGameStatus)" class="member-name-link">setClientStatus</a><wbr>(<a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a>&nbsp;clientStatus)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Client status setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setForceCloseApplication(boolean)" class="member-name-link">setForceCloseApplication</a><wbr>(boolean&nbsp;flag)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Set a force close application request.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">showServerMessage</a><wbr>(<a href="../server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Show the received message to the client.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#terminateClient()" class="member-name-link">terminateClient</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method to terminate the client and all client's threads.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.rmi.server.UnicastRemoteObject">Methods inherited from class&nbsp;java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">UnicastRemoteObject</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#clone()" title="class or interface in java.rmi.server" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.io.ObjectInputFilter)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory,java.io.ObjectInputFilter)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#unexportObject(java.rmi.Remote,boolean)" title="class or interface in java.rmi.server" class="external-link">unexportObject</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.rmi.server.RemoteServer">Methods inherited from class&nbsp;java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html" title="class or interface in java.rmi.server" class="external-link">RemoteServer</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html#getClientHost()" title="class or interface in java.rmi.server" class="external-link">getClientHost</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html#getLog()" title="class or interface in java.rmi.server" class="external-link">getLog</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html#setLog(java.io.OutputStream)" title="class or interface in java.rmi.server" class="external-link">setLog</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.rmi.server.RemoteObject">Methods inherited from class&nbsp;java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html" title="class or interface in java.rmi.server" class="external-link">RemoteObject</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#equals(java.lang.Object)" title="class or interface in java.rmi.server" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#getRef()" title="class or interface in java.rmi.server" class="external-link">getRef</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#hashCode()" title="class or interface in java.rmi.server" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#toString()" title="class or interface in java.rmi.server" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#toStub(java.rmi.Remote)" title="class or interface in java.rmi.server" class="external-link">toStub</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="userInterface">
    +<h3>userInterface</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></span>&nbsp;<span class="element-name">userInterface</span></div>
    +<div class="block">Interface used for communicating with the user. Can be either graphical or textual. Only output
    + methods are exposed by interface.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getPlayerConnector()">
    +<h3>getPlayerConnector</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../server/network/playerconnector/interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></span>&nbsp;<span class="element-name">getPlayerConnector</span>()</div>
    +<div class="block">Retrieve the player connector intance.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The <a href="../server/network/playerconnector/interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces"><code>IPlayerConnector</code></a>.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setForceCloseApplication(boolean)">
    +<h3>setForceCloseApplication</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setForceCloseApplication</span><wbr><span class="parameters">(boolean&nbsp;flag)</span></div>
    +<div class="block">Set a force close application request.
    + This method is defined as static as JavaFX thread must have access.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>flag</code> - The request flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)">
    +<h3>showServerMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">showServerMessage</span><wbr><span class="parameters">(<a href="../server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;msg)</span>
    +                       throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Show the received message to the client.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="IClient.html#showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)">showServerMessage</a></code>&nbsp;in interface&nbsp;<code><a href="IClient.html" title="interface in it.polimi.is23am10.client">IClient</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>msg</code> - The message. Its dynamic type is inferred by <code>Gson</code>.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="run()">
    +<h3>run</h3>
    +<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">run</span>()</div>
    +<div class="block">Abstract method that run the client into the game.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getActiveGameServers()">
    +<h3>getActiveGameServers</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;</span>&nbsp;<span class="element-name">getActiveGameServers</span>()</div>
    +<div class="block">Available games param getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The list of available games</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getClientStatus()">
    +<h3>getClientStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></span>&nbsp;<span class="element-name">getClientStatus</span>()</div>
    +<div class="block">Client status getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>status.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setClientStatus(it.polimi.is23am10.client.Client.ClientGameStatus)">
    +<h3>setClientStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setClientStatus</span><wbr><span class="parameters">(<a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a>&nbsp;clientStatus)</span></div>
    +<div class="block">Client status setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>clientStatus</code> - new status of client.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="terminateClient()">
    +<h3>terminateClient</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">terminateClient</span>()</div>
    +<div class="block">Method to terminate the client and all client's threads.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/IClient.html b/deliverables/javadoc/it/polimi/is23am10/client/IClient.html
    new file mode 100644
    index 00000000..761912ee
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/IClient.html
    @@ -0,0 +1,160 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>IClient</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client, interface: IClient">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client</a></div>
    +<h1 title="Interface IClient" class="title">Interface IClient</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Superinterfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></code>, <code><a href="RMIClient.html" title="class in it.polimi.is23am10.client">RMIClient</a></code>, <code><a href="SocketClient.html" title="class in it.polimi.is23am10.client">SocketClient</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">IClient</span><span class="extends-implements">
    +extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></span></div>
    +<div class="block">The <code>IClient</code> interface represents the remote interface for clients in a Java RMI application.
    + It defines methods that the server can call on the client.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">showServerMessage</a><wbr>(<a href="../server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Displays a server message on the client.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)">
    +<h3>showServerMessage</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">showServerMessage</span><wbr><span class="parameters">(<a href="../server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;msg)</span>
    +                throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Displays a server message on the client.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>msg</code> - The server message to be displayed on the client.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - If a communication-related exception occurs during the remote method invocation.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/RMIClient.html b/deliverables/javadoc/it/polimi/is23am10/client/RMIClient.html
    new file mode 100644
    index 00000000..b4f81a44
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/RMIClient.html
    @@ -0,0 +1,252 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>RMIClient</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client, class: RMIClient">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client</a></div>
    +<h1 title="Class RMIClient" class="title">Class RMIClient</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.RemoteObject</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.RemoteServer</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.UnicastRemoteObject</a>
    +<div class="inheritance"><a href="Client.html" title="class in it.polimi.is23am10.client">it.polimi.is23am10.client.Client</a>
    +<div class="inheritance">it.polimi.is23am10.client.RMIClient</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="IClient.html" title="interface in it.polimi.is23am10.client">IClient</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RMIClient</span>
    +<span class="extends-implements">extends <a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></span></div>
    +<div class="block">A client using RMI as communication method.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../serialized-form.html#it.polimi.is23am10.client.RMIClient">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.client.Client">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.client.<a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></h2>
    +<code><a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></code></div>
    +</section>
    +</li>
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-it.polimi.is23am10.client.Client">Fields inherited from class&nbsp;it.polimi.is23am10.client.<a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></h3>
    +<code><a href="Client.html#userInterface">userInterface</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi,it.polimi.is23am10.client.userinterface.UserInterface,it.polimi.is23am10.server.controller.interfaces.IServerControllerAction,java.rmi.registry.Registry)" class="member-name-link">RMIClient</a><wbr>(<a href="../server/network/playerconnector/PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a>&nbsp;pc,
    + <a href="userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a>&nbsp;ui,
    + <a href="../server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>&nbsp;scas,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/registry/Registry.html" title="class or interface in java.rmi.registry" class="external-link">Registry</a>&nbsp;reg)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor for client using RMI as communication method.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#run()" class="member-name-link">run</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Client core cycle.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.client.Client">Methods inherited from class&nbsp;it.polimi.is23am10.client.<a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></h3>
    +<code><a href="Client.html#getActiveGameServers()">getActiveGameServers</a>, <a href="Client.html#getClientStatus()">getClientStatus</a>, <a href="Client.html#getPlayerConnector()">getPlayerConnector</a>, <a href="Client.html#setClientStatus(it.polimi.is23am10.client.Client.ClientGameStatus)">setClientStatus</a>, <a href="Client.html#setForceCloseApplication(boolean)">setForceCloseApplication</a>, <a href="Client.html#showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)">showServerMessage</a>, <a href="Client.html#terminateClient()">terminateClient</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.rmi.server.UnicastRemoteObject">Methods inherited from class&nbsp;java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">UnicastRemoteObject</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#clone()" title="class or interface in java.rmi.server" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.io.ObjectInputFilter)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory,java.io.ObjectInputFilter)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#unexportObject(java.rmi.Remote,boolean)" title="class or interface in java.rmi.server" class="external-link">unexportObject</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.rmi.server.RemoteServer">Methods inherited from class&nbsp;java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html" title="class or interface in java.rmi.server" class="external-link">RemoteServer</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html#getClientHost()" title="class or interface in java.rmi.server" class="external-link">getClientHost</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html#getLog()" title="class or interface in java.rmi.server" class="external-link">getLog</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html#setLog(java.io.OutputStream)" title="class or interface in java.rmi.server" class="external-link">setLog</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.rmi.server.RemoteObject">Methods inherited from class&nbsp;java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html" title="class or interface in java.rmi.server" class="external-link">RemoteObject</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#equals(java.lang.Object)" title="class or interface in java.rmi.server" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#getRef()" title="class or interface in java.rmi.server" class="external-link">getRef</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#hashCode()" title="class or interface in java.rmi.server" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#toString()" title="class or interface in java.rmi.server" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#toStub(java.rmi.Remote)" title="class or interface in java.rmi.server" class="external-link">toStub</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi,it.polimi.is23am10.client.userinterface.UserInterface,it.polimi.is23am10.server.controller.interfaces.IServerControllerAction,java.rmi.registry.Registry)">
    +<h3>RMIClient</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">RMIClient</span><wbr><span class="parameters">(<a href="../server/network/playerconnector/PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a>&nbsp;pc,
    + <a href="userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a>&nbsp;ui,
    + <a href="../server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>&nbsp;scas,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/registry/Registry.html" title="class or interface in java.rmi.registry" class="external-link">Registry</a>&nbsp;reg)</span>
    +          throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/UnknownHostException.html" title="class or interface in java.net" class="external-link">UnknownHostException</a>,
    +<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Public constructor for client using RMI as communication method.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>pc</code> - Player connector.</dd>
    +<dd><code>ui</code> - User interface.</dd>
    +<dd><code>scas</code> - Server controller action server reference.</dd>
    +<dd><code>reg</code> - Rmi registry instance.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/UnknownHostException.html" title="class or interface in java.net" class="external-link">UnknownHostException</a></code></dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="run()">
    +<h3>run</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">run</span>()</div>
    +<div class="block">Client core cycle. Send user requested commands and read updates.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="Client.html#run()">run</a></code>&nbsp;in class&nbsp;<code><a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/SocketClient.html b/deliverables/javadoc/it/polimi/is23am10/client/SocketClient.html
    new file mode 100644
    index 00000000..c0888ba5
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/SocketClient.html
    @@ -0,0 +1,267 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>SocketClient</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client, class: SocketClient">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client</a></div>
    +<h1 title="Class SocketClient" class="title">Class SocketClient</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.RemoteObject</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.RemoteServer</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">java.rmi.server.UnicastRemoteObject</a>
    +<div class="inheritance"><a href="Client.html" title="class in it.polimi.is23am10.client">it.polimi.is23am10.client.Client</a>
    +<div class="inheritance">it.polimi.is23am10.client.SocketClient</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="IClient.html" title="interface in it.polimi.is23am10.client">IClient</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SocketClient</span>
    +<span class="extends-implements">extends <a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></span></div>
    +<div class="block">A client using Socket as communication method.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../serialized-form.html#it.polimi.is23am10.client.SocketClient">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.client.Client">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.client.<a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></h2>
    +<code><a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></code></div>
    +</section>
    +</li>
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-it.polimi.is23am10.client.Client">Fields inherited from class&nbsp;it.polimi.is23am10.client.<a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></h3>
    +<code><a href="Client.html#userInterface">userInterface</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket,it.polimi.is23am10.client.userinterface.UserInterface)" class="member-name-link">SocketClient</a><wbr>(<a href="../server/network/playerconnector/PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a>&nbsp;pc,
    + <a href="userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a>&nbsp;ui)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor for client using Socket as communication method.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#run()" class="member-name-link">run</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Client core cycle.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#runInputMessageHandler()" class="member-name-link">runInputMessageHandler</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Poll payloads from the socket stream and process <a href="../server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages"><code>AbstractMessage</code></a> that
    + can be
    + recognized.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.client.Client">Methods inherited from class&nbsp;it.polimi.is23am10.client.<a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></h3>
    +<code><a href="Client.html#getActiveGameServers()">getActiveGameServers</a>, <a href="Client.html#getClientStatus()">getClientStatus</a>, <a href="Client.html#getPlayerConnector()">getPlayerConnector</a>, <a href="Client.html#setClientStatus(it.polimi.is23am10.client.Client.ClientGameStatus)">setClientStatus</a>, <a href="Client.html#setForceCloseApplication(boolean)">setForceCloseApplication</a>, <a href="Client.html#showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)">showServerMessage</a>, <a href="Client.html#terminateClient()">terminateClient</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.rmi.server.UnicastRemoteObject">Methods inherited from class&nbsp;java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">UnicastRemoteObject</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#clone()" title="class or interface in java.rmi.server" class="external-link">clone</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.io.ObjectInputFilter)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#exportObject(java.rmi.Remote,int,java.rmi.server.RMIClientSocketFactory,java.rmi.server.RMIServerSocketFactory,java.io.ObjectInputFilter)" title="class or interface in java.rmi.server" class="external-link">exportObject</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html#unexportObject(java.rmi.Remote,boolean)" title="class or interface in java.rmi.server" class="external-link">unexportObject</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.rmi.server.RemoteServer">Methods inherited from class&nbsp;java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html" title="class or interface in java.rmi.server" class="external-link">RemoteServer</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html#getClientHost()" title="class or interface in java.rmi.server" class="external-link">getClientHost</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html#getLog()" title="class or interface in java.rmi.server" class="external-link">getLog</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html#setLog(java.io.OutputStream)" title="class or interface in java.rmi.server" class="external-link">setLog</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.rmi.server.RemoteObject">Methods inherited from class&nbsp;java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html" title="class or interface in java.rmi.server" class="external-link">RemoteObject</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#equals(java.lang.Object)" title="class or interface in java.rmi.server" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#getRef()" title="class or interface in java.rmi.server" class="external-link">getRef</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#hashCode()" title="class or interface in java.rmi.server" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#toString()" title="class or interface in java.rmi.server" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html#toStub(java.rmi.Remote)" title="class or interface in java.rmi.server" class="external-link">toStub</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket,it.polimi.is23am10.client.userinterface.UserInterface)">
    +<h3>SocketClient</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SocketClient</span><wbr><span class="parameters">(<a href="../server/network/playerconnector/PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a>&nbsp;pc,
    + <a href="userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a>&nbsp;ui)</span>
    +             throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/UnknownHostException.html" title="class or interface in java.net" class="external-link">UnknownHostException</a>,
    +<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Public constructor for client using Socket as communication method.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>pc</code> - player connector</dd>
    +<dd><code>ui</code> - user interface</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/UnknownHostException.html" title="class or interface in java.net" class="external-link">UnknownHostException</a></code></dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="run()">
    +<h3>run</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">run</span>()</div>
    +<div class="block">Client core cycle. Send user requested commands and read updates.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="Client.html#run()">run</a></code>&nbsp;in class&nbsp;<code><a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInputMessageHandler()">
    +<h3>runInputMessageHandler</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">runInputMessageHandler</span>()
    +                            throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
    +<div class="block">Poll payloads from the socket stream and process <a href="../server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages"><code>AbstractMessage</code></a> that
    + can be
    + recognized.</div>
    +<dl class="notes">
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.html b/deliverables/javadoc/it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.html
    new file mode 100644
    index 00000000..35ef4867
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ForceCloseApplicationException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.exceptions, class: ForceCloseApplicationException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.exceptions</a></div>
    +<h1 title="Class ForceCloseApplicationException" class="title">Class ForceCloseApplicationException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.client.exceptions.ForceCloseApplicationException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ForceCloseApplicationException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Force application close.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.client.exceptions.ForceCloseApplicationException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ForceCloseApplicationException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ForceCloseApplicationException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ForceCloseApplicationException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/client/exceptions/package-summary.html
    new file mode 100644
    index 00000000..7470e43f
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/exceptions/package-summary.html
    @@ -0,0 +1,109 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.client.exceptions" class="title">Package it.polimi.is23am10.client.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.client.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.client</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../interfaces/package-summary.html">it.polimi.is23am10.client.interfaces</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="../userinterface/package-summary.html">it.polimi.is23am10.client.userinterface</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="ForceCloseApplicationException.html" title="class in it.polimi.is23am10.client.exceptions">ForceCloseApplicationException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Force application close.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/client/exceptions/package-tree.html
    new file mode 100644
    index 00000000..a57c9e9d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/exceptions/package-tree.html
    @@ -0,0 +1,80 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.client.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.client.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.exceptions.<a href="ForceCloseApplicationException.html" class="type-name-link" title="class in it.polimi.is23am10.client.exceptions">ForceCloseApplicationException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/interfaces/AlarmConsumer.html b/deliverables/javadoc/it/polimi/is23am10/client/interfaces/AlarmConsumer.html
    new file mode 100644
    index 00000000..8f6b641d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/interfaces/AlarmConsumer.html
    @@ -0,0 +1,145 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AlarmConsumer</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.interfaces, interface: AlarmConsumer">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.interfaces</a></div>
    +<h1 title="Interface AlarmConsumer" class="title">Interface AlarmConsumer</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Functional Interface:</dt>
    +<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
    +</span><span class="modifiers">public interface </span><span class="element-name type-name-label">AlarmConsumer</span></div>
    +<div class="block">Custom functional interface definition for the application timer.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#start()" class="member-name-link">start</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="start()">
    +<h3>start</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">start</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/interfaces/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/client/interfaces/package-summary.html
    new file mode 100644
    index 00000000..d5083e90
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/interfaces/package-summary.html
    @@ -0,0 +1,109 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.interfaces</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.interfaces">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.client.interfaces" class="title">Package it.polimi.is23am10.client.interfaces</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.client.interfaces</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.client</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../exceptions/package-summary.html">it.polimi.is23am10.client.exceptions</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="../userinterface/package-summary.html">it.polimi.is23am10.client.userinterface</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Interfaces</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="AlarmConsumer.html" title="interface in it.polimi.is23am10.client.interfaces">AlarmConsumer</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">Custom functional interface definition for the application timer.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/interfaces/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/client/interfaces/package-tree.html
    new file mode 100644
    index 00000000..e435c4f1
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/interfaces/package-tree.html
    @@ -0,0 +1,68 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.interfaces Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.client.interfaces">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.client.interfaces</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.interfaces.<a href="AlarmConsumer.html" class="type-name-link" title="interface in it.polimi.is23am10.client.interfaces">AlarmConsumer</a></li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/client/package-summary.html
    new file mode 100644
    index 00000000..1fcbdba4
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/package-summary.html
    @@ -0,0 +1,133 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.client" class="title">Package it.polimi.is23am10.client</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.client</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.client.exceptions</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="interfaces/package-summary.html">it.polimi.is23am10.client.interfaces</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="userinterface/package-summary.html">it.polimi.is23am10.client.userinterface</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="../server/package-summary.html">it.polimi.is23am10.server</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../utils/package-summary.html">it.polimi.is23am10.utils</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel">
    +<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Client.html" title="class in it.polimi.is23am10.client">Client</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">An abstract class representing the app running in client mode.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">The three possible states in which the client can be.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="IClient.html" title="interface in it.polimi.is23am10.client">IClient</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">The <code>IClient</code> interface represents the remote interface for clients in a Java RMI application.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="RMIClient.html" title="class in it.polimi.is23am10.client">RMIClient</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">A client using RMI as communication method.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SocketClient.html" title="class in it.polimi.is23am10.client">SocketClient</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">A client using Socket as communication method.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/client/package-tree.html
    new file mode 100644
    index 00000000..d9e742f3
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/package-tree.html
    @@ -0,0 +1,113 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.client">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.client</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html" class="type-name-link external-link" title="class or interface in java.rmi.server">RemoteObject</a> (implements java.rmi.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html" class="type-name-link external-link" title="class or interface in java.rmi.server">RemoteServer</a>
    +<ul>
    +<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" class="type-name-link external-link" title="class or interface in java.rmi.server">UnicastRemoteObject</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.<a href="Client.html" class="type-name-link" title="class in it.polimi.is23am10.client">Client</a> (implements it.polimi.is23am10.client.<a href="IClient.html" title="interface in it.polimi.is23am10.client">IClient</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.<a href="RMIClient.html" class="type-name-link" title="class in it.polimi.is23am10.client">RMIClient</a></li>
    +<li class="circle">it.polimi.is23am10.client.<a href="SocketClient.html" class="type-name-link" title="class in it.polimi.is23am10.client">SocketClient</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">java.rmi.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" class="type-name-link external-link" title="class or interface in java.rmi">Remote</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.<a href="IClient.html" class="type-name-link" title="interface in it.polimi.is23am10.client">IClient</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.<a href="Client.ClientGameStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/CommandLineInterface.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/CommandLineInterface.html
    new file mode 100644
    index 00000000..78f70e25
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/CommandLineInterface.html
    @@ -0,0 +1,412 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>CommandLineInterface</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface, class: CommandLineInterface">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface</a></div>
    +<h1 title="Class CommandLineInterface" class="title">Class CommandLineInterface</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.CommandLineInterface</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">CommandLineInterface</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">A client interface using command line as I/O.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.client.userinterface.CommandLineInterface">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>final <a href="helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#ow" class="member-name-link">ow</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Output Wrapper, entrypoint for all UI output functions.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(boolean)" class="member-name-link">CommandLineInterface</a><wbr>(boolean&nbsp;showDebug)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor for CLI.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayAvailableGames(java.util.List)" class="member-name-link">displayAvailableGames</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;&nbsp;availableGames)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called when the user wants to join an existing
    + game and has to pick between the available ones.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)" class="member-name-link">displayChatMessage</a><wbr>(<a href="../../server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a>&nbsp;message)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called to notify the user of a new chat message.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)" class="member-name-link">displayError</a><wbr>(<a href="../../server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a>&nbsp;errorMessage)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called to notify the user of an error.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayGameJoinGuide()" class="member-name-link">displayGameJoinGuide</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method to display a quick help guide to explain how
    + to join the games or create one.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displaySplashScreen()" class="member-name-link">displaySplashScreen</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called when first running the game.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">displayVirtualView</a><wbr>(<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;old,
    + <a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vw)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called to display the state of the game.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getFormattedChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)" class="member-name-link">getFormattedChatMessage</a><wbr>(<a href="../../server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a>&nbsp;message)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Helper function that returns a well-formatted chat message string.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getUserInput()" class="member-name-link">getUserInput</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method used to retrieve the strings the user might have sent trough their 
    + input interface.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isCheckForUserInput()" class="member-name-link">isCheckForUserInput</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for checkForUserInput flag.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#runInputHandler()" class="member-name-link">runInputHandler</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">CLI method to retrieve user input and add it to the queue
    + for it to be consumed when needed by controller.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#terminateUserInterface()" class="member-name-link">terminateUserInterface</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method used when game is over to close input and eventually show infos.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="ow">
    +<h3>ow</h3>
    +<div class="member-signature"><span class="modifiers">public final</span>&nbsp;<span class="return-type"><a href="helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></span>&nbsp;<span class="element-name">ow</span></div>
    +<div class="block">Output Wrapper, entrypoint for all UI output functions.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(boolean)">
    +<h3>CommandLineInterface</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CommandLineInterface</span><wbr><span class="parameters">(boolean&nbsp;showDebug)</span></div>
    +<div class="block">Public constructor for CLI.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>showDebug</code> - parameter to be used for debug purposes.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="isCheckForUserInput()">
    +<h3>isCheckForUserInput</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isCheckForUserInput</span>()</div>
    +<div class="block">Getter for checkForUserInput flag.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>checkForUserInput flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getUserInput()">
    +<h3>getUserInput</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getUserInput</span>()</div>
    +<div class="block">Method used to retrieve the strings the user might have sent trough their 
    + input interface. GUI adds these strings on button clicks while CLI adds them on return.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#getUserInput()">getUserInput</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>The first item in the list. Null if empty.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displaySplashScreen()">
    +<h3>displaySplashScreen</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displaySplashScreen</span>()</div>
    +<div class="block">Method called when first running the game.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displaySplashScreen()">displaySplashScreen</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayGameJoinGuide()">
    +<h3>displayGameJoinGuide</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayGameJoinGuide</span>()</div>
    +<div class="block">Method to display a quick help guide to explain how
    + to join the games or create one. In GUI enables buttons.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displayGameJoinGuide()">displayGameJoinGuide</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayAvailableGames(java.util.List)">
    +<h3>displayAvailableGames</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayAvailableGames</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;&nbsp;availableGames)</span></div>
    +<div class="block">Method called when the user wants to join an existing
    + game and has to pick between the available ones.
    + It assumes to receive only valid games.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displayAvailableGames(java.util.List)">displayAvailableGames</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>availableGames</code> - A list of valid joinable games.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)">
    +<h3>displayVirtualView</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayVirtualView</span><wbr><span class="parameters">(<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;old,
    + <a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vw)</span></div>
    +<div class="block">Method called to display the state of the game.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)">displayVirtualView</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>vw</code> - <a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview"><code>VirtualView</code></a> of the game to display.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getFormattedChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)">
    +<h3>getFormattedChatMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getFormattedChatMessage</span><wbr><span class="parameters">(<a href="../../server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a>&nbsp;message)</span></div>
    +<div class="block">Helper function that returns a well-formatted chat message string.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>message</code> - The message item.</dd>
    +<dt>Returns:</dt>
    +<dd>The string representation of the message.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)">
    +<h3>displayChatMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayChatMessage</span><wbr><span class="parameters">(<a href="../../server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a>&nbsp;message)</span></div>
    +<div class="block">Method called to notify the user of a new chat message.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)">displayChatMessage</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>message</code> - The message to show to the user.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)">
    +<h3>displayError</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayError</span><wbr><span class="parameters">(<a href="../../server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a>&nbsp;errorMessage)</span></div>
    +<div class="block">Method called to notify the user of an error.}</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)">displayError</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>errorMessage</code> - message to show to the user.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="runInputHandler()">
    +<h3>runInputHandler</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">runInputHandler</span>()</div>
    +<div class="block">CLI method to retrieve user input and add it to the queue
    + for it to be consumed when needed by controller.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="terminateUserInterface()">
    +<h3>terminateUserInterface</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">terminateUserInterface</span>()</div>
    +<div class="block">Method used when game is over to close input and eventually show infos.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#terminateUserInterface()">terminateUserInterface</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/GraphicUserInterface.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/GraphicUserInterface.html
    new file mode 100644
    index 00000000..a8872ab1
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/GraphicUserInterface.html
    @@ -0,0 +1,396 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>GraphicUserInterface</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface, class: GraphicUserInterface">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface</a></div>
    +<h1 title="Class GraphicUserInterface" class="title">Class GraphicUserInterface</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">javafx.application.Application
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.GraphicUserInterface</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">GraphicUserInterface</span>
    +<span class="extends-implements">extends javafx.application.Application
    +implements <a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">A client interface using a graphic UI as I/O.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.client.userinterface.GraphicUserInterface">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-javafx.application.Application">Nested classes/interfaces inherited from class&nbsp;javafx.application.Application</h2>
    +<code>javafx.application.Application.Parameters</code></div>
    +</section>
    +</li>
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-javafx.application.Application">Fields inherited from class&nbsp;javafx.application.Application</h3>
    +<code>STYLESHEET_CASPIAN, STYLESHEET_MODENA</code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">GraphicUserInterface</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#addMsgQueue(java.lang.String)" class="member-name-link">addMsgQueue</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Add a new message to the input list queue.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayAvailableGames(java.util.List)" class="member-name-link">displayAvailableGames</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;&nbsp;availableGames)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called when the user wants to join an existing
    + game and has to pick between the available ones.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)" class="member-name-link">displayChatMessage</a><wbr>(<a href="../../server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a>&nbsp;message)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called to notify the user of a new chat message.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)" class="member-name-link">displayError</a><wbr>(<a href="../../server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a>&nbsp;errorMessage)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called to notify the user of an error.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayGameJoinGuide()" class="member-name-link">displayGameJoinGuide</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method to display a quick help guide to explain how
    + to join the games or create one.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displaySplashScreen()" class="member-name-link">displaySplashScreen</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called when first running the game.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">displayVirtualView</a><wbr>(<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;old,
    + <a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vw)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called to display the state of the game.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getUserInput()" class="member-name-link">getUserInput</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method used to retrieve the strings the user might have sent trough their 
    + input interface.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start(javafx.stage.Stage)" class="member-name-link">start</a><wbr>(javafx.stage.Stage&nbsp;stage)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#takeMsgQueue()" class="member-name-link">takeMsgQueue</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Retrirve the head of the message queue.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#terminateUserInterface()" class="member-name-link">terminateUserInterface</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method used when game is over to close input and eventually show infos.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-javafx.application.Application">Methods inherited from class&nbsp;javafx.application.Application</h3>
    +<code>getHostServices, getParameters, getUserAgentStylesheet, init, launch, launch, notifyPreloader, setUserAgentStylesheet, stop</code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>GraphicUserInterface</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">GraphicUserInterface</span>()</div>
    +<div class="block">Constructor.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="addMsgQueue(java.lang.String)">
    +<h3>addMsgQueue</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addMsgQueue</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +<div class="block">Add a new message to the input list queue.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>msg</code> - The message to be added.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="takeMsgQueue()">
    +<h3>takeMsgQueue</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">takeMsgQueue</span>()</div>
    +<div class="block">Retrirve the head of the message queue.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The oldest message.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="start(javafx.stage.Stage)">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span><wbr><span class="parameters">(javafx.stage.Stage&nbsp;stage)</span></div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code>start</code>&nbsp;in class&nbsp;<code>javafx.application.Application</code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getUserInput()">
    +<h3>getUserInput</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getUserInput</span>()</div>
    +<div class="block">Method used to retrieve the strings the user might have sent trough their 
    + input interface. GUI adds these strings on button clicks while CLI adds them on return.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#getUserInput()">getUserInput</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>The first item in the list. Null if empty.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displaySplashScreen()">
    +<h3>displaySplashScreen</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displaySplashScreen</span>()</div>
    +<div class="block">Method called when first running the game.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displaySplashScreen()">displaySplashScreen</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayAvailableGames(java.util.List)">
    +<h3>displayAvailableGames</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayAvailableGames</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;&nbsp;availableGames)</span></div>
    +<div class="block">Method called when the user wants to join an existing
    + game and has to pick between the available ones.
    + It assumes to receive only valid games.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displayAvailableGames(java.util.List)">displayAvailableGames</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>availableGames</code> - A list of valid joinable games.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)">
    +<h3>displayVirtualView</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayVirtualView</span><wbr><span class="parameters">(<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;old,
    + <a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vw)</span></div>
    +<div class="block">Method called to display the state of the game.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)">displayVirtualView</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>vw</code> - <a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview"><code>VirtualView</code></a> of the game to display.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)">
    +<h3>displayChatMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayChatMessage</span><wbr><span class="parameters">(<a href="../../server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a>&nbsp;message)</span></div>
    +<div class="block">Method called to notify the user of a new chat message.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)">displayChatMessage</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>message</code> - The message to show to the user.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)">
    +<h3>displayError</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayError</span><wbr><span class="parameters">(<a href="../../server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a>&nbsp;errorMessage)</span></div>
    +<div class="block">Method called to notify the user of an error.}</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)">displayError</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>errorMessage</code> - message to show to the user.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="terminateUserInterface()">
    +<h3>terminateUserInterface</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">terminateUserInterface</span>()</div>
    +<div class="block">Method used when game is over to close input and eventually show infos.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#terminateUserInterface()">terminateUserInterface</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayGameJoinGuide()">
    +<h3>displayGameJoinGuide</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">displayGameJoinGuide</span>()</div>
    +<div class="block">Method to display a quick help guide to explain how
    + to join the games or create one. In GUI enables buttons.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="UserInterface.html#displayGameJoinGuide()">displayGameJoinGuide</a></code>&nbsp;in interface&nbsp;<code><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/UserInterface.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/UserInterface.html
    new file mode 100644
    index 00000000..94e61102
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/UserInterface.html
    @@ -0,0 +1,261 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>UserInterface</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface, interface: UserInterface">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface</a></div>
    +<h1 title="Interface UserInterface" class="title">Interface UserInterface</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></code>, <code><a href="GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">UserInterface</span></div>
    +<div class="block">The user interface. Implemented by CommandLineInterface (CLI) and GraphicUserInterface (GUI).
    + Only exposes the output methods. Each implementation will handle input processing accordingly.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#displayAvailableGames(java.util.List)" class="member-name-link">displayAvailableGames</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;&nbsp;availableGames)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Method called when the user wants to join an existing
    + game and has to pick between the available ones.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)" class="member-name-link">displayChatMessage</a><wbr>(<a href="../../server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a>&nbsp;message)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Method called to notify the user of a new chat message.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)" class="member-name-link">displayError</a><wbr>(<a href="../../server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a>&nbsp;errorMessage)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Method called to notify the user of an error.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#displayGameJoinGuide()" class="member-name-link">displayGameJoinGuide</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Method to display a quick help guide to explain how
    + to join the games or create one.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#displaySplashScreen()" class="member-name-link">displaySplashScreen</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Method called when first running the game.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">displayVirtualView</a><wbr>(<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;old,
    + <a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vw)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Method called to display the state of the game.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getUserInput()" class="member-name-link">getUserInput</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Method used to retrieve the strings the user might have sent trough their 
    + input interface.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#terminateUserInterface()" class="member-name-link">terminateUserInterface</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Method used when game is over to close input and eventually show infos.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getUserInput()">
    +<h3>getUserInput</h3>
    +<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getUserInput</span>()</div>
    +<div class="block">Method used to retrieve the strings the user might have sent trough their 
    + input interface. GUI adds these strings on button clicks while CLI adds them on return.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The first item in the list. Null if empty.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displaySplashScreen()">
    +<h3>displaySplashScreen</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">displaySplashScreen</span>()</div>
    +<div class="block">Method called when first running the game.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayGameJoinGuide()">
    +<h3>displayGameJoinGuide</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">displayGameJoinGuide</span>()</div>
    +<div class="block">Method to display a quick help guide to explain how
    + to join the games or create one. In GUI enables buttons.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayAvailableGames(java.util.List)">
    +<h3>displayAvailableGames</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">displayAvailableGames</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;&nbsp;availableGames)</span></div>
    +<div class="block">Method called when the user wants to join an existing
    + game and has to pick between the available ones.
    + It assumes to receive only valid games.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>availableGames</code> - A list of valid joinable games.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)">
    +<h3>displayVirtualView</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">displayVirtualView</span><wbr><span class="parameters">(<a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;old,
    + <a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vw)</span></div>
    +<div class="block">Method called to display the state of the game.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>vw</code> - <a href="../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview"><code>VirtualView</code></a> of the game to display.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)">
    +<h3>displayChatMessage</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">displayChatMessage</span><wbr><span class="parameters">(<a href="../../server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a>&nbsp;message)</span></div>
    +<div class="block">Method called to notify the user of a new chat message.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>message</code> - The message to show to the user.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)">
    +<h3>displayError</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">displayError</span><wbr><span class="parameters">(<a href="../../server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a>&nbsp;errorMessage)</span></div>
    +<div class="block">Method called to notify the user of an error.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>errorMessage</code> - message to show to the user.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="terminateUserInterface()">
    +<h3>terminateUserInterface</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">terminateUserInterface</span>()</div>
    +<div class="block">Method used when game is over to close input and eventually show infos.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/CallBack.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/CallBack.html
    new file mode 100644
    index 00000000..dd6ccc88
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/CallBack.html
    @@ -0,0 +1,271 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>CallBack</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.guifactory, class: CallBack">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></div>
    +<h1 title="Class CallBack" class="title">Class CallBack</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.guifactory.CallBack</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">CallBack</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The CallBack class provides various callback implementations used in the GUI. It includes
    + callback implementations for button actions and bookshelf selection events.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static <a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#confirmJoinGameCallBack" class="member-name-link">confirmJoinGameCallBack</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">A callback implementation for confirming joining a game.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#confirmNameCallBack" class="member-name-link">confirmNameCallBack</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">A callback implementation for confirming a name.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#confirmPlayerNumCallBack" class="member-name-link">confirmPlayerNumCallBack</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">A callback implementation for confirming the number of players.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#createNewGameCallBack" class="member-name-link">createNewGameCallBack</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">A callback implementation for creating a new game.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#joinGameCallBack" class="member-name-link">joinGameCallBack</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">A callback implementation for joining a game.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="interfaces/BookShelfSelectionCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">BookShelfSelectionCallBack</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#moveTileCallBack" class="member-name-link">moveTileCallBack</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">A callback implementation for moving a tile on the bookshelf.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static <a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#sendMessageCallBack" class="member-name-link">sendMessageCallBack</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">A callback implementation to send a chat message.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#switchToPlayerBookshelf" class="member-name-link">switchToPlayerBookshelf</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Callback for "see XYZ's bookshelf" button.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">CallBack</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="confirmNameCallBack">
    +<h3>confirmNameCallBack</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></span>&nbsp;<span class="element-name">confirmNameCallBack</span></div>
    +<div class="block">A callback implementation for confirming a name. This callback prints the entered text and adds
    + it to the message queue of the GraphicUserInterface.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="switchToPlayerBookshelf">
    +<h3>switchToPlayerBookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></span>&nbsp;<span class="element-name">switchToPlayerBookshelf</span></div>
    +<div class="block">Callback for "see XYZ's bookshelf" button. Textfield received is player's name.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="confirmPlayerNumCallBack">
    +<h3>confirmPlayerNumCallBack</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></span>&nbsp;<span class="element-name">confirmPlayerNumCallBack</span></div>
    +<div class="block">A callback implementation for confirming the number of players. This callback prints the
    + entered text and adds the create game command to the message queue of the GraphicUserInterface.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="confirmJoinGameCallBack">
    +<h3>confirmJoinGameCallBack</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></span>&nbsp;<span class="element-name">confirmJoinGameCallBack</span></div>
    +<div class="block">A callback implementation for confirming joining a game. This callback prints the entered text
    + and adds the join game command to the message queue of the GraphicUserInterface.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="joinGameCallBack">
    +<h3>joinGameCallBack</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></span>&nbsp;<span class="element-name">joinGameCallBack</span></div>
    +<div class="block">A callback implementation for joining a game. This callback changes the scene to the join game
    + scene.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createNewGameCallBack">
    +<h3>createNewGameCallBack</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></span>&nbsp;<span class="element-name">createNewGameCallBack</span></div>
    +<div class="block">A callback implementation for creating a new game. This callback changes the scene to the
    + create game scene.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="moveTileCallBack">
    +<h3>moveTileCallBack</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="interfaces/BookShelfSelectionCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">BookShelfSelectionCallBack</a></span>&nbsp;<span class="element-name">moveTileCallBack</span></div>
    +<div class="block">A callback implementation for moving a tile on the bookshelf. This callback adds the move tile
    + command to the message queue of the GraphicUserInterface.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sendMessageCallBack">
    +<h3>sendMessageCallBack</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="interfaces/ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></span>&nbsp;<span class="element-name">sendMessageCallBack</span></div>
    +<div class="block">A callback implementation to send a chat message. This callback adds the send chat message
    + command to the message queue of the GraphicUserInterface.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>CallBack</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CallBack</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html
    new file mode 100644
    index 00000000..ed6bb197
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html
    @@ -0,0 +1,235 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>GuiFactory.GameSnapshotFactory</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.guifactory, class: GuiFactory, class: GameSnapshotFactory">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></div>
    +<h1 title="Class GuiFactory.GameSnapshotFactory" class="title">Class GuiFactory.GameSnapshotFactory</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.guifactory.GuiFactory.GameSnapshotFactory</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><code><a href="GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">GuiFactory.GameSnapshotFactory</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">GUI waiting for a game snapshot. Creates GUI components for the game
    + snapshot.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">GameSnapshotFactory</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#updateBookshelf(javafx.scene.layout.StackPane,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,java.lang.String)" class="member-name-link">updateBookshelf</a><wbr>(javafx.scene.layout.StackPane&nbsp;sp,
    + <a href="../../../server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bs,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;bsOwner)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method used to update the bookshelf currently on stage.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#updateChatHistory(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">updateChatHistory</a><wbr>(javafx.scene.layout.StackPane&nbsp;oldSP,
    + <a href="../../../server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;msg)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method used to update the chat widget dynamically.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#updateGameWidget(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">updateGameWidget</a><wbr>(javafx.scene.layout.StackPane&nbsp;oldSP,
    + <a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;oldVw,
    + <a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;newVw)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method used to update the current game widget scene dynamically.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>GameSnapshotFactory</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">GameSnapshotFactory</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="updateBookshelf(javafx.scene.layout.StackPane,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,java.lang.String)">
    +<h3>updateBookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateBookshelf</span><wbr><span class="parameters">(javafx.scene.layout.StackPane&nbsp;sp,
    + <a href="../../../server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bs,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;bsOwner)</span></div>
    +<div class="block">Method used to update the bookshelf currently on stage.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>sp</code> - scene's stackpane.</dd>
    +<dd><code>bs</code> - bookshelf to show.</dd>
    +<dd><code>bsOwner</code> - string name of the BS owner.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="updateGameWidget(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)">
    +<h3>updateGameWidget</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateGameWidget</span><wbr><span class="parameters">(javafx.scene.layout.StackPane&nbsp;oldSP,
    + <a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;oldVw,
    + <a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;newVw)</span></div>
    +<div class="block">Method used to update the current game widget scene dynamically. Must be
    + wrapped in executeOnJavaFX
    + when called to make sure it's properly runned into JavaFX's thread.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>oldSP</code> - The old stack pane to update.</dd>
    +<dd><code>oldVw</code> - The old virtual view to check what changed.</dd>
    +<dd><code>newVw</code> - The new virtual view.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="updateChatHistory(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.messages.AbstractMessage)">
    +<h3>updateChatHistory</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateChatHistory</span><wbr><span class="parameters">(javafx.scene.layout.StackPane&nbsp;oldSP,
    + <a href="../../../server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;msg)</span></div>
    +<div class="block">Method used to update the chat widget dynamically.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>oldSP</code> - it's the old stackpane of the chat.</dd>
    +<dd><code>msg</code> - the message to be added.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html
    new file mode 100644
    index 00000000..e753201d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html
    @@ -0,0 +1,279 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>GuiFactory.SCENE</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.guifactory, class: GuiFactory, enum: SCENE">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#enum-constant-summary">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#enum-constant-detail">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></div>
    +<h1 title="Enum Class GuiFactory.SCENE" class="title">Enum Class GuiFactory.SCENE</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a>&gt;
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.guifactory.GuiFactory.SCENE</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><code><a href="GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">GuiFactory.SCENE</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a>&gt;</span></div>
    +<div class="block">An enum representing different scenes that can be created by the factory. Add
    + more values to
    + represent additional scenes in the application.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#CREATE_GAME" class="member-name-link">CREATE_GAME</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#END_GAME" class="member-name-link">END_GAME</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#ENTER_GAME_SELECTION" class="member-name-link">ENTER_GAME_SELECTION</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#GAME_SNAPSHOT" class="member-name-link">GAME_SNAPSHOT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#JOIN_GAME" class="member-name-link">JOIN_GAME</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#SPLASH_SCREEN" class="member-name-link">SPLASH_SCREEN</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#WAIT_GAME" class="member-name-link">WAIT_GAME</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="SPLASH_SCREEN">
    +<h3>SPLASH_SCREEN</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></span>&nbsp;<span class="element-name">SPLASH_SCREEN</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ENTER_GAME_SELECTION">
    +<h3>ENTER_GAME_SELECTION</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></span>&nbsp;<span class="element-name">ENTER_GAME_SELECTION</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CREATE_GAME">
    +<h3>CREATE_GAME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></span>&nbsp;<span class="element-name">CREATE_GAME</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="JOIN_GAME">
    +<h3>JOIN_GAME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></span>&nbsp;<span class="element-name">JOIN_GAME</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WAIT_GAME">
    +<h3>WAIT_GAME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></span>&nbsp;<span class="element-name">WAIT_GAME</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GAME_SNAPSHOT">
    +<h3>GAME_SNAPSHOT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></span>&nbsp;<span class="element-name">GAME_SNAPSHOT</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="END_GAME">
    +<h3>END_GAME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></span>&nbsp;<span class="element-name">END_GAME</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html
    new file mode 100644
    index 00000000..0fcb0dd0
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html
    @@ -0,0 +1,391 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>GuiFactory</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.guifactory, class: GuiFactory">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#field-summary">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></div>
    +<h1 title="Class GuiFactory" class="title">Class GuiFactory</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.guifactory.GuiFactory</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">GuiFactory</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">GUI scene factory. Creates various GUI scenes for the application. Each scene
    + is created as a
    + static method in this class. The class also contains helper methods for
    + creating GUI components.
    +
    + <p>
    + The class uses JavaFX for UI rendering.
    +
    + <p>
    + The factory methods return JavaFX Scene objects that can be used to set the
    + application's
    + stage. The stages are stored in a static map for easy access.
    +
    + <p>
    + This class is not meant to be instantiated. All methods and members are
    + static.
    +
    + <p>
    + Example usage: ``` Scene splashScreenScene =
    + GuiFactory.getSplashScreenScene();
    + GuiFactory.stages.put(GuiFactory.SCENE.SPLASH_SCREEN, splashScreenScene);
    + primaryStage.setScene(splashScreenScene); primaryStage.show(); ```
    +
    + <p>
    + Note: This is a simplified example and assumes the necessary JavaFX setup has
    + been done.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>class&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="GuiFactory.GameSnapshotFactory.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.GameSnapshotFactory</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">GUI waiting for a game snapshot.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static enum&nbsp;</code></div>
    +<div class="col-second odd-row-color"><code><a href="GuiFactory.SCENE.html" class="type-name-link" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">An enum representing different scenes that can be created by the factory.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static javafx.stage.Stage</code></div>
    +<div class="col-second even-row-color"><code><a href="#mainStage" class="member-name-link">mainStage</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The <code>Stage</code> reference.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a>,<wbr>javafx.scene.Scene&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#stages" class="member-name-link">stages</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">A mapping from a <a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory"><code>GuiFactory.SCENE</code></a> to a <code>Scene</code>.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#executeOnJavaFX(java.lang.Runnable)" class="member-name-link">executeOnJavaFX</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>&nbsp;r)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Executes a callback inside of JavaFX thread.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static javafx.scene.Scene</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getCreateJoinScene(java.util.List)" class="member-name-link">getCreateJoinScene</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;&nbsp;vvs)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates and returns a new JavaFX Scene for the join game selection screen.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static javafx.scene.Scene</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getCreateNewGameSelectionScene()" class="member-name-link">getCreateNewGameSelectionScene</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates and returns a new JavaFX Scene for the create new game selection
    + screen.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static javafx.scene.Scene</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getEndGameScene(it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">getEndGameScene</a><wbr>(<a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vv)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates and returns a new JavaFX Scene for the game snapshot.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static javafx.scene.Scene</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getEnterGameSelectionScene()" class="member-name-link">getEnterGameSelectionScene</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates the enter game selection scene.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getErrorMessage(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.messages.ErrorMessage)" class="member-name-link">getErrorMessage</a><wbr>(javafx.scene.layout.StackPane&nbsp;sp,
    + <a href="../../../server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a>&nbsp;msg)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method that creates and shows the alert modal for error messages</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static javafx.scene.Scene</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getGameSnapshotScene(it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">getGameSnapshotScene</a><wbr>(<a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vv)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates and returns a new JavaFX Scene for the game snapshot.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static javafx.scene.Scene</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getSplashScreenScene()" class="member-name-link">getSplashScreenScene</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates the splash screen scene.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static javafx.scene.Scene</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getWaitGameScene()" class="member-name-link">getWaitGameScene</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Creates and returns a new JavaFX Scene for the wait game screen.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="mainStage">
    +<h3>mainStage</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">javafx.stage.Stage</span>&nbsp;<span class="element-name">mainStage</span></div>
    +<div class="block">The <code>Stage</code> reference.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stages">
    +<h3>stages</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a>,<wbr>javafx.scene.Scene&gt;</span>&nbsp;<span class="element-name">stages</span></div>
    +<div class="block">A mapping from a <a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory"><code>GuiFactory.SCENE</code></a> to a <code>Scene</code>.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getErrorMessage(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.messages.ErrorMessage)">
    +<h3>getErrorMessage</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">getErrorMessage</span><wbr><span class="parameters">(javafx.scene.layout.StackPane&nbsp;sp,
    + <a href="../../../server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a>&nbsp;msg)</span></div>
    +<div class="block">Method that creates and shows the alert modal for error messages</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>sp</code> - The stack pane.</dd>
    +<dd><code>msg</code> - Message to be displayed.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="executeOnJavaFX(java.lang.Runnable)">
    +<h3>executeOnJavaFX</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">executeOnJavaFX</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>&nbsp;r)</span></div>
    +<div class="block">Executes a callback inside of JavaFX thread. Mandatory for
    + any scene-change related task.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>r</code> - The callback to be executed.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getSplashScreenScene()">
    +<h3>getSplashScreenScene</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">javafx.scene.Scene</span>&nbsp;<span class="element-name">getSplashScreenScene</span>()</div>
    +<div class="block">Creates the splash screen scene. The splash screen scene consists of a stack
    + pane with a
    + background and an input name widget. The background image is retrieved from
    + the
    + SplashScreenFactory class. The input name widget contains a label, a text
    + field, and a confirm
    + button. The confirm button triggers the CallBack.confirmNameCallBack.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The created splash screen scene.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getEnterGameSelectionScene()">
    +<h3>getEnterGameSelectionScene</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">javafx.scene.Scene</span>&nbsp;<span class="element-name">getEnterGameSelectionScene</span>()</div>
    +<div class="block">Creates the enter game selection scene. The enter game selection scene
    + consists of a stack pane
    + with a background and a selection widget. The background image is retrieved
    + from the
    + EnterGameSelectionScreenFactory class. The selection widget contains a label
    + and two buttons
    + (create new game and join game).</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The created enter game selection scene.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCreateNewGameSelectionScene()">
    +<h3>getCreateNewGameSelectionScene</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">javafx.scene.Scene</span>&nbsp;<span class="element-name">getCreateNewGameSelectionScene</span>()</div>
    +<div class="block">Creates and returns a new JavaFX Scene for the create new game selection
    + screen.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The JavaFX Scene for the create new game selection screen.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCreateJoinScene(java.util.List)">
    +<h3>getCreateJoinScene</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">javafx.scene.Scene</span>&nbsp;<span class="element-name">getCreateJoinScene</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;&nbsp;vvs)</span></div>
    +<div class="block">Creates and returns a new JavaFX Scene for the join game selection screen.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The JavaFX Scene for the join game selection screen.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getWaitGameScene()">
    +<h3>getWaitGameScene</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">javafx.scene.Scene</span>&nbsp;<span class="element-name">getWaitGameScene</span>()</div>
    +<div class="block">Creates and returns a new JavaFX Scene for the wait game screen.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The JavaFX Scene for the join game wait screen.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getGameSnapshotScene(it.polimi.is23am10.server.network.virtualview.VirtualView)">
    +<h3>getGameSnapshotScene</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">javafx.scene.Scene</span>&nbsp;<span class="element-name">getGameSnapshotScene</span><wbr><span class="parameters">(<a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vv)</span></div>
    +<div class="block">Creates and returns a new JavaFX Scene for the game snapshot.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The JavaFX Scene for the game snapshot.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getEndGameScene(it.polimi.is23am10.server.network.virtualview.VirtualView)">
    +<h3>getEndGameScene</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">javafx.scene.Scene</span>&nbsp;<span class="element-name">getEndGameScene</span><wbr><span class="parameters">(<a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vv)</span></div>
    +<div class="block">Creates and returns a new JavaFX Scene for the game snapshot.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The JavaFX Scene for the game snapshot.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/BookShelfSelectionCallBack.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/BookShelfSelectionCallBack.html
    new file mode 100644
    index 00000000..5f4d5653
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/BookShelfSelectionCallBack.html
    @@ -0,0 +1,153 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>BookShelfSelectionCallBack</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.guifactory.interfaces, interface: BookShelfSelectionCallBack">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a></div>
    +<h1 title="Interface BookShelfSelectionCallBack" class="title">Interface BookShelfSelectionCallBack</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Functional Interface:</dt>
    +<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
    +</span><span class="modifiers">public interface </span><span class="element-name type-name-label">BookShelfSelectionCallBack</span></div>
    +<div class="block">The BookShelfSelectionCallBack interface represents a callback for bookshelf selection events.
    + It defines a single method, `call`, which is invoked when a bookshelf selection event occurs.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#call(java.lang.String)" class="member-name-link">call</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;action)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">The `call` method is invoked when a bookshelf selection event occurs.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="call(java.lang.String)">
    +<h3>call</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">call</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;action)</span></div>
    +<div class="block">The `call` method is invoked when a bookshelf selection event occurs.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>action</code> - The action associated with the bookshelf selection event.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/ButtonCallBack.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/ButtonCallBack.html
    new file mode 100644
    index 00000000..270488a0
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/ButtonCallBack.html
    @@ -0,0 +1,154 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ButtonCallBack</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.guifactory.interfaces, interface: ButtonCallBack">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a></div>
    +<h1 title="Interface ButtonCallBack" class="title">Interface ButtonCallBack</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Functional Interface:</dt>
    +<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
    +</span><span class="modifiers">public interface </span><span class="element-name type-name-label">ButtonCallBack</span></div>
    +<div class="block">The ButtonCallBack interface represents a callback function that is invoked when a button is clicked.
    + It defines a single method 'call' that accepts an array of TextField objects as parameters.
    + Implementations of this interface can define custom logic to be executed when the button is clicked.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#call(javafx.scene.control.TextField...)" class="member-name-link">call</a><wbr>(javafx.scene.control.TextField...&nbsp;tfs)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Executes the callback function when the button is clicked.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="call(javafx.scene.control.TextField...)">
    +<h3>call</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">call</span><wbr><span class="parameters">(javafx.scene.control.TextField...&nbsp;tfs)</span></div>
    +<div class="block">Executes the callback function when the button is clicked.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>tfs</code> - An array of TextField objects representing the text fields associated with the button click.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/TextFieldCallBack.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/TextFieldCallBack.html
    new file mode 100644
    index 00000000..12a965e4
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/TextFieldCallBack.html
    @@ -0,0 +1,152 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>TextFieldCallBack</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.guifactory.interfaces, interface: TextFieldCallBack">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a></div>
    +<h1 title="Interface TextFieldCallBack" class="title">Interface TextFieldCallBack</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Functional Interface:</dt>
    +<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
    +</span><span class="modifiers">public interface </span><span class="element-name type-name-label">TextFieldCallBack</span></div>
    +<div class="block">The TextFieldCallBack interface represents a callback that is invoked when a text field event occurs.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#call(java.lang.String)" class="member-name-link">call</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Called when a text field event occurs.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="call(java.lang.String)">
    +<h3>call</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">call</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s)</span></div>
    +<div class="block">Called when a text field event occurs.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>s</code> - The string value representing the event.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-summary.html
    new file mode 100644
    index 00000000..94e6571a
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-summary.html
    @@ -0,0 +1,113 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.userinterface.guifactory.interfaces</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.guifactory.interfaces">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.client.userinterface.guifactory.interfaces" class="title">Package it.polimi.is23am10.client.userinterface.guifactory.interfaces</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.client.userinterface.guifactory.interfaces</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Interfaces</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="BookShelfSelectionCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">BookShelfSelectionCallBack</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">The BookShelfSelectionCallBack interface represents a callback for bookshelf selection events.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="ButtonCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab1">
    +<div class="block">The ButtonCallBack interface represents a callback function that is invoked when a button is clicked.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="TextFieldCallBack.html" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">TextFieldCallBack</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">The TextFieldCallBack interface represents a callback that is invoked when a text field event occurs.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-tree.html
    new file mode 100644
    index 00000000..e6b51a95
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-tree.html
    @@ -0,0 +1,70 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.userinterface.guifactory.interfaces Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.client.userinterface.guifactory.interfaces">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.client.userinterface.guifactory.interfaces</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.interfaces.<a href="BookShelfSelectionCallBack.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">BookShelfSelectionCallBack</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.interfaces.<a href="ButtonCallBack.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.interfaces.<a href="TextFieldCallBack.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">TextFieldCallBack</a></li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/package-summary.html
    new file mode 100644
    index 00000000..192b824b
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/package-summary.html
    @@ -0,0 +1,119 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.userinterface.guifactory</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.guifactory">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.client.userinterface.guifactory" class="title">Package it.polimi.is23am10.client.userinterface.guifactory</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.client.userinterface.guifactory</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.client.userinterface</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="interfaces/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="../helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel">
    +<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CallBack.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The CallBack class provides various callback implementations used in the GUI.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="GuiFactory.html" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">GUI scene factory.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab3"><a href="GuiFactory.SCENE.html" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab3">
    +<div class="block">An enum representing different scenes that can be created by the factory.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/package-tree.html
    new file mode 100644
    index 00000000..7c44b865
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/guifactory/package-tree.html
    @@ -0,0 +1,88 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.userinterface.guifactory Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.client.userinterface.guifactory">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.client.userinterface.guifactory</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.<a href="CallBack.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.<a href="GuiFactory.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.<a href="GuiFactory.GameSnapshotFactory.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.GameSnapshotFactory</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.<a href="GuiFactory.SCENE.html" class="type-name-link" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html
    new file mode 100644
    index 00000000..f85bcd84
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html
    @@ -0,0 +1,1135 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ANSICodes</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.helpers, class: ANSICodes">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></div>
    +<h1 title="Class ANSICodes" class="title">Class ANSICodes</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.helpers.ANSICodes</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ANSICodes</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#BLACK" class="member-name-link">BLACK</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#BLACK_BACKGROUND" class="member-name-link">BLACK_BACKGROUND</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#BLACK_BACKGROUND_BRIGHT" class="member-name-link">BLACK_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#BLACK_BOLD" class="member-name-link">BLACK_BOLD</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#BLACK_BOLD_BRIGHT" class="member-name-link">BLACK_BOLD_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#BLACK_BRIGHT" class="member-name-link">BLACK_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#BLACK_UNDERLINED" class="member-name-link">BLACK_UNDERLINED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#BLUE" class="member-name-link">BLUE</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#BLUE_BACKGROUND" class="member-name-link">BLUE_BACKGROUND</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#BLUE_BACKGROUND_BRIGHT" class="member-name-link">BLUE_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#BLUE_BOLD" class="member-name-link">BLUE_BOLD</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#BLUE_BOLD_BRIGHT" class="member-name-link">BLUE_BOLD_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#BLUE_BRIGHT" class="member-name-link">BLUE_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#BLUE_UNDERLINED" class="member-name-link">BLUE_UNDERLINED</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#CYAN" class="member-name-link">CYAN</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#CYAN_BACKGROUND" class="member-name-link">CYAN_BACKGROUND</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#CYAN_BACKGROUND_BRIGHT" class="member-name-link">CYAN_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#CYAN_BOLD" class="member-name-link">CYAN_BOLD</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#CYAN_BOLD_BRIGHT" class="member-name-link">CYAN_BOLD_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#CYAN_BRIGHT" class="member-name-link">CYAN_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#CYAN_UNDERLINED" class="member-name-link">CYAN_UNDERLINED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#GREEN" class="member-name-link">GREEN</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#GREEN_BACKGROUND" class="member-name-link">GREEN_BACKGROUND</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#GREEN_BACKGROUND_BRIGHT" class="member-name-link">GREEN_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#GREEN_BOLD" class="member-name-link">GREEN_BOLD</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#GREEN_BOLD_BRIGHT" class="member-name-link">GREEN_BOLD_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#GREEN_BRIGHT" class="member-name-link">GREEN_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#GREEN_UNDERLINED" class="member-name-link">GREEN_UNDERLINED</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#PURPLE" class="member-name-link">PURPLE</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#PURPLE_BACKGROUND" class="member-name-link">PURPLE_BACKGROUND</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#PURPLE_BACKGROUND_BRIGHT" class="member-name-link">PURPLE_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#PURPLE_BOLD" class="member-name-link">PURPLE_BOLD</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#PURPLE_BOLD_BRIGHT" class="member-name-link">PURPLE_BOLD_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#PURPLE_BRIGHT" class="member-name-link">PURPLE_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#PURPLE_UNDERLINED" class="member-name-link">PURPLE_UNDERLINED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#RED" class="member-name-link">RED</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#RED_BACKGROUND" class="member-name-link">RED_BACKGROUND</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#RED_BACKGROUND_BRIGHT" class="member-name-link">RED_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#RED_BOLD" class="member-name-link">RED_BOLD</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#RED_BOLD_BRIGHT" class="member-name-link">RED_BOLD_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#RED_BRIGHT" class="member-name-link">RED_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#RED_UNDERLINED" class="member-name-link">RED_UNDERLINED</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#RESET" class="member-name-link">RESET</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#WHITE" class="member-name-link">WHITE</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#WHITE_BACKGROUND" class="member-name-link">WHITE_BACKGROUND</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#WHITE_BACKGROUND_BRIGHT" class="member-name-link">WHITE_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#WHITE_BOLD" class="member-name-link">WHITE_BOLD</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#WHITE_BOLD_BRIGHT" class="member-name-link">WHITE_BOLD_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#WHITE_BRIGHT" class="member-name-link">WHITE_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#WHITE_UNDERLINED" class="member-name-link">WHITE_UNDERLINED</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#YELLOW" class="member-name-link">YELLOW</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#YELLOW_BACKGROUND" class="member-name-link">YELLOW_BACKGROUND</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#YELLOW_BACKGROUND_BRIGHT" class="member-name-link">YELLOW_BACKGROUND_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#YELLOW_BOLD" class="member-name-link">YELLOW_BOLD</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#YELLOW_BOLD_BRIGHT" class="member-name-link">YELLOW_BOLD_BRIGHT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#YELLOW_BRIGHT" class="member-name-link">YELLOW_BRIGHT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#YELLOW_UNDERLINED" class="member-name-link">YELLOW_UNDERLINED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ANSICodes</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="RESET">
    +<h3>RESET</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">RESET</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RESET">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLACK">
    +<h3>BLACK</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLACK</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="RED">
    +<h3>RED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">RED</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GREEN">
    +<h3>GREEN</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">GREEN</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="YELLOW">
    +<h3>YELLOW</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">YELLOW</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLUE">
    +<h3>BLUE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLUE</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PURPLE">
    +<h3>PURPLE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">PURPLE</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CYAN">
    +<h3>CYAN</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CYAN</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WHITE">
    +<h3>WHITE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WHITE</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLACK_BOLD">
    +<h3>BLACK_BOLD</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLACK_BOLD</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_BOLD">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="RED_BOLD">
    +<h3>RED_BOLD</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">RED_BOLD</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_BOLD">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GREEN_BOLD">
    +<h3>GREEN_BOLD</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">GREEN_BOLD</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_BOLD">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="YELLOW_BOLD">
    +<h3>YELLOW_BOLD</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">YELLOW_BOLD</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_BOLD">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLUE_BOLD">
    +<h3>BLUE_BOLD</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLUE_BOLD</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_BOLD">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PURPLE_BOLD">
    +<h3>PURPLE_BOLD</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">PURPLE_BOLD</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_BOLD">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CYAN_BOLD">
    +<h3>CYAN_BOLD</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CYAN_BOLD</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_BOLD">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WHITE_BOLD">
    +<h3>WHITE_BOLD</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WHITE_BOLD</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_BOLD">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLACK_UNDERLINED">
    +<h3>BLACK_UNDERLINED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLACK_UNDERLINED</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_UNDERLINED">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="RED_UNDERLINED">
    +<h3>RED_UNDERLINED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">RED_UNDERLINED</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_UNDERLINED">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GREEN_UNDERLINED">
    +<h3>GREEN_UNDERLINED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">GREEN_UNDERLINED</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_UNDERLINED">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="YELLOW_UNDERLINED">
    +<h3>YELLOW_UNDERLINED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">YELLOW_UNDERLINED</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_UNDERLINED">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLUE_UNDERLINED">
    +<h3>BLUE_UNDERLINED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLUE_UNDERLINED</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_UNDERLINED">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PURPLE_UNDERLINED">
    +<h3>PURPLE_UNDERLINED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">PURPLE_UNDERLINED</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_UNDERLINED">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CYAN_UNDERLINED">
    +<h3>CYAN_UNDERLINED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CYAN_UNDERLINED</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_UNDERLINED">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WHITE_UNDERLINED">
    +<h3>WHITE_UNDERLINED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WHITE_UNDERLINED</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_UNDERLINED">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLACK_BACKGROUND">
    +<h3>BLACK_BACKGROUND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLACK_BACKGROUND</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_BACKGROUND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="RED_BACKGROUND">
    +<h3>RED_BACKGROUND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">RED_BACKGROUND</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_BACKGROUND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GREEN_BACKGROUND">
    +<h3>GREEN_BACKGROUND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">GREEN_BACKGROUND</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_BACKGROUND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="YELLOW_BACKGROUND">
    +<h3>YELLOW_BACKGROUND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">YELLOW_BACKGROUND</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_BACKGROUND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLUE_BACKGROUND">
    +<h3>BLUE_BACKGROUND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLUE_BACKGROUND</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_BACKGROUND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PURPLE_BACKGROUND">
    +<h3>PURPLE_BACKGROUND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">PURPLE_BACKGROUND</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_BACKGROUND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CYAN_BACKGROUND">
    +<h3>CYAN_BACKGROUND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CYAN_BACKGROUND</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_BACKGROUND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WHITE_BACKGROUND">
    +<h3>WHITE_BACKGROUND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WHITE_BACKGROUND</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_BACKGROUND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLACK_BRIGHT">
    +<h3>BLACK_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLACK_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="RED_BRIGHT">
    +<h3>RED_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">RED_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GREEN_BRIGHT">
    +<h3>GREEN_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">GREEN_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="YELLOW_BRIGHT">
    +<h3>YELLOW_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">YELLOW_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLUE_BRIGHT">
    +<h3>BLUE_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLUE_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PURPLE_BRIGHT">
    +<h3>PURPLE_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">PURPLE_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CYAN_BRIGHT">
    +<h3>CYAN_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CYAN_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WHITE_BRIGHT">
    +<h3>WHITE_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WHITE_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLACK_BOLD_BRIGHT">
    +<h3>BLACK_BOLD_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLACK_BOLD_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_BOLD_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="RED_BOLD_BRIGHT">
    +<h3>RED_BOLD_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">RED_BOLD_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_BOLD_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GREEN_BOLD_BRIGHT">
    +<h3>GREEN_BOLD_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">GREEN_BOLD_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_BOLD_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="YELLOW_BOLD_BRIGHT">
    +<h3>YELLOW_BOLD_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">YELLOW_BOLD_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_BOLD_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLUE_BOLD_BRIGHT">
    +<h3>BLUE_BOLD_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLUE_BOLD_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_BOLD_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PURPLE_BOLD_BRIGHT">
    +<h3>PURPLE_BOLD_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">PURPLE_BOLD_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_BOLD_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CYAN_BOLD_BRIGHT">
    +<h3>CYAN_BOLD_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CYAN_BOLD_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_BOLD_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WHITE_BOLD_BRIGHT">
    +<h3>WHITE_BOLD_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WHITE_BOLD_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_BOLD_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLACK_BACKGROUND_BRIGHT">
    +<h3>BLACK_BACKGROUND_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLACK_BACKGROUND_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLACK_BACKGROUND_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="RED_BACKGROUND_BRIGHT">
    +<h3>RED_BACKGROUND_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">RED_BACKGROUND_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.RED_BACKGROUND_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GREEN_BACKGROUND_BRIGHT">
    +<h3>GREEN_BACKGROUND_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">GREEN_BACKGROUND_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.GREEN_BACKGROUND_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="YELLOW_BACKGROUND_BRIGHT">
    +<h3>YELLOW_BACKGROUND_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">YELLOW_BACKGROUND_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.YELLOW_BACKGROUND_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BLUE_BACKGROUND_BRIGHT">
    +<h3>BLUE_BACKGROUND_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">BLUE_BACKGROUND_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.BLUE_BACKGROUND_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PURPLE_BACKGROUND_BRIGHT">
    +<h3>PURPLE_BACKGROUND_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">PURPLE_BACKGROUND_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.PURPLE_BACKGROUND_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CYAN_BACKGROUND_BRIGHT">
    +<h3>CYAN_BACKGROUND_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CYAN_BACKGROUND_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.CYAN_BACKGROUND_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WHITE_BACKGROUND_BRIGHT">
    +<h3>WHITE_BACKGROUND_BRIGHT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WHITE_BACKGROUND_BRIGHT</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.ANSICodes.WHITE_BACKGROUND_BRIGHT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ANSICodes</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ANSICodes</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html
    new file mode 100644
    index 00000000..b9e8e407
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html
    @@ -0,0 +1,1201 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>CLIStrings</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.helpers, class: CLIStrings">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></div>
    +<h1 title="Class CLIStrings" class="title">Class CLIStrings</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.helpers.CLIStrings</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">CLIStrings</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">An helper class containing all the strings to display
    + to the user through UserInterface.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#availableGameString" class="member-name-link">availableGameString</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#blackLargeSquare" class="member-name-link">blackLargeSquare</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#blackSquareTab" class="member-name-link">blackSquareTab</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#boardStatus" class="member-name-link">boardStatus</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#bookshelfError" class="member-name-link">bookshelfError</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#bookshelfPoints" class="member-name-link">bookshelfPoints</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#bottomPaddingBoard" class="member-name-link">bottomPaddingBoard</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#broadcastErrorString" class="member-name-link">broadcastErrorString</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#broadcastMessageString" class="member-name-link">broadcastMessageString</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#createGame" class="member-name-link">createGame</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#currentStateString" class="member-name-link">currentStateString</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#description" class="member-name-link">description</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#disconnectedPlayers" class="member-name-link">disconnectedPlayers</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#doubleNewLine" class="member-name-link">doubleNewLine</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#errorMessage" class="member-name-link">errorMessage</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#extraPoints" class="member-name-link">extraPoints</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#firstPlayer" class="member-name-link">firstPlayer</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#gameOverString" class="member-name-link">gameOverString</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#idx" class="member-name-link">idx</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#indexBoard" class="member-name-link">indexBoard</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#indexBookshelf" class="member-name-link">indexBookshelf</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#inputError" class="member-name-link">inputError</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#insertPlayerNameString" class="member-name-link">insertPlayerNameString</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#joinExisting" class="member-name-link">joinExisting</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#joinOrCreateString" class="member-name-link">joinOrCreateString</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#lastRoundString" class="member-name-link">lastRoundString</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#line" class="member-name-link">line</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#listGamesString" class="member-name-link">listGamesString</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#messageStringReceiver" class="member-name-link">messageStringReceiver</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#messageStringSender" class="member-name-link">messageStringSender</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#moveTilesExampleString" class="member-name-link">moveTilesExampleString</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#moveTilesInviteString" class="member-name-link">moveTilesInviteString</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#N" class="member-name-link">N</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#newLine" class="member-name-link">newLine</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#noGamesString" class="member-name-link">noGamesString</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#nowPlaying" class="member-name-link">nowPlaying</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#paddingBookshelf" class="member-name-link">paddingBookshelf</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#player" class="member-name-link">player</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#playerIdx" class="member-name-link">playerIdx</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#playerScoreString" class="member-name-link">playerScoreString</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#privateCardIdx" class="member-name-link">privateCardIdx</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#privatePoints" class="member-name-link">privatePoints</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#role" class="member-name-link">role</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#scoreBlockPoints" class="member-name-link">scoreBlockPoints</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#sharedCardHeaderDescription" class="member-name-link">sharedCardHeaderDescription</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#sharedCardsBody" class="member-name-link">sharedCardsBody</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#sharedCardsBodyDescription" class="member-name-link">sharedCardsBodyDescription</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#sharedCardsHeader" class="member-name-link">sharedCardsHeader</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#sharedPatternsDesc" class="member-name-link">sharedPatternsDesc</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#status" class="member-name-link">status</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#tab" class="member-name-link">tab</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#tabBlackSquare" class="member-name-link">tabBlackSquare</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#tableBody1" class="member-name-link">tableBody1</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#tableBody2" class="member-name-link">tableBody2</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#tableHeader1" class="member-name-link">tableHeader1</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#tableHeader2" class="member-name-link">tableHeader2</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#tableLines1" class="member-name-link">tableLines1</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#tableLines2" class="member-name-link">tableLines2</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#topPaddingBoard" class="member-name-link">topPaddingBoard</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#totalScore" class="member-name-link">totalScore</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#verticalBoardIndex" class="member-name-link">verticalBoardIndex</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#waitingForPlayers" class="member-name-link">waitingForPlayers</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#welcomeString" class="member-name-link">welcomeString</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#winnerString" class="member-name-link">winnerString</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#yourTurn" class="member-name-link">yourTurn</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">CLIStrings</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="welcomeString">
    +<h3>welcomeString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">welcomeString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.welcomeString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="joinOrCreateString">
    +<h3>joinOrCreateString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">joinOrCreateString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.joinOrCreateString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="joinExisting">
    +<h3>joinExisting</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">joinExisting</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.joinExisting">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="createGame">
    +<h3>createGame</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">createGame</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.createGame">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="noGamesString">
    +<h3>noGamesString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">noGamesString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.noGamesString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="insertPlayerNameString">
    +<h3>insertPlayerNameString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">insertPlayerNameString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.insertPlayerNameString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="listGamesString">
    +<h3>listGamesString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">listGamesString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.listGamesString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="disconnectedPlayers">
    +<h3>disconnectedPlayers</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">disconnectedPlayers</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.disconnectedPlayers">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="availableGameString">
    +<h3>availableGameString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">availableGameString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.availableGameString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="currentStateString">
    +<h3>currentStateString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">currentStateString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.currentStateString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="gameOverString">
    +<h3>gameOverString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">gameOverString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.gameOverString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="playerScoreString">
    +<h3>playerScoreString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">playerScoreString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.playerScoreString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="winnerString">
    +<h3>winnerString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">winnerString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.winnerString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="lastRoundString">
    +<h3>lastRoundString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">lastRoundString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.lastRoundString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="nowPlaying">
    +<h3>nowPlaying</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">nowPlaying</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.nowPlaying">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="moveTilesInviteString">
    +<h3>moveTilesInviteString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">moveTilesInviteString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.moveTilesInviteString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="moveTilesExampleString">
    +<h3>moveTilesExampleString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">moveTilesExampleString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.moveTilesExampleString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="messageStringReceiver">
    +<h3>messageStringReceiver</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">messageStringReceiver</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.messageStringReceiver">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="messageStringSender">
    +<h3>messageStringSender</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">messageStringSender</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.messageStringSender">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="broadcastMessageString">
    +<h3>broadcastMessageString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">broadcastMessageString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.broadcastMessageString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="errorMessage">
    +<h3>errorMessage</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">errorMessage</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.errorMessage">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="broadcastErrorString">
    +<h3>broadcastErrorString</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">broadcastErrorString</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.broadcastErrorString">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="bottomPaddingBoard">
    +<h3>bottomPaddingBoard</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">bottomPaddingBoard</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.bottomPaddingBoard">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="topPaddingBoard">
    +<h3>topPaddingBoard</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">topPaddingBoard</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.topPaddingBoard">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="paddingBookshelf">
    +<h3>paddingBookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">paddingBookshelf</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.paddingBookshelf">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="indexBoard">
    +<h3>indexBoard</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">indexBoard</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.indexBoard">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="verticalBoardIndex">
    +<h3>verticalBoardIndex</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">verticalBoardIndex</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.verticalBoardIndex">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="indexBookshelf">
    +<h3>indexBookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">indexBookshelf</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.indexBookshelf">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="boardStatus">
    +<h3>boardStatus</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">boardStatus</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.boardStatus">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="playerIdx">
    +<h3>playerIdx</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">playerIdx</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.playerIdx">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="blackLargeSquare">
    +<h3>blackLargeSquare</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">blackLargeSquare</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.blackLargeSquare">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="tabBlackSquare">
    +<h3>tabBlackSquare</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">tabBlackSquare</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.tabBlackSquare">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="blackSquareTab">
    +<h3>blackSquareTab</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">blackSquareTab</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.blackSquareTab">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="tab">
    +<h3>tab</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">tab</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.tab">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="newLine">
    +<h3>newLine</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">newLine</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.newLine">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="doubleNewLine">
    +<h3>doubleNewLine</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">doubleNewLine</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.doubleNewLine">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="tableHeader1">
    +<h3>tableHeader1</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">tableHeader1</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="tableHeader2">
    +<h3>tableHeader2</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">tableHeader2</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="N">
    +<h3>N</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">N</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.N">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="status">
    +<h3>status</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">status</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.status">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="player">
    +<h3>player</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">player</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.player">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="role">
    +<h3>role</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">role</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.role">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="scoreBlockPoints">
    +<h3>scoreBlockPoints</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">scoreBlockPoints</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.scoreBlockPoints">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="bookshelfPoints">
    +<h3>bookshelfPoints</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">bookshelfPoints</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.bookshelfPoints">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="extraPoints">
    +<h3>extraPoints</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">extraPoints</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.extraPoints">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="totalScore">
    +<h3>totalScore</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">totalScore</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.totalScore">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="privatePoints">
    +<h3>privatePoints</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">privatePoints</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.privatePoints">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="tableLines1">
    +<h3>tableLines1</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">tableLines1</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="tableLines2">
    +<h3>tableLines2</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">tableLines2</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="firstPlayer">
    +<h3>firstPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">firstPlayer</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.firstPlayer">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="yourTurn">
    +<h3>yourTurn</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">yourTurn</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.yourTurn">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="tableBody1">
    +<h3>tableBody1</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">tableBody1</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="tableBody2">
    +<h3>tableBody2</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">tableBody2</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="line">
    +<h3>line</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">line</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.line">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="bookshelfError">
    +<h3>bookshelfError</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">bookshelfError</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.bookshelfError">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="inputError">
    +<h3>inputError</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">inputError</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.inputError">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sharedCardsHeader">
    +<h3>sharedCardsHeader</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">sharedCardsHeader</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sharedCardHeaderDescription">
    +<h3>sharedCardHeaderDescription</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">sharedCardHeaderDescription</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.sharedCardHeaderDescription">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sharedCardsBody">
    +<h3>sharedCardsBody</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">sharedCardsBody</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sharedCardsBodyDescription">
    +<h3>sharedCardsBodyDescription</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">sharedCardsBodyDescription</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.sharedCardsBodyDescription">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="idx">
    +<h3>idx</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">idx</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.idx">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="description">
    +<h3>description</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">description</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.description">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="privateCardIdx">
    +<h3>privateCardIdx</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">privateCardIdx</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.privateCardIdx">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sharedPatternsDesc">
    +<h3>sharedPatternsDesc</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">sharedPatternsDesc</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="waitingForPlayers">
    +<h3>waitingForPlayers</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">waitingForPlayers</span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CLIStrings.waitingForPlayers">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>CLIStrings</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CLIStrings</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html
    new file mode 100644
    index 00000000..9b2038da
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html
    @@ -0,0 +1,340 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>CommandsBuilder</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.helpers, class: CommandsBuilder">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></div>
    +<h1 title="Class CommandsBuilder" class="title">Class CommandsBuilder</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">CommandsBuilder</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Game mode string constants.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#CREATE_GAME" class="member-name-link">CREATE_GAME</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The command string for creating a game.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#JOIN_GAME" class="member-name-link">JOIN_GAME</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The command string for joining a game.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#MOVE_TILE" class="member-name-link">MOVE_TILE</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The command string for moving a tile.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#SEND_MESSAGE" class="member-name-link">SEND_MESSAGE</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The command string for sending a message</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">CommandsBuilder</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#buildCreateGameCmd(java.lang.String)" class="member-name-link">buildCreateGameCmd</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;pn)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Builds a create game command with the specified player name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#buildJoinGameCmd(java.lang.String)" class="member-name-link">buildJoinGameCmd</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;id)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Builds a join game command with the specified game ID.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#moveTileCmd(java.lang.String)" class="member-name-link">moveTileCmd</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;move)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Builds a move tile command with the specified move.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#sendChatMessageCmd(java.lang.String)" class="member-name-link">sendChatMessageCmd</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Builds a chat message and sends it.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="CREATE_GAME">
    +<h3>CREATE_GAME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">CREATE_GAME</span></div>
    +<div class="block">The command string for creating a game.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder.CREATE_GAME">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="JOIN_GAME">
    +<h3>JOIN_GAME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">JOIN_GAME</span></div>
    +<div class="block">The command string for joining a game.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder.JOIN_GAME">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MOVE_TILE">
    +<h3>MOVE_TILE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">MOVE_TILE</span></div>
    +<div class="block">The command string for moving a tile.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder.MOVE_TILE">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="SEND_MESSAGE">
    +<h3>SEND_MESSAGE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">SEND_MESSAGE</span></div>
    +<div class="block">The command string for sending a message</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../constant-values.html#it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder.SEND_MESSAGE">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>CommandsBuilder</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CommandsBuilder</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="buildCreateGameCmd(java.lang.String)">
    +<h3>buildCreateGameCmd</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">buildCreateGameCmd</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;pn)</span></div>
    +<div class="block">Builds a create game command with the specified player name.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>pn</code> - The player name.</dd>
    +<dt>Returns:</dt>
    +<dd>The create game command string.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="buildJoinGameCmd(java.lang.String)">
    +<h3>buildJoinGameCmd</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">buildJoinGameCmd</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;id)</span></div>
    +<div class="block">Builds a join game command with the specified game ID.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>id</code> - The game ID.</dd>
    +<dt>Returns:</dt>
    +<dd>The join game command string.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="moveTileCmd(java.lang.String)">
    +<h3>moveTileCmd</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">moveTileCmd</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;move)</span></div>
    +<div class="block">Builds a move tile command with the specified move.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>move</code> - The move to be performed.</dd>
    +<dt>Returns:</dt>
    +<dd>The move tile command string.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sendChatMessageCmd(java.lang.String)">
    +<h3>sendChatMessageCmd</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">sendChatMessageCmd</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +<div class="block">Builds a chat message and sends it.
    + The syntax for the chat messages is the following:
    + Broadcast: "textContent"
    + To player: "> playerName textContent"</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>msg</code> - The msg to be sent.</dd>
    +<dt>Returns:</dt>
    +<dd>The send message command string.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html
    new file mode 100644
    index 00000000..80c9b39d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html
    @@ -0,0 +1,269 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>OutputWrapper.OutputLevel</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.helpers, class: OutputWrapper, enum: OutputLevel">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#enum-constant-summary">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#enum-constant-detail">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></div>
    +<h1 title="Enum Class OutputWrapper.OutputLevel" class="title">Enum Class OutputWrapper.OutputLevel</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a>&gt;
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><code><a href="OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">OutputWrapper.OutputLevel</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a>&gt;</span></div>
    +<div class="block">Enum containing the output types.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#CHAT" class="member-name-link">CHAT</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#CRITICAL" class="member-name-link">CRITICAL</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#DEBUG" class="member-name-link">DEBUG</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#ERROR" class="member-name-link">ERROR</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#INFO" class="member-name-link">INFO</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#WARNING" class="member-name-link">WARNING</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="DEBUG">
    +<h3>DEBUG</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></span>&nbsp;<span class="element-name">DEBUG</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="INFO">
    +<h3>INFO</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></span>&nbsp;<span class="element-name">INFO</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CHAT">
    +<h3>CHAT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></span>&nbsp;<span class="element-name">CHAT</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WARNING">
    +<h3>WARNING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></span>&nbsp;<span class="element-name">WARNING</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR">
    +<h3>ERROR</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></span>&nbsp;<span class="element-name">ERROR</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CRITICAL">
    +<h3>CRITICAL</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></span>&nbsp;<span class="element-name">CRITICAL</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html
    new file mode 100644
    index 00000000..6f2c9c90
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html
    @@ -0,0 +1,517 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>OutputWrapper</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.helpers, class: OutputWrapper">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></div>
    +<h1 title="Class OutputWrapper" class="title">Class OutputWrapper</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.helpers.OutputWrapper</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">OutputWrapper</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">An helper class with all the methods needed to properly print
    + CLI messages for client. It wraps System.out enriching it with colors.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.client.userinterface.helpers.OutputWrapper">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="OutputWrapper.OutputLevel.html" class="type-name-link" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Enum containing the output types.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#HUNDRED_PADDING" class="member-name-link">HUNDRED_PADDING</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#L_PADDING" class="member-name-link">L_PADDING</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#M_PADDING" class="member-name-link">M_PADDING</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#MIN_PADDING_FOR_NAMES" class="member-name-link">MIN_PADDING_FOR_NAMES</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#S_PADDING" class="member-name-link">S_PADDING</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#XL_PADDING" class="member-name-link">XL_PADDING</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#XS_PADDING" class="member-name-link">XS_PADDING</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#XXL_PADDING" class="member-name-link">XXL_PADDING</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#XXS_PADDING" class="member-name-link">XXS_PADDING</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(boolean)" class="member-name-link">OutputWrapper</a><wbr>(boolean&nbsp;showDebug)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor for OutputWrapper.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#chat(java.lang.String,boolean)" class="member-name-link">chat</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Prints a chat message on console.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#clean()" class="member-name-link">clean</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Helper method to call to clean the console.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#critical(java.lang.String,boolean)" class="member-name-link">critical</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Prints a critical error line on console.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#debug(java.lang.String,boolean)" class="member-name-link">debug</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Prints a debug line on console.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#error(java.lang.String,boolean)" class="member-name-link">error</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Prints a error line on console.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getString(it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel,java.lang.String)" class="member-name-link">getString</a><wbr>(<a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a>&nbsp;level,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Helper method used by tests to retrieve the string to be printed
    + before actually printing it.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#info(java.lang.String,boolean)" class="member-name-link">info</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Prints a info line on console.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#printString(it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel,java.lang.String,boolean)" class="member-name-link">printString</a><wbr>(<a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a>&nbsp;level,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Public method to print a string.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setDebug(boolean)" class="member-name-link">setDebug</a><wbr>(boolean&nbsp;toSet)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Setter for the debug flag.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#show(it.polimi.is23am10.server.network.virtualview.VirtualView,boolean)" class="member-name-link">show</a><wbr>(<a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vw,
    + boolean&nbsp;cleanFirst)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Print the current game status on console.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#warning(java.lang.String,boolean)" class="member-name-link">warning</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Prints a warning line on console.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="XXS_PADDING">
    +<h3>XXS_PADDING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">XXS_PADDING</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="XS_PADDING">
    +<h3>XS_PADDING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">XS_PADDING</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="S_PADDING">
    +<h3>S_PADDING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">S_PADDING</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="M_PADDING">
    +<h3>M_PADDING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">M_PADDING</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="L_PADDING">
    +<h3>L_PADDING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">L_PADDING</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="XL_PADDING">
    +<h3>XL_PADDING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">XL_PADDING</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="XXL_PADDING">
    +<h3>XXL_PADDING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">XXL_PADDING</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="HUNDRED_PADDING">
    +<h3>HUNDRED_PADDING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">HUNDRED_PADDING</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MIN_PADDING_FOR_NAMES">
    +<h3>MIN_PADDING_FOR_NAMES</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">MIN_PADDING_FOR_NAMES</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(boolean)">
    +<h3>OutputWrapper</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">OutputWrapper</span><wbr><span class="parameters">(boolean&nbsp;showDebug)</span></div>
    +<div class="block">Public constructor for OutputWrapper.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>showDebug</code> - instance-specific debug flag.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="debug(java.lang.String,boolean)">
    +<h3>debug</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">debug</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</span></div>
    +<div class="block">Prints a debug line on console.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>string</code> - Debug string to display.</dd>
    +<dd><code>cleanFirst</code> - Flag to set if message should be preceded by a console
    +                   clean.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="info(java.lang.String,boolean)">
    +<h3>info</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">info</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</span></div>
    +<div class="block">Prints a info line on console.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>string</code> - Info string to display.</dd>
    +<dd><code>cleanFirst</code> - Flag to set if message should be preceded by a console
    +                   clean.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="show(it.polimi.is23am10.server.network.virtualview.VirtualView,boolean)">
    +<h3>show</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">show</span><wbr><span class="parameters">(<a href="../../../server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;vw,
    + boolean&nbsp;cleanFirst)</span></div>
    +<div class="block">Print the current game status on console.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>vw</code> - The virtualView.</dd>
    +<dd><code>cleanFirst</code> - Flag to set if message should be preceded by a console
    +                   clean.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="chat(java.lang.String,boolean)">
    +<h3>chat</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">chat</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</span></div>
    +<div class="block">Prints a chat message on console.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>string</code> - Message string to display.</dd>
    +<dd><code>cleanFirst</code> - Flag to set if message should be preceded by a console
    +                   clean.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="warning(java.lang.String,boolean)">
    +<h3>warning</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">warning</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</span></div>
    +<div class="block">Prints a warning line on console.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>string</code> - Warning string to display.</dd>
    +<dd><code>cleanFirst</code> - Flag to set if message should be preceded by a console
    +                   clean.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="error(java.lang.String,boolean)">
    +<h3>error</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">error</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</span></div>
    +<div class="block">Prints a error line on console.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>string</code> - Error string to display.</dd>
    +<dd><code>cleanFirst</code> - Flag to set if message should be preceded by a console
    +                   clean.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="critical(java.lang.String,boolean)">
    +<h3>critical</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">critical</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</span></div>
    +<div class="block">Prints a critical error line on console.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>string</code> - Critical error string to display.</dd>
    +<dd><code>cleanFirst</code> - Flag to set if message should be preceded by a console
    +                   clean.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="clean()">
    +<h3>clean</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">clean</span>()</div>
    +<div class="block">Helper method to call to clean the console.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getString(it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel,java.lang.String)">
    +<h3>getString</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getString</span><wbr><span class="parameters">(<a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a>&nbsp;level,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string)</span></div>
    +<div class="block">Helper method used by tests to retrieve the string to be printed
    + before actually printing it.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>level</code> - <a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers"><code>OutputWrapper.OutputLevel</code></a> of the message.</dd>
    +<dd><code>string</code> - The string of the message to display.</dd>
    +<dt>Returns:</dt>
    +<dd>The formatted string ready to be printed.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="printString(it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel,java.lang.String,boolean)">
    +<h3>printString</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">printString</span><wbr><span class="parameters">(<a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a>&nbsp;level,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;string,
    + boolean&nbsp;cleanFirst)</span></div>
    +<div class="block">Public method to print a string. Used from CLI.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>level</code> - <a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers"><code>OutputWrapper.OutputLevel</code></a> of the message.</dd>
    +<dd><code>string</code> - The string of the message to display.</dd>
    +<dd><code>cleanFirst</code> - Flag that resets the console before print if true.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setDebug(boolean)">
    +<h3>setDebug</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setDebug</span><wbr><span class="parameters">(boolean&nbsp;toSet)</span></div>
    +<div class="block">Setter for the debug flag.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>toSet</code> - Debug flag.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper.html
    new file mode 100644
    index 00000000..e911ff18
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper.html
    @@ -0,0 +1,185 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>PrivatePatternsHelper</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.helpers, class: PrivatePatternsHelper">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></div>
    +<h1 title="Class PrivatePatternsHelper" class="title">Class PrivatePatternsHelper</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.client.userinterface.helpers.PrivatePatternsHelper</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">PrivatePatternsHelper</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Map containing the private bookshelf patterns associated with an index.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">PrivatePatternsHelper</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../../../server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getBookshelf(java.lang.Integer)" class="member-name-link">getBookshelf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;idx)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Public function used to retrieve a bookshelf from its
    + private card.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>PrivatePatternsHelper</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PrivatePatternsHelper</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getBookshelf(java.lang.Integer)">
    +<h3>getBookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../../../server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></span>&nbsp;<span class="element-name">getBookshelf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;idx)</span></div>
    +<div class="block">Public function used to retrieve a bookshelf from its
    + private card.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>idx</code> - index of bookshelf.</dd>
    +<dt>Returns:</dt>
    +<dd>relative bookshelf.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/package-summary.html
    new file mode 100644
    index 00000000..6351e9d1
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/package-summary.html
    @@ -0,0 +1,129 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.userinterface.helpers</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface.helpers">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.client.userinterface.helpers" class="title">Package it.polimi.is23am10.client.userinterface.helpers</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.client.userinterface.helpers</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.client.userinterface</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../guifactory/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel">
    +<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ANSICodes.html" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="CLIStrings.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">An helper class containing all the strings to display
    + to the user through UserInterface.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CommandsBuilder.html" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Game mode string constants.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">An helper class with all the methods needed to properly print
    + CLI messages for client.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab3"><a href="OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab3">
    +<div class="block">Enum containing the output types.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="PrivatePatternsHelper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">PrivatePatternsHelper</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Map containing the private bookshelf patterns associated with an index.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/package-tree.html
    new file mode 100644
    index 00000000..051893a8
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/helpers/package-tree.html
    @@ -0,0 +1,90 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.userinterface.helpers Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.client.userinterface.helpers">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.client.userinterface.helpers</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="ANSICodes.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="CLIStrings.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="CommandsBuilder.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="OutputWrapper.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="PrivatePatternsHelper.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">PrivatePatternsHelper</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="OutputWrapper.OutputLevel.html" class="type-name-link" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/package-summary.html
    new file mode 100644
    index 00000000..f9211219
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/package-summary.html
    @@ -0,0 +1,123 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.userinterface</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.client.userinterface">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.client.userinterface" class="title">Package it.polimi.is23am10.client.userinterface</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.client.userinterface</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.client</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="guifactory/package-summary.html">it.polimi.is23am10.client.userinterface.guifactory</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../exceptions/package-summary.html">it.polimi.is23am10.client.exceptions</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="../interfaces/package-summary.html">it.polimi.is23am10.client.interfaces</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab1" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab1', 2)" class="table-tab">Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel">
    +<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">A client interface using command line as I/O.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">A client interface using a graphic UI as I/O.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">The user interface.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/client/userinterface/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/package-tree.html
    new file mode 100644
    index 00000000..e09b0d5c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/client/userinterface/package-tree.html
    @@ -0,0 +1,83 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.client.userinterface Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.client.userinterface">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.client.userinterface</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">javafx.application.Application
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.userinterface.<a href="GraphicUserInterface.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>, it.polimi.is23am10.client.userinterface.<a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a>)</li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.<a href="CommandLineInterface.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>, it.polimi.is23am10.client.userinterface.<a href="UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.userinterface.<a href="UserInterface.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/package-summary.html
    new file mode 100644
    index 00000000..1220822c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/package-summary.html
    @@ -0,0 +1,109 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../script.js"></script>
    +<script type="text/javascript" src="../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10" class="title">Package it.polimi.is23am10</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="client/package-summary.html">it.polimi.is23am10.client</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="server/package-summary.html">it.polimi.is23am10.server</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="utils/package-summary.html">it.polimi.is23am10.utils</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="App.html" title="class in it.polimi.is23am10">App</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The entrypoint for the app.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/package-tree.html
    new file mode 100644
    index 00000000..fd838700
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/package-tree.html
    @@ -0,0 +1,72 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10 Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../script.js"></script>
    +<script type="text/javascript" src="../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.<a href="App.html" class="type-name-link" title="class in it.polimi.is23am10">App</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/Server.ServerStatus.html b/deliverables/javadoc/it/polimi/is23am10/server/Server.ServerStatus.html
    new file mode 100644
    index 00000000..685b465f
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/Server.ServerStatus.html
    @@ -0,0 +1,237 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Server.ServerStatus</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server, class: Server, enum: ServerStatus">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#enum-constant-summary">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#enum-constant-detail">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server</a></div>
    +<h1 title="Enum Class Server.ServerStatus" class="title">Enum Class Server.ServerStatus</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a>&gt;
    +<div class="inheritance">it.polimi.is23am10.server.Server.ServerStatus</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><code><a href="Server.html" title="class in it.polimi.is23am10.server">Server</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">Server.ServerStatus</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a>&gt;</span></div>
    +<div class="block">The serverSocket status.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#STARTED" class="member-name-link">STARTED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#STOPPED" class="member-name-link">STOPPED</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="STARTED">
    +<h3>STARTED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></span>&nbsp;<span class="element-name">STARTED</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="STOPPED">
    +<h3>STOPPED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></span>&nbsp;<span class="element-name">STOPPED</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/Server.html b/deliverables/javadoc/it/polimi/is23am10/server/Server.html
    new file mode 100644
    index 00000000..e177975d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/Server.html
    @@ -0,0 +1,287 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Server</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server, class: Server">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server</a></div>
    +<h1 title="Class Server" class="title">Class Server</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.Server</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Server</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The Server entry point class definition.
    + This has only static methods and this class should not be instantiated.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="Server.ServerStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The serverSocket status.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.net.ServerSocket,java.util.concurrent.ExecutorService,it.polimi.is23am10.server.controller.interfaces.IServerControllerAction,java.rmi.registry.Registry)" class="member-name-link">Server</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/ServerSocket.html" title="class or interface in java.net" class="external-link">ServerSocket</a>&nbsp;serverSocket,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/concurrent/ExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ExecutorService</a>&nbsp;executorService,
    + <a href="controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>&nbsp;rmiServerControllerActionServer,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/registry/Registry.html" title="class or interface in java.rmi.registry" class="external-link">Registry</a>&nbsp;rmiRegistry)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getSocketClientsConnected()" class="member-name-link">getSocketClientsConnected</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Get the current number of clients connected to the socket.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setSocketClientConnected(int)" class="member-name-link">setSocketClientConnected</a><wbr>(int&nbsp;scc)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Set the current number of clients connected to the socket.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#start(it.polimi.is23am10.utils.config.AppConfigContext)" class="member-name-link">start</a><wbr>(<a href="../utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a>&nbsp;ctx)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Server entry point.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#status()" class="member-name-link">status</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Check the current serverSocket status.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#stop()" class="member-name-link">stop</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Stop the serverSocket.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.net.ServerSocket,java.util.concurrent.ExecutorService,it.polimi.is23am10.server.controller.interfaces.IServerControllerAction,java.rmi.registry.Registry)">
    +<h3>Server</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Server</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/ServerSocket.html" title="class or interface in java.net" class="external-link">ServerSocket</a>&nbsp;serverSocket,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/concurrent/ExecutorService.html" title="class or interface in java.util.concurrent" class="external-link">ExecutorService</a>&nbsp;executorService,
    + <a href="controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>&nbsp;rmiServerControllerActionServer,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/registry/Registry.html" title="class or interface in java.rmi.registry" class="external-link">Registry</a>&nbsp;rmiRegistry)</span>
    +       throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>serverSocket</code> - The server socket reference of a newly
    +                                        connected client.</dd>
    +<dd><code>executorService</code> - The built thread executor service.</dd>
    +<dd><code>rmiServerControllerActionServer</code> - An built instance of the implementing
    +                                        class.</dd>
    +<dd><code>rmiRegistry</code> - A built instance of the RMI registry.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - On rebind failure.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="start(it.polimi.is23am10.utils.config.AppConfigContext)">
    +<h3>start</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">start</span><wbr><span class="parameters">(<a href="../utils/config/AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a>&nbsp;ctx)</span></div>
    +<div class="block">Server entry point.
    + A new <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/ServerSocket.html" title="class or interface in java.net" class="external-link"><code>ServerSocket</code></a> instance is spawned and in a
    + infinity loop listens for clients connections.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>ctx</code> - An instance of the server configuration.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="stop()">
    +<h3>stop</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">stop</span>()
    +          throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></span></div>
    +<div class="block">Stop the serverSocket.</div>
    +<dl class="notes">
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/IOException.html" title="class or interface in java.io" class="external-link">IOException</a></code> - On socket closure failing.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="status()">
    +<h3>status</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></span>&nbsp;<span class="element-name">status</span>()</div>
    +<div class="block">Check the current serverSocket status.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The an enum <a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server"><code>Server.ServerStatus</code></a> stating the current status.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getSocketClientsConnected()">
    +<h3>getSocketClientsConnected</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getSocketClientsConnected</span>()</div>
    +<div class="block">Get the current number of clients connected to the socket.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The connect clients number.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setSocketClientConnected(int)">
    +<h3>setSocketClientConnected</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setSocketClientConnected</span><wbr><span class="parameters">(int&nbsp;scc)</span></div>
    +<div class="block">Set the current number of clients connected to the socket.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>scc</code> - The connect clients number.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/command/AbstractCommand.Opcode.html b/deliverables/javadoc/it/polimi/is23am10/server/command/AbstractCommand.Opcode.html
    new file mode 100644
    index 00000000..4938a617
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/command/AbstractCommand.Opcode.html
    @@ -0,0 +1,298 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AbstractCommand.Opcode</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.command, class: AbstractCommand, enum: Opcode">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#enum-constant-summary">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#enum-constant-detail">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<h1 title="Enum Class AbstractCommand.Opcode" class="title">Enum Class AbstractCommand.Opcode</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a>&gt;
    +<div class="inheritance">it.polimi.is23am10.server.command.AbstractCommand.Opcode</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><code><a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">AbstractCommand.Opcode</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a>&gt;</span></div>
    +<div class="block">Opcodes to communicate the action taken by a player.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#ADD_PLAYER" class="member-name-link">ADD_PLAYER</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Add a new player to existing game command.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="#GAME_TIMER" class="member-name-link">GAME_TIMER</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Game timer snooze command.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="#GET_GAMES" class="member-name-link">GET_GAMES</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Retrieve existing games to join command.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="#MOVE_TILES" class="member-name-link">MOVE_TILES</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Move tiles from board to user's bookshelf command.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="#NULL" class="member-name-link">NULL</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Null command.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="#SEND_CHAT_MESSAGE" class="member-name-link">SEND_CHAT_MESSAGE</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Send chat message command</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="#START" class="member-name-link">START</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Start a new game command.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="START">
    +<h3>START</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></span>&nbsp;<span class="element-name">START</span></div>
    +<div class="block">Start a new game command.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ADD_PLAYER">
    +<h3>ADD_PLAYER</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></span>&nbsp;<span class="element-name">ADD_PLAYER</span></div>
    +<div class="block">Add a new player to existing game command.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MOVE_TILES">
    +<h3>MOVE_TILES</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></span>&nbsp;<span class="element-name">MOVE_TILES</span></div>
    +<div class="block">Move tiles from board to user's bookshelf command.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GET_GAMES">
    +<h3>GET_GAMES</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></span>&nbsp;<span class="element-name">GET_GAMES</span></div>
    +<div class="block">Retrieve existing games to join command.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="SEND_CHAT_MESSAGE">
    +<h3>SEND_CHAT_MESSAGE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></span>&nbsp;<span class="element-name">SEND_CHAT_MESSAGE</span></div>
    +<div class="block">Send chat message command</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GAME_TIMER">
    +<h3>GAME_TIMER</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></span>&nbsp;<span class="element-name">GAME_TIMER</span></div>
    +<div class="block">Game timer snooze command.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="NULL">
    +<h3>NULL</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></span>&nbsp;<span class="element-name">NULL</span></div>
    +<div class="block">Null command.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/command/AbstractCommand.html b/deliverables/javadoc/it/polimi/is23am10/server/command/AbstractCommand.html
    new file mode 100644
    index 00000000..6e60f182
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/command/AbstractCommand.html
    @@ -0,0 +1,188 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AbstractCommand</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.command, class: AbstractCommand">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<h1 title="Class AbstractCommand" class="title">Class AbstractCommand</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.command.AbstractCommand</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="AddPlayerCommand.html" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a></code>, <code><a href="GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a></code>, <code><a href="MoveTilesCommand.html" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></code>, <code><a href="SendChatMessageCommand.html" title="class in it.polimi.is23am10.server.command">SendChatMessageCommand</a></code>, <code><a href="SnoozeGameTimerCommand.html" title="class in it.polimi.is23am10.server.command">SnoozeGameTimerCommand</a></code>, <code><a href="StartGameCommand.html" title="class in it.polimi.is23am10.server.command">StartGameCommand</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">AbstractCommand</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">The abstract command class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.server.command.AbstractCommand">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="AbstractCommand.Opcode.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Opcodes to communicate the action taken by a player.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getOpcode()" class="member-name-link">getOpcode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Opcode getter.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getOpcode()">
    +<h3>getOpcode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></span>&nbsp;<span class="element-name">getOpcode</span>()</div>
    +<div class="block">Opcode getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The current command Opcode.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/command/AddPlayerCommand.html b/deliverables/javadoc/it/polimi/is23am10/server/command/AddPlayerCommand.html
    new file mode 100644
    index 00000000..b864ea04
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/command/AddPlayerCommand.html
    @@ -0,0 +1,259 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AddPlayerCommand</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.command, class: AddPlayerCommand">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<h1 title="Class AddPlayerCommand" class="title">Class AddPlayerCommand</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.AbstractCommand</a>
    +<div class="inheritance">it.polimi.is23am10.server.command.AddPlayerCommand</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">AddPlayerCommand</span>
    +<span class="extends-implements">extends <a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></span></div>
    +<div class="block">The add new player to game command class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.server.command.AddPlayerCommand">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h2>
    +<code><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.util.UUID)" class="member-name-link">AddPlayerCommand</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getGameId()" class="member-name-link">getGameId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Game id getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerName()" class="member-name-link">getPlayerName</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starting player name getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Methods inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h3>
    +<code><a href="AbstractCommand.html#getOpcode()">getOpcode</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.util.UUID)">
    +<h3>AddPlayerCommand</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AddPlayerCommand</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId)</span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerName</code> - The player name to add.</dd>
    +<dd><code>gameId</code> - The game instance id.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getPlayerName()">
    +<h3>getPlayerName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getPlayerName</span>()</div>
    +<div class="block">Starting player name getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The player name.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getGameId()">
    +<h3>getGameId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></span>&nbsp;<span class="element-name">getGameId</span>()</div>
    +<div class="block">Game id getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The game id reference.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/command/GetAvailableGamesCommand.html b/deliverables/javadoc/it/polimi/is23am10/server/command/GetAvailableGamesCommand.html
    new file mode 100644
    index 00000000..aee6e0b3
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/command/GetAvailableGamesCommand.html
    @@ -0,0 +1,207 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>GetAvailableGamesCommand</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.command, class: GetAvailableGamesCommand">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<h1 title="Class GetAvailableGamesCommand" class="title">Class GetAvailableGamesCommand</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.AbstractCommand</a>
    +<div class="inheritance">it.polimi.is23am10.server.command.GetAvailableGamesCommand</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">GetAvailableGamesCommand</span>
    +<span class="extends-implements">extends <a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></span></div>
    +<div class="block">The command used by player to get the list of the games they can join.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.server.command.GetAvailableGamesCommand">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h2>
    +<code><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">GetAvailableGamesCommand</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Methods inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h3>
    +<code><a href="AbstractCommand.html#getOpcode()">getOpcode</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>GetAvailableGamesCommand</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">GetAvailableGamesCommand</span>()</div>
    +<div class="block">Constructor.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/command/MoveTilesCommand.html b/deliverables/javadoc/it/polimi/is23am10/server/command/MoveTilesCommand.html
    new file mode 100644
    index 00000000..815ee59a
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/command/MoveTilesCommand.html
    @@ -0,0 +1,266 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>MoveTilesCommand</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.command, class: MoveTilesCommand">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<h1 title="Class MoveTilesCommand" class="title">Class MoveTilesCommand</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.AbstractCommand</a>
    +<div class="inheritance">it.polimi.is23am10.server.command.MoveTilesCommand</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MoveTilesCommand</span>
    +<span class="extends-implements">extends <a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></span></div>
    +<div class="block">The move tiles command class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.server.command.MoveTilesCommand">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h2>
    +<code><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.util.UUID,java.util.Map)" class="member-name-link">MoveTilesCommand</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;movingPlayer,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&nbsp;moves)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getGameId()" class="member-name-link">getGameId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">GameId getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMoves()" class="member-name-link">getMoves</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Moves map getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMovingPlayer()" class="member-name-link">getMovingPlayer</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Moving player getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Methods inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h3>
    +<code><a href="AbstractCommand.html#getOpcode()">getOpcode</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.util.UUID,java.util.Map)">
    +<h3>MoveTilesCommand</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MoveTilesCommand</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;movingPlayer,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&nbsp;moves)</span></div>
    +<div class="block">Public constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>movingPlayer</code> - The player requesting the move action.</dd>
    +<dd><code>gameId</code> - The game id reference.</dd>
    +<dd><code>moves</code> - The map of moves. See javadoc above.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getMovingPlayer()">
    +<h3>getMovingPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getMovingPlayer</span>()</div>
    +<div class="block">Moving player getter.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getGameId()">
    +<h3>getGameId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></span>&nbsp;<span class="element-name">getGameId</span>()</div>
    +<div class="block">GameId getter.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMoves()">
    +<h3>getMoves</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;</span>&nbsp;<span class="element-name">getMoves</span>()</div>
    +<div class="block">Moves map getter.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/command/SendChatMessageCommand.html b/deliverables/javadoc/it/polimi/is23am10/server/command/SendChatMessageCommand.html
    new file mode 100644
    index 00000000..d2fca20c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/command/SendChatMessageCommand.html
    @@ -0,0 +1,223 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>SendChatMessageCommand</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.command, class: SendChatMessageCommand">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<h1 title="Class SendChatMessageCommand" class="title">Class SendChatMessageCommand</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.AbstractCommand</a>
    +<div class="inheritance">it.polimi.is23am10.server.command.SendChatMessageCommand</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SendChatMessageCommand</span>
    +<span class="extends-implements">extends <a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></span></div>
    +<div class="block">The command used by player to send a chat message.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.server.command.SendChatMessageCommand">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h2>
    +<code><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.network.messages.ChatMessage)" class="member-name-link">SendChatMessageCommand</a><wbr>(<a href="../network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a>&nbsp;m)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getChatMessage()" class="member-name-link">getChatMessage</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Chat message getter.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Methods inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h3>
    +<code><a href="AbstractCommand.html#getOpcode()">getOpcode</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.network.messages.ChatMessage)">
    +<h3>SendChatMessageCommand</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SendChatMessageCommand</span><wbr><span class="parameters">(<a href="../network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a>&nbsp;m)</span></div>
    +<div class="block">Constructor.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getChatMessage()">
    +<h3>getChatMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></span>&nbsp;<span class="element-name">getChatMessage</span>()</div>
    +<div class="block">Chat message getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>chat message.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html b/deliverables/javadoc/it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html
    new file mode 100644
    index 00000000..bbdbd638
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html
    @@ -0,0 +1,240 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>SnoozeGameTimerCommand</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.command, class: SnoozeGameTimerCommand">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<h1 title="Class SnoozeGameTimerCommand" class="title">Class SnoozeGameTimerCommand</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.AbstractCommand</a>
    +<div class="inheritance">it.polimi.is23am10.server.command.SnoozeGameTimerCommand</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SnoozeGameTimerCommand</span>
    +<span class="extends-implements">extends <a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></span></div>
    +<div class="block">The snooze game timer command class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.server.command.SnoozeGameTimerCommand">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h2>
    +<code><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">SnoozeGameTimerCommand</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerName()" class="member-name-link">getPlayerName</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Player name getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Methods inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h3>
    +<code><a href="AbstractCommand.html#getOpcode()">getOpcode</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>SnoozeGameTimerCommand</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SnoozeGameTimerCommand</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName)</span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerName</code> - The player name.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getPlayerName()">
    +<h3>getPlayerName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getPlayerName</span>()</div>
    +<div class="block">Player name getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The player name.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/command/StartGameCommand.html b/deliverables/javadoc/it/polimi/is23am10/server/command/StartGameCommand.html
    new file mode 100644
    index 00000000..11846361
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/command/StartGameCommand.html
    @@ -0,0 +1,259 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>StartGameCommand</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.command, class: StartGameCommand">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<h1 title="Class StartGameCommand" class="title">Class StartGameCommand</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.AbstractCommand</a>
    +<div class="inheritance">it.polimi.is23am10.server.command.StartGameCommand</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">StartGameCommand</span>
    +<span class="extends-implements">extends <a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></span></div>
    +<div class="block">The start game command class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.server.command.StartGameCommand">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h2>
    +<code><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.Integer)" class="member-name-link">StartGameCommand</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;startingPlayerName,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxPlayers)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMaxPlayers()" class="member-name-link">getMaxPlayers</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Max player getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStartingPlayerName()" class="member-name-link">getStartingPlayerName</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Starting player name getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.command.AbstractCommand">Methods inherited from class&nbsp;it.polimi.is23am10.server.command.<a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></h3>
    +<code><a href="AbstractCommand.html#getOpcode()">getOpcode</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.Integer)">
    +<h3>StartGameCommand</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">StartGameCommand</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;startingPlayerName,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxPlayers)</span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>startingPlayerName</code> - The chosen player name who has started a game request.</dd>
    +<dd><code>maxPlayers</code> - The chosen max player value for the game request.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getStartingPlayerName()">
    +<h3>getStartingPlayerName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getStartingPlayerName</span>()</div>
    +<div class="block">Starting player name getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The player name.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMaxPlayers()">
    +<h3>getMaxPlayers</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getMaxPlayers</span>()</div>
    +<div class="block">Max player getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The max player value allowed for the requested game.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/command/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/command/package-summary.html
    new file mode 100644
    index 00000000..1ac017b4
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/command/package-summary.html
    @@ -0,0 +1,137 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.command</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.command">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.command" class="title">Package it.polimi.is23am10.server.command</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.command</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../controller/package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel">
    +<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The abstract command class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">Opcodes to communicate the action taken by a player.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AddPlayerCommand.html" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The add new player to game command class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">The command used by player to get the list of the games they can join.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="MoveTilesCommand.html" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The move tiles command class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SendChatMessageCommand.html" title="class in it.polimi.is23am10.server.command">SendChatMessageCommand</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">The command used by player to send a chat message.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SnoozeGameTimerCommand.html" title="class in it.polimi.is23am10.server.command">SnoozeGameTimerCommand</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The snooze game timer command class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="StartGameCommand.html" title="class in it.polimi.is23am10.server.command">StartGameCommand</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">The start game command class definition.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/command/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/command/package-tree.html
    new file mode 100644
    index 00000000..e67c31f5
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/command/package-tree.html
    @@ -0,0 +1,95 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.command Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.command">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.command</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="AbstractCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">AbstractCommand</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="AddPlayerCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a></li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="GetAvailableGamesCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a></li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="MoveTilesCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="SendChatMessageCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">SendChatMessageCommand</a></li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="SnoozeGameTimerCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">SnoozeGameTimerCommand</a></li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="StartGameCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">StartGameCommand</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="AbstractCommand.Opcode.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/ClientConnectionChecker.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/ClientConnectionChecker.html
    new file mode 100644
    index 00000000..79edaaaa
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/ClientConnectionChecker.html
    @@ -0,0 +1,190 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ClientConnectionChecker</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller, class: ClientConnectionChecker">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<h1 title="Class ClientConnectionChecker" class="title">Class ClientConnectionChecker</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.controller.ClientConnectionChecker</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ClientConnectionChecker</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></span></div>
    +<div class="block">The server client connection checker class definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(long)" class="member-name-link">ClientConnectionChecker</a><wbr>(long&nbsp;maxTurnInactivityTimeMs)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#run()" class="member-name-link">run</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(long)">
    +<h3>ClientConnectionChecker</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ClientConnectionChecker</span><wbr><span class="parameters">(long&nbsp;maxTurnInactivityTimeMs)</span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>maxTurnInactivityTimeMs</code> - the max configured game turn inactivity time in ms.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="run()">
    +<h3>run</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">run</span>()</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html#run()" title="class or interface in java.lang" class="external-link">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerAction.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerAction.html
    new file mode 100644
    index 00000000..9cd0505a
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerAction.html
    @@ -0,0 +1,222 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ServerControllerAction</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller, class: ServerControllerAction">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<h1 title="Class ServerControllerAction" class="title">Class ServerControllerAction</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.controller.ServerControllerAction</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ServerControllerAction</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></span></div>
    +<div class="block">The server controller action class definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="inherited-list">
    +<h3 id="fields-inherited-from-class-it.polimi.is23am10.server.controller.interfaces.IServerControllerAction">Fields inherited from interface&nbsp;it.polimi.is23am10.server.controller.interfaces.<a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></h3>
    +<code><a href="interfaces/IServerControllerAction.html#addPlayerConsumer">addPlayerConsumer</a>, <a href="interfaces/IServerControllerAction.html#getAvailableGamesConsumer">getAvailableGamesConsumer</a>, <a href="interfaces/IServerControllerAction.html#getAvailableGamesConsumerRmi">getAvailableGamesConsumerRmi</a>, <a href="interfaces/IServerControllerAction.html#moveTilesConsumer">moveTilesConsumer</a>, <a href="interfaces/IServerControllerAction.html#sendChatMessageConsumer">sendChatMessageConsumer</a>, <a href="interfaces/IServerControllerAction.html#snoozeTimerConsumer">snoozeTimerConsumer</a>, <a href="interfaces/IServerControllerAction.html#startConsumer">startConsumer</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ServerControllerAction</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#execute(it.polimi.is23am10.server.command.GetAvailableGamesCommand)" class="member-name-link">execute</a><wbr>(<a href="../command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a>&nbsp;command)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Execute the client <a href="../command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command"><code>GetAvailableGamesCommand</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#execute(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,it.polimi.is23am10.server.command.AbstractCommand)" class="member-name-link">execute</a><wbr>(<a href="../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;connector,
    + <a href="../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&nbsp;command)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Execute the client request.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ServerControllerAction</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ServerControllerAction</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="execute(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,it.polimi.is23am10.server.command.AbstractCommand)">
    +<h3>execute</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">execute</span><wbr><span class="parameters">(<a href="../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;connector,
    + <a href="../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&nbsp;command)</span></div>
    +<div class="block">Execute the client request.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="interfaces/IServerControllerAction.html#execute(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,it.polimi.is23am10.server.command.AbstractCommand)">execute</a></code>&nbsp;in interface&nbsp;<code><a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>connector</code> - The connector to a player.</dd>
    +<dd><code>command</code> - The command to be executed.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="execute(it.polimi.is23am10.server.command.GetAvailableGamesCommand)">
    +<h3>execute</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></span>&nbsp;<span class="element-name">execute</span><wbr><span class="parameters">(<a href="../command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a>&nbsp;command)</span></div>
    +<div class="block">Execute the client <a href="../command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command"><code>GetAvailableGamesCommand</code></a>.
    + This is intended to be used under the RMI connection protocol when the
    + client's playerConnector has no power to read the msg queue.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="interfaces/IServerControllerAction.html#execute(it.polimi.is23am10.server.command.GetAvailableGamesCommand)">execute</a></code>&nbsp;in interface&nbsp;<code><a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>command</code> - The command to be executed.</dd>
    +<dt>Returns:</dt>
    +<dd>an <a href="../network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages"><code>AvailableGamesMessage</code></a> response.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html
    new file mode 100644
    index 00000000..61a22ef7
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html
    @@ -0,0 +1,242 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ServerControllerRmiBindings</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller, class: ServerControllerRmiBindings">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<h1 title="Class ServerControllerRmiBindings" class="title">Class ServerControllerRmiBindings</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.controller.ServerControllerRmiBindings</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ServerControllerRmiBindings</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/registry/Registry.html" title="class or interface in java.rmi.registry" class="external-link">Registry</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getRmiRegistry()" class="member-name-link">getRmiRegistry</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Retrieve the Server rmi registry.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getServerControllerActionRmiStub()" class="member-name-link">getServerControllerActionRmiStub</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Retrieve the rmi stub for <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#rebindServerControllerAction(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)" class="member-name-link">rebindServerControllerAction</a><wbr>(<a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>&nbsp;sca)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Rebind a <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setRmiRegistry(java.rmi.registry.Registry)" class="member-name-link">setRmiRegistry</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/registry/Registry.html" title="class or interface in java.rmi.registry" class="external-link">Registry</a>&nbsp;r)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Set the rmi registry.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setServerControllerActionServer(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)" class="member-name-link">setServerControllerActionServer</a><wbr>(<a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>&nbsp;s)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Set the rmi server for <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setServerControllerActionStub(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)" class="member-name-link">setServerControllerActionStub</a><wbr>(<a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>&nbsp;s)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Set the rmi stub for <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getRmiRegistry()">
    +<h3>getRmiRegistry</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/registry/Registry.html" title="class or interface in java.rmi.registry" class="external-link">Registry</a></span>&nbsp;<span class="element-name">getRmiRegistry</span>()</div>
    +<div class="block">Retrieve the Server rmi registry.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The registry.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setRmiRegistry(java.rmi.registry.Registry)">
    +<h3>setRmiRegistry</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setRmiRegistry</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/registry/Registry.html" title="class or interface in java.rmi.registry" class="external-link">Registry</a>&nbsp;r)</span></div>
    +<div class="block">Set the rmi registry.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>r</code> - The registry to be set.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getServerControllerActionRmiStub()">
    +<h3>getServerControllerActionRmiStub</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></span>&nbsp;<span class="element-name">getServerControllerActionRmiStub</span>()</div>
    +<div class="block">Retrieve the rmi stub for <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The stub.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setServerControllerActionServer(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)">
    +<h3>setServerControllerActionServer</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setServerControllerActionServer</span><wbr><span class="parameters">(<a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>&nbsp;s)</span>
    +                                            throws <span class="exceptions"><a href="exceptions/NullRmiServerException.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiServerException</a></span></div>
    +<div class="block">Set the rmi server for <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>s</code> - The rmi server.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullRmiServerException.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiServerException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setServerControllerActionStub(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)">
    +<h3>setServerControllerActionStub</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setServerControllerActionStub</span><wbr><span class="parameters">(<a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>&nbsp;s)</span>
    +                                          throws <span class="exceptions"><a href="exceptions/NullRmiServerException.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiServerException</a></span></div>
    +<div class="block">Set the rmi stub for <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>s</code> - The rmi stub.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullRmiServerException.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiServerException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="rebindServerControllerAction(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)">
    +<h3>rebindServerControllerAction</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">rebindServerControllerAction</span><wbr><span class="parameters">(<a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>&nbsp;sca)</span>
    +                                         throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Rebind a <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a>.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>sca</code> - The <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller"><code>ServerControllerAction</code></a> instance.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerSocket.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerSocket.html
    new file mode 100644
    index 00000000..31270509
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerSocket.html
    @@ -0,0 +1,194 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ServerControllerSocket</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller, class: ServerControllerSocket">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<h1 title="Class ServerControllerSocket" class="title">Class ServerControllerSocket</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.controller.ServerControllerSocket</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ServerControllerSocket</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></span></div>
    +<div class="block">The server controller class definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket,it.polimi.is23am10.server.controller.ServerControllerAction)" class="member-name-link">ServerControllerSocket</a><wbr>(<a href="../network/playerconnector/PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a>&nbsp;playerConnector,
    + <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a>&nbsp;serverControllerAction)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#run()" class="member-name-link">run</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket,it.polimi.is23am10.server.controller.ServerControllerAction)">
    +<h3>ServerControllerSocket</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ServerControllerSocket</span><wbr><span class="parameters">(<a href="../network/playerconnector/PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a>&nbsp;playerConnector,
    + <a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a>&nbsp;serverControllerAction)</span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerConnector</code> - The already build player connector instance
    +                               with the low level socket instance.</dd>
    +<dd><code>serverControllerAction</code> - The server action taker instance.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="run()">
    +<h3>run</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">run</span>()</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html#run()" title="class or interface in java.lang" class="external-link">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerState.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerState.html
    new file mode 100644
    index 00000000..f741a48d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerControllerState.html
    @@ -0,0 +1,305 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ServerControllerState</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller, class: ServerControllerState">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<h1 title="Class ServerControllerState" class="title">Class ServerControllerState</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.controller.ServerControllerState</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ServerControllerState</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The server controller state class definition.
    + This should be a singleton-like instance owning
    + the server current state.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static final void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#addGameHandler(it.polimi.is23am10.server.network.gamehandler.GameHandler)" class="member-name-link">addGameHandler</a><wbr>(<a href="../network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a>&nbsp;handler)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Add a new game handler to the pool.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static final void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#addPlayerConnector(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)" class="member-name-link">addPlayerConnector</a><wbr>(<a href="../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;playerConnector)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Add player link to the pool.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#addRmiProxyConnector(java.util.UUID,it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)" class="member-name-link">addRmiProxyConnector</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;id,
    + <a href="../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;pc)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Add a new rmi connector reference.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getGameHandlerByUUID(java.util.UUID)" class="member-name-link">getGameHandlerByUUID</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Finds a game handler in the game pool by its game id.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="../network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getGamePools()" class="member-name-link">getGamePools</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Game pool getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getPlayersPool()" class="member-name-link">getPlayersPool</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Player pool getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getRmiProxyConnector(java.util.UUID)" class="member-name-link">getRmiProxyConnector</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;id)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Retrieve the rmi connector proxy associated to a player id.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static final void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#removeGameHandlerById(java.util.UUID)" class="member-name-link">removeGameHandlerById</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;id)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Remove a game handler from the pool.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static final void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#removePlayerByGame(java.util.UUID,it.polimi.is23am10.server.model.player.Player)" class="member-name-link">removePlayerByGame</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId,
    + <a href="../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Remove a player connector from the pool.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="addGameHandler(it.polimi.is23am10.server.network.gamehandler.GameHandler)">
    +<h3>addGameHandler</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addGameHandler</span><wbr><span class="parameters">(<a href="../network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a>&nbsp;handler)</span>
    +                                 throws <span class="exceptions"><a href="exceptions/NullGameHandlerInstance.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></span></div>
    +<div class="block">Add a new game handler to the pool.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>handler</code> - The game handler instance to add.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullGameHandlerInstance.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></code> - If the game handler is null. On null game handler.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="removeGameHandlerById(java.util.UUID)">
    +<h3>removeGameHandlerById</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">removeGameHandlerById</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;id)</span></div>
    +<div class="block">Remove a game handler from the pool.
    + This performs all the clients disconnections.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>id</code> - The game id to remove.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="addPlayerConnector(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)">
    +<h3>addPlayerConnector</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addPlayerConnector</span><wbr><span class="parameters">(<a href="../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;playerConnector)</span>
    +                                     throws <span class="exceptions"><a href="../network/gamehandler/exceptions/NullPlayerConnector.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">NullPlayerConnector</a>,
    +<a href="../model/factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></span></div>
    +<div class="block">Add player link to the pool.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerConnector</code> - The connector object to be linked with a player.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../network/gamehandler/exceptions/NullPlayerConnector.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">NullPlayerConnector</a></code> - On null Player connector.</dd>
    +<dd><code><a href="../model/factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></code> - On duplicate player name.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="removePlayerByGame(java.util.UUID,it.polimi.is23am10.server.model.player.Player)">
    +<h3>removePlayerByGame</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">removePlayerByGame</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId,
    + <a href="../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</span></div>
    +<div class="block">Remove a player connector from the pool.
    + This closes the socket connection.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>gameId</code> - The game id reference.</dd>
    +<dd><code>player</code> - The player to remove.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getGameHandlerByUUID(java.util.UUID)">
    +<h3>getGameHandlerByUUID</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></span>&nbsp;<span class="element-name">getGameHandlerByUUID</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId)</span>
    +                                        throws <span class="exceptions"><a href="exceptions/NullGameHandlerInstance.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></span></div>
    +<div class="block">Finds a game handler in the game pool by its game id.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>gameId</code> - the UUID to search for</dd>
    +<dt>Returns:</dt>
    +<dd>the GameHandler, if found</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullGameHandlerInstance.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></code> - If the game handler is null. If game handler with that id is not found.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayersPool()">
    +<h3>getPlayersPool</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&gt;</span>&nbsp;<span class="element-name">getPlayersPool</span>()</div>
    +<div class="block">Player pool getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The actively connected players.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getGamePools()">
    +<h3>getGamePools</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="../network/gamehandler/GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a>&gt;</span>&nbsp;<span class="element-name">getGamePools</span>()</div>
    +<div class="block">Game pool getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The actively started games instances.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="addRmiProxyConnector(java.util.UUID,it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)">
    +<h3>addRmiProxyConnector</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addRmiProxyConnector</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;id,
    + <a href="../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;pc)</span></div>
    +<div class="block">Add a new rmi connector reference.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>id</code> - The player id.</dd>
    +<dd><code>pc</code> - The proxy connector.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getRmiProxyConnector(java.util.UUID)">
    +<h3>getRmiProxyConnector</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></span>&nbsp;<span class="element-name">getRmiProxyConnector</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;id)</span></div>
    +<div class="block">Retrieve the rmi connector proxy associated to a player id.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The rmi connector proxy.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerDebugPrefixString.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerDebugPrefixString.html
    new file mode 100644
    index 00000000..ea6ac816
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/ServerDebugPrefixString.html
    @@ -0,0 +1,240 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ServerDebugPrefixString</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller, class: ServerDebugPrefixString">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li>Constr</li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<h1 title="Class ServerDebugPrefixString" class="title">Class ServerDebugPrefixString</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.controller.ServerDebugPrefixString</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ServerDebugPrefixString</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The server debug prefixes string interface definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#ADD_PLAYER_COMMAND_PREFIX" class="member-name-link">ADD_PLAYER_COMMAND_PREFIX</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block"><a href="../command/AbstractCommand.Opcode.html#ADD_PLAYER"><code>AbstractCommand.Opcode.ADD_PLAYER</code></a> prefix string.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#MOVE_TILES_COMMAND_PREFIX" class="member-name-link">MOVE_TILES_COMMAND_PREFIX</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block"><a href="../command/AbstractCommand.Opcode.html#MOVE_TILES"><code>AbstractCommand.Opcode.MOVE_TILES</code></a> prefix string.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#SEND_CHAT_MESSAGE_COMMAND_PREFIX" class="member-name-link">SEND_CHAT_MESSAGE_COMMAND_PREFIX</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block"><a href="../command/AbstractCommand.Opcode.html#SEND_CHAT_MESSAGE"><code>AbstractCommand.Opcode.SEND_CHAT_MESSAGE</code></a> prefix string.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#SNOOZE_TIMER_COMMAND_PREFIX" class="member-name-link">SNOOZE_TIMER_COMMAND_PREFIX</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block"><a href="../command/AbstractCommand.Opcode.html#GAME_TIMER"><code>AbstractCommand.Opcode.GAME_TIMER</code></a> prefix string.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#START_COMMAND_PREFIX" class="member-name-link">START_COMMAND_PREFIX</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block"><a href="../command/AbstractCommand.Opcode.html#START"><code>AbstractCommand.Opcode.START</code></a> prefix string.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="START_COMMAND_PREFIX">
    +<h3>START_COMMAND_PREFIX</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">START_COMMAND_PREFIX</span></div>
    +<div class="block"><a href="../command/AbstractCommand.Opcode.html#START"><code>AbstractCommand.Opcode.START</code></a> prefix string.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../constant-values.html#it.polimi.is23am10.server.controller.ServerDebugPrefixString.START_COMMAND_PREFIX">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ADD_PLAYER_COMMAND_PREFIX">
    +<h3>ADD_PLAYER_COMMAND_PREFIX</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ADD_PLAYER_COMMAND_PREFIX</span></div>
    +<div class="block"><a href="../command/AbstractCommand.Opcode.html#ADD_PLAYER"><code>AbstractCommand.Opcode.ADD_PLAYER</code></a> prefix string.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../constant-values.html#it.polimi.is23am10.server.controller.ServerDebugPrefixString.ADD_PLAYER_COMMAND_PREFIX">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MOVE_TILES_COMMAND_PREFIX">
    +<h3>MOVE_TILES_COMMAND_PREFIX</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">MOVE_TILES_COMMAND_PREFIX</span></div>
    +<div class="block"><a href="../command/AbstractCommand.Opcode.html#MOVE_TILES"><code>AbstractCommand.Opcode.MOVE_TILES</code></a> prefix string.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../constant-values.html#it.polimi.is23am10.server.controller.ServerDebugPrefixString.MOVE_TILES_COMMAND_PREFIX">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="SEND_CHAT_MESSAGE_COMMAND_PREFIX">
    +<h3>SEND_CHAT_MESSAGE_COMMAND_PREFIX</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">SEND_CHAT_MESSAGE_COMMAND_PREFIX</span></div>
    +<div class="block"><a href="../command/AbstractCommand.Opcode.html#SEND_CHAT_MESSAGE"><code>AbstractCommand.Opcode.SEND_CHAT_MESSAGE</code></a> prefix string.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../constant-values.html#it.polimi.is23am10.server.controller.ServerDebugPrefixString.SEND_CHAT_MESSAGE_COMMAND_PREFIX">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="SNOOZE_TIMER_COMMAND_PREFIX">
    +<h3>SNOOZE_TIMER_COMMAND_PREFIX</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">SNOOZE_TIMER_COMMAND_PREFIX</span></div>
    +<div class="block"><a href="../command/AbstractCommand.Opcode.html#GAME_TIMER"><code>AbstractCommand.Opcode.GAME_TIMER</code></a> prefix string.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../constant-values.html#it.polimi.is23am10.server.controller.ServerDebugPrefixString.SNOOZE_TIMER_COMMAND_PREFIX">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/CommandSerializationErrorException.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/CommandSerializationErrorException.html
    new file mode 100644
    index 00000000..9862b525
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/CommandSerializationErrorException.html
    @@ -0,0 +1,137 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>CommandSerializationErrorException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller.exceptions, class: CommandSerializationErrorException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></div>
    +<h1 title="Class CommandSerializationErrorException" class="title">Class CommandSerializationErrorException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance">it.polimi.is23am10.server.controller.exceptions.CommandSerializationErrorException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">CommandSerializationErrorException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></span></div>
    +<div class="block">Custom runtime exception to handle <a href="../../command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command"><code>AbstractCommand.Opcode</code></a> deserialization errors.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.controller.exceptions.CommandSerializationErrorException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/NullGameHandlerInstance.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/NullGameHandlerInstance.html
    new file mode 100644
    index 00000000..80a00f11
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/NullGameHandlerInstance.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullGameHandlerInstance</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller.exceptions, class: NullGameHandlerInstance">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></div>
    +<h1 title="Class NullGameHandlerInstance" class="title">Class NullGameHandlerInstance</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullGameHandlerInstance</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle null game handler instances.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NullGameHandlerInstance</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NullGameHandlerInstance</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullGameHandlerInstance</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/NullRmiServerException.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/NullRmiServerException.html
    new file mode 100644
    index 00000000..aa79ad05
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/NullRmiServerException.html
    @@ -0,0 +1,168 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullRmiServerException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller.exceptions, class: NullRmiServerException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></div>
    +<h1 title="Class NullRmiServerException" class="title">Class NullRmiServerException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance">it.polimi.is23am10.server.controller.exceptions.NullRmiServerException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullRmiServerException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></span></div>
    +<div class="block">Custom runtime exception to null RMI servers.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.controller.exceptions.NullRmiServerException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NullRmiServerException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NullRmiServerException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullRmiServerException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/NullRmiStubException.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/NullRmiStubException.html
    new file mode 100644
    index 00000000..bb62e803
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/NullRmiStubException.html
    @@ -0,0 +1,168 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullRmiStubException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller.exceptions, class: NullRmiStubException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></div>
    +<h1 title="Class NullRmiStubException" class="title">Class NullRmiStubException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">java.lang.RuntimeException</a>
    +<div class="inheritance">it.polimi.is23am10.server.controller.exceptions.NullRmiStubException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullRmiStubException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a></span></div>
    +<div class="block">Custom runtime exception to null RMI stubs.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.controller.exceptions.NullRmiStubException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NullRmiStubException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NullRmiStubException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullRmiStubException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/package-summary.html
    new file mode 100644
    index 00000000..b349215c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/package-summary.html
    @@ -0,0 +1,119 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.controller.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.controller.exceptions" class="title">Package it.polimi.is23am10.server.controller.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.controller.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../interfaces/package-summary.html">it.polimi.is23am10.server.controller.interfaces</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="CommandSerializationErrorException.html" title="class in it.polimi.is23am10.server.controller.exceptions">CommandSerializationErrorException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom runtime exception to handle <a href="../../command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command"><code>AbstractCommand.Opcode</code></a> deserialization errors.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullGameHandlerInstance.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle null game handler instances.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NullRmiServerException.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiServerException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom runtime exception to null RMI servers.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullRmiStubException.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiStubException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom runtime exception to null RMI stubs.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/package-tree.html
    new file mode 100644
    index 00000000..02252a3c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/exceptions/package-tree.html
    @@ -0,0 +1,87 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.controller.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.controller.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.controller.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.controller.exceptions.<a href="NullGameHandlerInstance.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" class="type-name-link external-link" title="class or interface in java.lang">RuntimeException</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.controller.exceptions.<a href="CommandSerializationErrorException.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">CommandSerializationErrorException</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.exceptions.<a href="NullRmiServerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiServerException</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.exceptions.<a href="NullRmiStubException.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiStubException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html
    new file mode 100644
    index 00000000..05ab3d9b
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html
    @@ -0,0 +1,149 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ControllerConsumer</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller.interfaces, interface: ControllerConsumer">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller.interfaces</a></div>
    +<h1 title="Interface ControllerConsumer" class="title">Interface ControllerConsumer&lt;R,<wbr>C&gt;</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Functional Interface:</dt>
    +<dd>This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.</dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="annotations"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/FunctionalInterface.html" title="class or interface in java.lang" class="external-link">@FunctionalInterface</a>
    +</span><span class="modifiers">public interface </span><span class="element-name type-name-label">ControllerConsumer&lt;R,<wbr>C&gt;</span></div>
    +<div class="block">Custom functional interface definition for the controller consumer.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="ControllerConsumer.html" title="type parameter in ControllerConsumer">R</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#accept(org.apache.logging.log4j.Logger,it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,C)" class="member-name-link">accept</a><wbr>(org.apache.logging.log4j.Logger&nbsp;logger,
    + <a href="../../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;connector,
    + <a href="ControllerConsumer.html" title="type parameter in ControllerConsumer">C</a>&nbsp;command)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="accept(org.apache.logging.log4j.Logger,it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,C)">
    +<h3 id="accept(org.apache.logging.log4j.Logger,it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,java.lang.Object)">accept</h3>
    +<div class="member-signature"><span class="return-type"><a href="ControllerConsumer.html" title="type parameter in ControllerConsumer">R</a></span>&nbsp;<span class="element-name">accept</span><wbr><span class="parameters">(org.apache.logging.log4j.Logger&nbsp;logger,
    + <a href="../../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;connector,
    + <a href="ControllerConsumer.html" title="type parameter in ControllerConsumer">C</a>&nbsp;command)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html
    new file mode 100644
    index 00000000..09db5acd
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html
    @@ -0,0 +1,290 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>IServerControllerAction</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller.interfaces, interface: IServerControllerAction">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.controller.interfaces</a></div>
    +<h1 title="Interface IServerControllerAction" class="title">Interface IServerControllerAction</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Superinterfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="../ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">IServerControllerAction</span><span class="extends-implements">
    +extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></span></div>
    +<div class="block">The server controller action interface definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#addPlayerConsumer" class="member-name-link">addPlayerConsumer</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#ADD_PLAYER"><code>AbstractCommand.Opcode.ADD_PLAYER</code></a> command callback worker.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#getAvailableGamesConsumer" class="member-name-link">getAvailableGamesConsumer</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#GET_GAMES"><code>AbstractCommand.Opcode.GET_GAMES</code></a> command callback worker.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="../../network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a>,<wbr><a href="../../command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#getAvailableGamesConsumerRmi" class="member-name-link">getAvailableGamesConsumerRmi</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#GET_GAMES"><code>AbstractCommand.Opcode.GET_GAMES</code></a> command callback worker for RMI.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#moveTilesConsumer" class="member-name-link">moveTilesConsumer</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#MOVE_TILES"><code>AbstractCommand.Opcode.MOVE_TILES</code></a> command callback worker.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#sendChatMessageConsumer" class="member-name-link">sendChatMessageConsumer</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#SEND_CHAT_MESSAGE"><code>AbstractCommand.Opcode.SEND_CHAT_MESSAGE</code></a> command callback worker.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#snoozeTimerConsumer" class="member-name-link">snoozeTimerConsumer</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#GAME_TIMER"><code>AbstractCommand.Opcode.GAME_TIMER</code></a> command callback worker.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#startConsumer" class="member-name-link">startConsumer</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#START"><code>AbstractCommand.Opcode.START</code></a> command callback worker.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#execute(it.polimi.is23am10.server.command.GetAvailableGamesCommand)" class="member-name-link">execute</a><wbr>(<a href="../../command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a>&nbsp;command)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Execute the client <a href="../../command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command"><code>GetAvailableGamesCommand</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#execute(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,it.polimi.is23am10.server.command.AbstractCommand)" class="member-name-link">execute</a><wbr>(<a href="../../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;connector,
    + <a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&nbsp;command)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Execute the client request.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="startConsumer">
    +<h3>startConsumer</h3>
    +<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type"><a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</span>&nbsp;<span class="element-name">startConsumer</span></div>
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#START"><code>AbstractCommand.Opcode.START</code></a> command callback worker.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="addPlayerConsumer">
    +<h3>addPlayerConsumer</h3>
    +<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type"><a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</span>&nbsp;<span class="element-name">addPlayerConsumer</span></div>
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#ADD_PLAYER"><code>AbstractCommand.Opcode.ADD_PLAYER</code></a> command callback worker.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getAvailableGamesConsumer">
    +<h3>getAvailableGamesConsumer</h3>
    +<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type"><a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</span>&nbsp;<span class="element-name">getAvailableGamesConsumer</span></div>
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#GET_GAMES"><code>AbstractCommand.Opcode.GET_GAMES</code></a> command callback worker.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getAvailableGamesConsumerRmi">
    +<h3>getAvailableGamesConsumerRmi</h3>
    +<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type"><a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="../../network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a>,<wbr><a href="../../command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a>&gt;</span>&nbsp;<span class="element-name">getAvailableGamesConsumerRmi</span></div>
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#GET_GAMES"><code>AbstractCommand.Opcode.GET_GAMES</code></a> command callback worker for RMI.
    + Note that playerConnector field is expected to be null.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="sendChatMessageConsumer">
    +<h3>sendChatMessageConsumer</h3>
    +<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type"><a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</span>&nbsp;<span class="element-name">sendChatMessageConsumer</span></div>
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#SEND_CHAT_MESSAGE"><code>AbstractCommand.Opcode.SEND_CHAT_MESSAGE</code></a> command callback worker.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="moveTilesConsumer">
    +<h3>moveTilesConsumer</h3>
    +<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type"><a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</span>&nbsp;<span class="element-name">moveTilesConsumer</span></div>
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#MOVE_TILES"><code>AbstractCommand.Opcode.MOVE_TILES</code></a> command callback worker.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="snoozeTimerConsumer">
    +<h3>snoozeTimerConsumer</h3>
    +<div class="member-signature"><span class="modifiers">static final</span>&nbsp;<span class="return-type"><a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Void.html" title="class or interface in java.lang" class="external-link">Void</a>,<wbr><a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&gt;</span>&nbsp;<span class="element-name">snoozeTimerConsumer</span></div>
    +<div class="block">The <a href="../../command/AbstractCommand.Opcode.html#GAME_TIMER"><code>AbstractCommand.Opcode.GAME_TIMER</code></a> command callback worker.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="execute(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,it.polimi.is23am10.server.command.AbstractCommand)">
    +<h3>execute</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">execute</span><wbr><span class="parameters">(<a href="../../network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;connector,
    + <a href="../../command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a>&nbsp;command)</span>
    +      throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Execute the client request.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>connector</code> - The connector to a player.</dd>
    +<dd><code>command</code> - The command to be executed.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - On RMI failure.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="execute(it.polimi.is23am10.server.command.GetAvailableGamesCommand)">
    +<h3>execute</h3>
    +<div class="member-signature"><span class="return-type"><a href="../../network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></span>&nbsp;<span class="element-name">execute</span><wbr><span class="parameters">(<a href="../../command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a>&nbsp;command)</span>
    +                       throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Execute the client <a href="../../command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command"><code>GetAvailableGamesCommand</code></a>.
    + This is intended to be used under the RMI connection protocol when the
    + client's playerConnector has no power to read the msg queue.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>command</code> - The command to be executed.</dd>
    +<dt>Returns:</dt>
    +<dd>an <a href="../../network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages"><code>AvailableGamesMessage</code></a> response.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - On RMI failure.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/package-summary.html
    new file mode 100644
    index 00000000..db205074
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/package-summary.html
    @@ -0,0 +1,111 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.controller.interfaces</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller.interfaces">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.controller.interfaces" class="title">Package it.polimi.is23am10.server.controller.interfaces</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.controller.interfaces</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../exceptions/package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Interfaces</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="ControllerConsumer.html" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;R,<wbr>C&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">Custom functional interface definition for the controller consumer.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab1"><a href="IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab1">
    +<div class="block">The server controller action interface definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/package-tree.html
    new file mode 100644
    index 00000000..14e08762
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/interfaces/package-tree.html
    @@ -0,0 +1,73 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.controller.interfaces Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.controller.interfaces">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.controller.interfaces</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.controller.interfaces.<a href="ControllerConsumer.html" class="type-name-link" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;R,<wbr>C&gt;</li>
    +<li class="circle">java.rmi.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" class="type-name-link external-link" title="class or interface in java.rmi">Remote</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.controller.interfaces.<a href="IServerControllerAction.html" class="type-name-link" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/package-summary.html
    new file mode 100644
    index 00000000..a04535e6
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/package-summary.html
    @@ -0,0 +1,129 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.controller</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.controller">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.controller" class="title">Package it.polimi.is23am10.server.controller</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.controller</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="interfaces/package-summary.html">it.polimi.is23am10.server.controller.interfaces</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../command/package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ClientConnectionChecker.html" title="class in it.polimi.is23am10.server.controller">ClientConnectionChecker</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The server client connection checker class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ServerControllerAction.html" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">The server controller action class definition.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ServerControllerRmiBindings.html" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ServerControllerSocket.html" title="class in it.polimi.is23am10.server.controller">ServerControllerSocket</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">The server controller class definition.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ServerControllerState.html" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The server controller state class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ServerDebugPrefixString.html" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">The server debug prefixes string interface definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/controller/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/controller/package-tree.html
    new file mode 100644
    index 00000000..54ef6b19
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/controller/package-tree.html
    @@ -0,0 +1,77 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.controller Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.controller">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.controller</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="ClientConnectionChecker.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ClientConnectionChecker</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="ServerControllerAction.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a> (implements it.polimi.is23am10.server.controller.interfaces.<a href="interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="ServerControllerRmiBindings.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="ServerControllerSocket.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerSocket</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="ServerControllerState.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="ServerDebugPrefixString.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/factory/GameFactory.html b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/GameFactory.html
    new file mode 100644
    index 00000000..84e18984
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/GameFactory.html
    @@ -0,0 +1,195 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>GameFactory</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.factory, class: GameFactory">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.factory</a></div>
    +<h1 title="Class GameFactory" class="title">Class GameFactory</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.factory.GameFactory</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">GameFactory</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The GameFactory class definition.
    + This creates a new <a href="../game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> object.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getNewGame(java.lang.String,java.lang.Integer)" class="member-name-link">getNewGame</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;startingPlayerName,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxPlayerNum)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Create a new <a href="../game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> instance.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getNewGame(java.lang.String,java.lang.Integer)">
    +<h3>getNewGame</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></span>&nbsp;<span class="element-name">getNewGame</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;startingPlayerName,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxPlayerNum)</span>
    +                       throws <span class="exceptions"><a href="../game/exceptions/NullMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a>,
    +<a href="../game/exceptions/InvalidMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a>,
    +<a href="../player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a>,
    +<a href="../player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a>,
    +<a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a>,
    +<a href="../player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a>,
    +<a href="../player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a>,
    +<a href="../player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a>,
    +<a href="exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a>,
    +<a href="../items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a>,
    +<a href="exceptions/NullPlayerNamesException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a>,
    +<a href="../items/board/exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a>,
    +<a href="../items/board/exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a>,
    +<a href="../game/exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a>,
    +<a href="../game/exceptions/FullGameException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a>,
    +<a href="../items/scoreblock/exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a>,
    +<a href="../game/exceptions/PlayerNotFoundException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></span></div>
    +<div class="block">Create a new <a href="../game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> instance.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>startingPlayerName</code> - The starting player name, who has requested the
    +                           game.</dd>
    +<dd><code>maxPlayerNum</code> - The desired maximum player number, specified by the
    +                           first player.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../game/exceptions/NullMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a></code> - If no value for maximum number of players in the game is provided.</dd>
    +<dd><code><a href="../game/exceptions/InvalidMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a></code> - If value for maximum number of players in the game is not valid.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></code> - If player name is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></code> - If player id is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></code> - If bookshelf is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></code> - If player's score object is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></code> - If player's private card object is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></code> - If player's scoreblocks list is null.</dd>
    +<dd><code><a href="exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></code> - If player with that name already exists.</dd>
    +<dd><code><a href="../items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></code> - If assigning a pattern to a card that already has one.</dd>
    +<dd><code><a href="exceptions/NullPlayerNamesException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a></code> - If, while adding multiple players, the list of player names is null.</dd>
    +<dd><code><a href="../items/board/exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a></code> - If, while adding multiple players, there is an invalid number of them.</dd>
    +<dd><code><a href="../items/board/exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></code> - If the number of players provided when filling the board is null.</dd>
    +<dd><code><a href="../game/exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></code> - If the pattern assigned to a card is null.</dd>
    +<dd><code><a href="../items/scoreblock/exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></code> - If the value assigned to a scoreblock is not valid.</dd>
    +<dd><code><a href="../game/exceptions/PlayerNotFoundException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></code> - If the player with the name provided is not found.</dd>
    +<dd><code><a href="../game/exceptions/FullGameException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/factory/PlayerFactory.html b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/PlayerFactory.html
    new file mode 100644
    index 00000000..13b0a785
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/PlayerFactory.html
    @@ -0,0 +1,198 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>PlayerFactory</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.factory, class: PlayerFactory">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.factory</a></div>
    +<h1 title="Class PlayerFactory" class="title">Class PlayerFactory</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.factory.PlayerFactory</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PlayerFactory</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The PlayerFactory class definition.
    + This creates a new <a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a> object.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getNewPlayer(java.lang.String,it.polimi.is23am10.server.model.game.Game)" class="member-name-link">getNewPlayer</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
    + <a href="../game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a>&nbsp;game)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Build a new <a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a> object.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#isPlayerNameDuplicate(java.lang.String,java.util.List)" class="member-name-link">isPlayerNameDuplicate</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;playerNames)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Check if a player name has already been used across the game instance.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="isPlayerNameDuplicate(java.lang.String,java.util.List)">
    +<h3>isPlayerNameDuplicate</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isPlayerNameDuplicate</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;&nbsp;playerNames)</span></div>
    +<div class="block">Check if a player name has already been used across the game instance.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerName</code> - The chosen player name.</dd>
    +<dd><code>playerNames</code> - Current game instance already available players names.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getNewPlayer(java.lang.String,it.polimi.is23am10.server.model.game.Game)">
    +<h3>getNewPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getNewPlayer</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName,
    + <a href="../game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a>&nbsp;game)</span>
    +                           throws <span class="exceptions"><a href="../player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a>,
    +<a href="../player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a>,
    +<a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a>,
    +<a href="../player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a>,
    +<a href="../player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a>,
    +<a href="../player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a>,
    +<a href="exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a>,
    +<a href="../items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a>,
    +<a href="../game/exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></span></div>
    +<div class="block">Build a new <a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a> object.
    + This method has the ownership to ensure unique player names inside
    + a game instance.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerName</code> - The chosen player name.</dd>
    +<dd><code>game</code> - The game reference instance where the new player will be added.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></code> - If assigning a pattern to a card that already has one.</dd>
    +<dd><code><a href="exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></code> - If player with that name already exists.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></code> - If player id is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></code> - If bookshelf is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></code> - If player name is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></code> - If player's private card object is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></code> - If player's scoreblocks list is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></code> - If player's score object is null.</dd>
    +<dd><code><a href="../game/exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></code> - If the pattern assigned to a card is null.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html
    new file mode 100644
    index 00000000..26b785e8
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html
    @@ -0,0 +1,334 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>PrivatePatternFactory</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.factory, class: PrivatePatternFactory">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.factory</a></div>
    +<h1 title="Class PrivatePatternFactory" class="title">Class PrivatePatternFactory</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.factory.PrivatePatternFactory</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">PrivatePatternFactory</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Private pattern factory object.
    + This creates a new <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkPattern1" class="member-name-link">checkPattern1</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">PrivatePattern Rule #1.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkPattern10" class="member-name-link">checkPattern10</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">PrivatePattern Rule #10.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkPattern11" class="member-name-link">checkPattern11</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">PrivatePattern Rule #11.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkPattern12" class="member-name-link">checkPattern12</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">PrivatePattern Rule #12.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkPattern2" class="member-name-link">checkPattern2</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">PrivatePattern Rule #2.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkPattern3" class="member-name-link">checkPattern3</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">PrivatePattern Rule #3.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkPattern4" class="member-name-link">checkPattern4</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">PrivatePattern Rule #4.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkPattern5" class="member-name-link">checkPattern5</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">PrivatePattern Rule #5.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkPattern6" class="member-name-link">checkPattern6</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">PrivatePattern Rule #6.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkPattern7" class="member-name-link">checkPattern7</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">PrivatePattern Rule #7.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkPattern8" class="member-name-link">checkPattern8</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">PrivatePattern Rule #8.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkPattern9" class="member-name-link">checkPattern9</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">PrivatePattern Rule #9.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#patternsArray" class="member-name-link">patternsArray</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The list of <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a> containing all the 12 different patterns.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getNotUsedPattern(java.util.List)" class="member-name-link">getNotUsedPattern</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt;&nbsp;usedPatterns)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method used to get random PrivatePattern between the 12 possible.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="checkPattern1">
    +<h3>checkPattern1</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern1</span></div>
    +<div class="block">PrivatePattern Rule #1.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern2">
    +<h3>checkPattern2</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern2</span></div>
    +<div class="block">PrivatePattern Rule #2.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern3">
    +<h3>checkPattern3</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern3</span></div>
    +<div class="block">PrivatePattern Rule #3.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern4">
    +<h3>checkPattern4</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern4</span></div>
    +<div class="block">PrivatePattern Rule #4.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern5">
    +<h3>checkPattern5</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern5</span></div>
    +<div class="block">PrivatePattern Rule #5.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern6">
    +<h3>checkPattern6</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern6</span></div>
    +<div class="block">PrivatePattern Rule #6.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern7">
    +<h3>checkPattern7</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern7</span></div>
    +<div class="block">PrivatePattern Rule #7.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern8">
    +<h3>checkPattern8</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern8</span></div>
    +<div class="block">PrivatePattern Rule #8.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern9">
    +<h3>checkPattern9</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern9</span></div>
    +<div class="block">PrivatePattern Rule #9.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern10">
    +<h3>checkPattern10</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern10</span></div>
    +<div class="block">PrivatePattern Rule #10.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern11">
    +<h3>checkPattern11</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern11</span></div>
    +<div class="block">PrivatePattern Rule #11.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkPattern12">
    +<h3>checkPattern12</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">checkPattern12</span></div>
    +<div class="block">PrivatePattern Rule #12.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="patternsArray">
    +<h3>patternsArray</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt;</span>&nbsp;<span class="element-name">patternsArray</span></div>
    +<div class="block">The list of <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a> containing all the 12 different patterns.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getNotUsedPattern(java.util.List)">
    +<h3>getNotUsedPattern</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;</span>&nbsp;<span class="element-name">getNotUsedPattern</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt;&nbsp;usedPatterns)</span></div>
    +<div class="block">Method used to get random PrivatePattern between the 12 possible.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>usedPatterns</code> - a List of <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a> storing the already used
    +                     patterns.</dd>
    +<dt>Returns:</dt>
    +<dd>a random pattern between the 12 possible.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/factory/SharedPatternFactory.html b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/SharedPatternFactory.html
    new file mode 100644
    index 00000000..419c0515
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/SharedPatternFactory.html
    @@ -0,0 +1,349 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>SharedPatternFactory</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.factory, class: SharedPatternFactory">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.factory</a></div>
    +<h1 title="Class SharedPatternFactory" class="title">Class SharedPatternFactory</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.factory.SharedPatternFactory</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">SharedPatternFactory</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Shared pattern factory object.
    + 
    + <p>
    + NOTE: if not specified, each iteration of the player's bookshelf inside the
    + functions is gonna be first over rows,then columns
    + </p></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkCornersMatch" class="member-name-link">checkCornersMatch</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkDiagonalsSameType" class="member-name-link">checkDiagonalsSameType</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">#7 in rulebook, #11 in images
    + Rule that checks if the diagonals are filled with tiles of the same type.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkEightOfSameType" class="member-name-link">checkEightOfSameType</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkFourAdjacent" class="member-name-link">checkFourAdjacent</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">#3 in rulebook, #8 in images
    + Rule that checks if there are at least 4 separate groups of 4 elements of
    + the same type in adjacent positions(row or column).</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkMaxThreeTypesInColumn" class="member-name-link">checkMaxThreeTypesInColumn</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">#5 both in rulebook and images
    + Rule that checks if there are at least three columns containing maximum 3
    + different types of tiles.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkMaxThreeTypesInRow" class="member-name-link">checkMaxThreeTypesInRow</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">#8 in rulebook, #7 in images
    + Rule that checks if there are maximum three different types in at least 4
    + rows.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkOrderedBookshelfColumns" class="member-name-link">checkOrderedBookshelfColumns</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">#12 both in rulebook and images
    + Rule that checks if the columns in the bookshelf are ordered (asc o desc) and
    + the rest of the bookshelf is filled with <a href="../items/tile/Tile.TileType.html#EMPTY"><code>Tile.TileType.EMPTY</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkSquares" class="member-name-link">checkSquares</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkTilesXShape" class="member-name-link">checkTilesXShape</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">#11 in rulebook, #10 in images
    + Rule that checks if there are 5 tiles of the same type on a 'X' shape.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkTwoAdjacent" class="member-name-link">checkTwoAdjacent</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">#1 in rulebook, #4 in images
    + Rule that checks if there are at least six couples of the same tile type in
    + adjacent positions (row or column).</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#checkTwoColumnAllDiff" class="member-name-link">checkTwoColumnAllDiff</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">#9 in rulebook, #2 in images
    + Rule that checks if there are at least two columns with all the elements of
    + different type.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</code></div>
    +<div class="col-second odd-row-color"><code><a href="#checkTwoRowsAllDiff" class="member-name-link">checkTwoRowsAllDiff</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">#10 in rulebook, #6 in images
    + Rule that checks if there are at least two rows full of different types of
    + tiles.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getNotUsedPattern(java.util.List)" class="member-name-link">getNotUsedPattern</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&gt;&nbsp;usedPatterns)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method used to get random SharedPattern between the 12 possible.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="checkTwoAdjacent">
    +<h3>checkTwoAdjacent</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkTwoAdjacent</span></div>
    +<div class="block">#1 in rulebook, #4 in images
    + Rule that checks if there are at least six couples of the same tile type in
    + adjacent positions (row or column).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkCornersMatch">
    +<h3>checkCornersMatch</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkCornersMatch</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkFourAdjacent">
    +<h3>checkFourAdjacent</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkFourAdjacent</span></div>
    +<div class="block">#3 in rulebook, #8 in images
    + Rule that checks if there are at least 4 separate groups of 4 elements of
    + the same type in adjacent positions(row or column).</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkSquares">
    +<h3>checkSquares</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkSquares</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkMaxThreeTypesInColumn">
    +<h3>checkMaxThreeTypesInColumn</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkMaxThreeTypesInColumn</span></div>
    +<div class="block">#5 both in rulebook and images
    + Rule that checks if there are at least three columns containing maximum 3
    + different types of tiles.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkEightOfSameType">
    +<h3>checkEightOfSameType</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkEightOfSameType</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkDiagonalsSameType">
    +<h3>checkDiagonalsSameType</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkDiagonalsSameType</span></div>
    +<div class="block">#7 in rulebook, #11 in images
    + Rule that checks if the diagonals are filled with tiles of the same type.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkMaxThreeTypesInRow">
    +<h3>checkMaxThreeTypesInRow</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkMaxThreeTypesInRow</span></div>
    +<div class="block">#8 in rulebook, #7 in images
    + Rule that checks if there are maximum three different types in at least 4
    + rows.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkTwoColumnAllDiff">
    +<h3>checkTwoColumnAllDiff</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkTwoColumnAllDiff</span></div>
    +<div class="block">#9 in rulebook, #2 in images
    + Rule that checks if there are at least two columns with all the elements of
    + different type.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkTwoRowsAllDiff">
    +<h3>checkTwoRowsAllDiff</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkTwoRowsAllDiff</span></div>
    +<div class="block">#10 in rulebook, #6 in images
    + Rule that checks if there are at least two rows full of different types of
    + tiles.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkTilesXShape">
    +<h3>checkTilesXShape</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkTilesXShape</span></div>
    +<div class="block">#11 in rulebook, #10 in images
    + Rule that checks if there are 5 tiles of the same type on a 'X' shape.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkOrderedBookshelfColumns">
    +<h3>checkOrderedBookshelfColumns</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;</span>&nbsp;<span class="element-name">checkOrderedBookshelfColumns</span></div>
    +<div class="block">#12 both in rulebook and images
    + Rule that checks if the columns in the bookshelf are ordered (asc o desc) and
    + the rest of the bookshelf is filled with <a href="../items/tile/Tile.TileType.html#EMPTY"><code>Tile.TileType.EMPTY</code></a>.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getNotUsedPattern(java.util.List)">
    +<h3>getNotUsedPattern</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;</span>&nbsp;<span class="element-name">getNotUsedPattern</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&gt;&nbsp;usedPatterns)</span></div>
    +<div class="block">Method used to get random SharedPattern between the 12 possible.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>usedPatterns</code> - a List of <a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>SharedPattern</code></a> storing the already used
    +                     patterns.</dd>
    +<dt>Returns:</dt>
    +<dd>a random pattern between the 12 possible.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/DuplicatePlayerNameException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/DuplicatePlayerNameException.html
    new file mode 100644
    index 00000000..9dcd0b5d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/DuplicatePlayerNameException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>DuplicatePlayerNameException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.factory.exceptions, class: DuplicatePlayerNameException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.factory.exceptions</a></div>
    +<h1 title="Class DuplicatePlayerNameException" class="title">Class DuplicatePlayerNameException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">DuplicatePlayerNameException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle duplicate player names inside a game instance.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">DuplicatePlayerNameException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>DuplicatePlayerNameException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">DuplicatePlayerNameException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/NullPlayerNamesException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/NullPlayerNamesException.html
    new file mode 100644
    index 00000000..a24f8a7c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/NullPlayerNamesException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullPlayerNamesException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.factory.exceptions, class: NullPlayerNamesException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.factory.exceptions</a></div>
    +<h1 title="Class NullPlayerNamesException" class="title">Class NullPlayerNamesException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullPlayerNamesException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle null player names when checking for duplicates
    + in Player Factory.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerNamesException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullPlayerNamesException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullPlayerNamesException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/package-summary.html
    new file mode 100644
    index 00000000..6a9a517b
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/package-summary.html
    @@ -0,0 +1,110 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.factory.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.factory.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.factory.exceptions" class="title">Package it.polimi.is23am10.server.model.factory.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.factory.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.model.factory</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle duplicate player names inside a game instance.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullPlayerNamesException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle null player names when checking for duplicates
    + in Player Factory.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/package-tree.html
    new file mode 100644
    index 00000000..8e584a6c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/exceptions/package-tree.html
    @@ -0,0 +1,81 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.factory.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.factory.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.factory.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.factory.exceptions.<a href="DuplicatePlayerNameException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.factory.exceptions.<a href="NullPlayerNamesException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/factory/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/package-summary.html
    new file mode 100644
    index 00000000..a4749a22
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/package-summary.html
    @@ -0,0 +1,117 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.factory</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.factory">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.factory" class="title">Package it.polimi.is23am10.server.model.factory</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.factory</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.model.factory.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="GameFactory.html" title="class in it.polimi.is23am10.server.model.factory">GameFactory</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The GameFactory class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="PlayerFactory.html" title="class in it.polimi.is23am10.server.model.factory">PlayerFactory</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">The PlayerFactory class definition.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="PrivatePatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Private pattern factory object.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SharedPatternFactory.html" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Shared pattern factory object.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/factory/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/package-tree.html
    new file mode 100644
    index 00000000..c61ac2e5
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/factory/package-tree.html
    @@ -0,0 +1,75 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.factory Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.factory">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.factory</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.factory.<a href="GameFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">GameFactory</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.factory.<a href="PlayerFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">PlayerFactory</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.factory.<a href="PrivatePatternFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.factory.<a href="SharedPatternFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/Game.GameStatus.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/Game.GameStatus.html
    new file mode 100644
    index 00000000..b15d9cc0
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/Game.GameStatus.html
    @@ -0,0 +1,253 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Game.GameStatus</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game, class: Game, enum: GameStatus">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#enum-constant-summary">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#enum-constant-detail">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.game</a></div>
    +<h1 title="Enum Class Game.GameStatus" class="title">Enum Class Game.GameStatus</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a>&gt;
    +<div class="inheritance">it.polimi.is23am10.server.model.game.Game.GameStatus</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><code><a href="Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">Game.GameStatus</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a>&gt;</span></div>
    +<div class="block">All the possible status the game can be in.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#ENDED" class="member-name-link">ENDED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#LAST_ROUND" class="member-name-link">LAST_ROUND</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#STARTED" class="member-name-link">STARTED</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#WAITING_FOR_PLAYERS" class="member-name-link">WAITING_FOR_PLAYERS</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="WAITING_FOR_PLAYERS">
    +<h3>WAITING_FOR_PLAYERS</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></span>&nbsp;<span class="element-name">WAITING_FOR_PLAYERS</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="STARTED">
    +<h3>STARTED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></span>&nbsp;<span class="element-name">STARTED</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="LAST_ROUND">
    +<h3>LAST_ROUND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></span>&nbsp;<span class="element-name">LAST_ROUND</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ENDED">
    +<h3>ENDED</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></span>&nbsp;<span class="element-name">ENDED</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/Game.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/Game.html
    new file mode 100644
    index 00000000..ef756d9c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/Game.html
    @@ -0,0 +1,831 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Game</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game, class: Game">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.game</a></div>
    +<h1 title="Class Game" class="title">Class Game</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.game.Game</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Game</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">The Game class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.model.game.Game">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="Game.GameStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">All the possible status the game can be in.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Game</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor that assigns the only value that is
    + generated, immutable and not set by factory.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#activePlayerMove(java.util.Map)" class="member-name-link">activePlayerMove</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="../../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&nbsp;selectedCoordinates)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method that plays the active player's turn.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addAssignedPrivatePattern(it.polimi.is23am10.server.model.pattern.PrivatePattern)" class="member-name-link">addAssignedPrivatePattern</a><wbr>(<a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&nbsp;pattern)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Add a new consumed <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addAssignedSharedPattern(it.polimi.is23am10.server.model.pattern.SharedPattern)" class="member-name-link">addAssignedSharedPattern</a><wbr>(<a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&nbsp;pattern)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Add a new consumed <a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>SharedPattern</code></a>.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addPlayer(java.lang.String)" class="member-name-link">addPlayer</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Creates and adds a new player to the game.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addPlayers(java.util.List)" class="member-name-link">addPlayers</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&gt;&nbsp;players)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Function that adds multiple players to game.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#assignPlayers()" class="member-name-link">assignPlayers</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method that is called when all players joined
    + the game and the first one should be picked.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#checkEndGame()" class="member-name-link">checkEndGame</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Function that checks if there's a player who completed
    + their bookshelf and sets flags accordingly.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getActivePlayer()" class="member-name-link">getActivePlayer</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">ActivePlayer getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAssignedPrivatePatterns()" class="member-name-link">getAssignedPrivatePatterns</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieve the already used <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a>s.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getAssignedSharedPatterns()" class="member-name-link">getAssignedSharedPatterns</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieve the already used <a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>SharedPattern</code></a>s.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDisconnectedPlayersNum()" class="member-name-link">getDisconnectedPlayersNum</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Simple helper function to get the number of disconnected
    + players to discount when looking for available games.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getFirstPlayer()" class="member-name-link">getFirstPlayer</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The firstPlayer getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getGameBoard()" class="member-name-link">getGameBoard</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The gameBoard getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getGameId()" class="member-name-link">getGameId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The gameId getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMaxPlayer()" class="member-name-link">getMaxPlayer</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">MaxPlayer getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerByName(java.lang.String)" class="member-name-link">getPlayerByName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method used to retrieve a player from the list
    + given its name.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerNames()" class="member-name-link">getPlayerNames</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieve the current players' names.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayers()" class="member-name-link">getPlayers</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The players getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSharedCard()" class="member-name-link">getSharedCard</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The sharedCards getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStatus()" class="member-name-link">getStatus</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The ended status getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWinnerPlayer()" class="member-name-link">getWinnerPlayer</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">WinnerPlayer getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#nextTurn()" class="member-name-link">nextTurn</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method that computes active player's Score, updates the view,
    + checks if game is over and if not picks next player.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#putTileAction(it.polimi.is23am10.server.model.items.tile.Tile,it.polimi.is23am10.utils.Coordinates)" class="member-name-link">putTileAction</a><wbr>(<a href="../items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>&nbsp;t,
    + <a href="../../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&nbsp;coord)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Function that puts a tile inside the active player's bookshelf.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setActivePlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setActivePlayer</a><wbr>(<a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method to set the active player (playing this turn).</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setFirstPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setFirstPlayer</a><wbr>(<a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;playerToSet)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The firstPlayer setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setGameBoard()" class="member-name-link">setGameBoard</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">GameBoard setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setMaxPlayers(java.lang.Integer)" class="member-name-link">setMaxPlayers</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxPlayers)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The maxPlayers setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setSharedCards(java.util.List)" class="member-name-link">setSharedCards</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a>&gt;&nbsp;cards)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The sharedCards setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setStatus(it.polimi.is23am10.server.model.game.Game.GameStatus)" class="member-name-link">setStatus</a><wbr>(<a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a>&nbsp;status)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The status setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setWinnerPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setWinnerPlayer</a><wbr>(<a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">WinnerPlayer setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#takeTileAction(it.polimi.is23am10.utils.Coordinates)" class="member-name-link">takeTileAction</a><wbr>(<a href="../../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&nbsp;coord)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Function that allows the player to take a tile from the board.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Game</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Game</span>()</div>
    +<div class="block">Constructor that assigns the only value that is
    + generated, immutable and not set by factory.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getAssignedSharedPatterns()">
    +<h3>getAssignedSharedPatterns</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&gt;</span>&nbsp;<span class="element-name">getAssignedSharedPatterns</span>()</div>
    +<div class="block">Retrieve the already used <a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>SharedPattern</code></a>s.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The already assigned <a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>SharedPattern</code></a>s.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getAssignedPrivatePatterns()">
    +<h3>getAssignedPrivatePatterns</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt;</span>&nbsp;<span class="element-name">getAssignedPrivatePatterns</span>()</div>
    +<div class="block">Retrieve the already used <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a>s.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The already assigned <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a>s.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="addAssignedSharedPattern(it.polimi.is23am10.server.model.pattern.SharedPattern)">
    +<h3>addAssignedSharedPattern</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addAssignedSharedPattern</span><wbr><span class="parameters">(<a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&nbsp;pattern)</span>
    +                              throws <span class="exceptions"><a href="exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></span></div>
    +<div class="block">Add a new consumed <a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>SharedPattern</code></a>.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>pattern</code> - The <a href="../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>SharedPattern</code></a> to be added.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></code> - If the pattern assigned to a card is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="addAssignedPrivatePattern(it.polimi.is23am10.server.model.pattern.PrivatePattern)">
    +<h3>addAssignedPrivatePattern</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addAssignedPrivatePattern</span><wbr><span class="parameters">(<a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&nbsp;pattern)</span>
    +                               throws <span class="exceptions"><a href="exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></span></div>
    +<div class="block">Add a new consumed <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a>.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>pattern</code> - The <a href="../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a> to be added.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></code> - If the pattern assigned to a card is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setMaxPlayers(java.lang.Integer)">
    +<h3>setMaxPlayers</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setMaxPlayers</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxPlayers)</span>
    +                   throws <span class="exceptions"><a href="exceptions/NullMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a>,
    +<a href="exceptions/InvalidMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a></span></div>
    +<div class="block">The maxPlayers setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>maxPlayers</code> - The value to be assigned.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a></code> - If no value for maximum number of players in the game is provided.</dd>
    +<dd><code><a href="exceptions/InvalidMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a></code> - If value for maximum number of players in the game is not valid.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setFirstPlayer(it.polimi.is23am10.server.model.player.Player)">
    +<h3>setFirstPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setFirstPlayer</span><wbr><span class="parameters">(<a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;playerToSet)</span></div>
    +<div class="block">The firstPlayer setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerToSet</code> - The first player's name.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="addPlayer(java.lang.String)">
    +<h3>addPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">addPlayer</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName)</span>
    +                 throws <span class="exceptions"><a href="../factory/exceptions/NullPlayerNamesException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a>,
    +<a href="../player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a>,
    +<a href="../player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a>,
    +<a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a>,
    +<a href="../player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a>,
    +<a href="../player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a>,
    +<a href="../player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a>,
    +<a href="../factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a>,
    +<a href="../items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a>,
    +<a href="exceptions/FullGameException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a>,
    +<a href="exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></span></div>
    +<div class="block">Creates and adds a new player to the game. Position is randomly determined,
    + as position in players list is the order in the game.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerName</code> - The player's name.</dd>
    +<dt>Returns:</dt>
    +<dd>The instance of created player.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../factory/exceptions/NullPlayerNamesException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a></code> - If, while adding multiple players, the list of player names is null.</dd>
    +<dd><code><a href="../items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></code> - If assigning a pattern to a card that already has one.</dd>
    +<dd><code><a href="../factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></code> - If player with that name already exists.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></code> - If player's scoreblocks list is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></code> - If player's private card object is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></code> - If player's score object is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></code> - If bookshelf is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></code> - If player id is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></code> - If player name is null.</dd>
    +<dd><code><a href="exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></code> - If the pattern assigned to a card is null.</dd>
    +<dd><code><a href="exceptions/FullGameException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a></code> - If game is full, on player trying to join.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="addPlayers(java.util.List)">
    +<h3>addPlayers</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addPlayers</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&gt;&nbsp;players)</span>
    +                throws <span class="exceptions"><a href="exceptions/NullPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullPlayerException</a>,
    +<a href="exceptions/InvalidPlayersNumberException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidPlayersNumberException</a>,
    +<a href="../factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></span></div>
    +<div class="block">Function that adds multiple players to game.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>players</code> - List of players to add.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullPlayerException</a></code> - If player object is null.</dd>
    +<dd><code><a href="exceptions/InvalidPlayersNumberException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidPlayersNumberException</a></code> - If number of players to add is invalid.</dd>
    +<dd><code><a href="../factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></code> - If player with that name already exists.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setGameBoard()">
    +<h3>setGameBoard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setGameBoard</span>()
    +                  throws <span class="exceptions"><a href="../items/board/exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a>,
    +<a href="../items/board/exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></span></div>
    +<div class="block">GameBoard setter.</div>
    +<dl class="notes">
    +<dt>Throws:</dt>
    +<dd><code><a href="../items/board/exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a></code> - If, while adding multiple players, there is an invalid number of them.</dd>
    +<dd><code><a href="../items/board/exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></code> - If the number of players provided when filling the board is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setSharedCards(java.util.List)">
    +<h3>setSharedCards</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setSharedCards</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a>&gt;&nbsp;cards)</span></div>
    +<div class="block">The sharedCards setter.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setStatus(it.polimi.is23am10.server.model.game.Game.GameStatus)">
    +<h3>setStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setStatus</span><wbr><span class="parameters">(<a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a>&nbsp;status)</span></div>
    +<div class="block">The status setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>status</code> - The status to set.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getGameId()">
    +<h3>getGameId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></span>&nbsp;<span class="element-name">getGameId</span>()</div>
    +<div class="block">The gameId getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The game id.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMaxPlayer()">
    +<h3>getMaxPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getMaxPlayer</span>()</div>
    +<div class="block">MaxPlayer getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The maximum number of players for the current game instance.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayers()">
    +<h3>getPlayers</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&gt;</span>&nbsp;<span class="element-name">getPlayers</span>()</div>
    +<div class="block">The players getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>A list containing all the current players.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getFirstPlayer()">
    +<h3>getFirstPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getFirstPlayer</span>()</div>
    +<div class="block">The firstPlayer getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The game first player.
    +         This player has started the game.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getGameBoard()">
    +<h3>getGameBoard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></span>&nbsp;<span class="element-name">getGameBoard</span>()</div>
    +<div class="block">The gameBoard getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The game board grid.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getSharedCard()">
    +<h3>getSharedCard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a>&gt;</span>&nbsp;<span class="element-name">getSharedCard</span>()</div>
    +<div class="block">The sharedCards getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The assigned shared cards to the current game instance.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getStatus()">
    +<h3>getStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></span>&nbsp;<span class="element-name">getStatus</span>()</div>
    +<div class="block">The ended status getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The current status of the game.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayerNames()">
    +<h3>getPlayerNames</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt;</span>&nbsp;<span class="element-name">getPlayerNames</span>()</div>
    +<div class="block">Retrieve the current players' names.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>A <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link"><code>List</code></a> containing all the current players' names.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayerByName(java.lang.String)">
    +<h3>getPlayerByName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getPlayerByName</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName)</span>
    +                       throws <span class="exceptions"><a href="../player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a>,
    +<a href="exceptions/PlayerNotFoundException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></span></div>
    +<div class="block">Method used to retrieve a player from the list
    + given its name.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerName</code> - The player name we are looking for.</dd>
    +<dt>Returns:</dt>
    +<dd>Player matching provided name.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/PlayerNotFoundException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></code> - If the player with the name provided is not found.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setActivePlayer(it.polimi.is23am10.server.model.player.Player)">
    +<h3>setActivePlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setActivePlayer</span><wbr><span class="parameters">(<a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</span></div>
    +<div class="block">Method to set the active player (playing this turn).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>player</code> - Player to set as active</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setWinnerPlayer(it.polimi.is23am10.server.model.player.Player)">
    +<h3>setWinnerPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setWinnerPlayer</span><wbr><span class="parameters">(<a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</span></div>
    +<div class="block">WinnerPlayer setter. To be called by <code>endGame()</code> only.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>player</code> - The winning player to set.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getActivePlayer()">
    +<h3>getActivePlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getActivePlayer</span>()</div>
    +<div class="block">ActivePlayer getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The active player.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getWinnerPlayer()">
    +<h3>getWinnerPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getWinnerPlayer</span>()</div>
    +<div class="block">WinnerPlayer getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The winning player.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="nextTurn()">
    +<h3>nextTurn</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">nextTurn</span>()
    +              throws <span class="exceptions"><a href="../items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a>,
    +<a href="../items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a>,
    +<a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a>,
    +<a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a>,
    +<a href="../items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a>,
    +<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a>,
    +<a href="../items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a>,
    +<a href="../items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></span></div>
    +<div class="block">Method that computes active player's Score, updates the view,
    + checks if game is over and if not picks next player.</div>
    +<dl class="notes">
    +<dt>Throws:</dt>
    +<dd><code><a href="../items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></code> - If the list of scoreblocks is null.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></code> - If bookshelf is null.</dd>
    +<dd><code><a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code> - If the bookshelf row index is out of bounds.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code> - If the bookshelf column index is out of bounds.</dd>
    +<dd><code><a href="../items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></code> - If the number of matched blocks to set is negative.</dd>
    +<dd><code><a href="../items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a></code> - If the number of matched blocks to set is null.</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - Generic NPE.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="takeTileAction(it.polimi.is23am10.utils.Coordinates)">
    +<h3>takeTileAction</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></span>&nbsp;<span class="element-name">takeTileAction</span><wbr><span class="parameters">(<a href="../../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&nbsp;coord)</span>
    +                    throws <span class="exceptions"><a href="../items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a>,
    +<a href="../items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a>,
    +<a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></span></div>
    +<div class="block">Function that allows the player to take a tile from the board.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>coord</code> - The coordinates of the tile.</dd>
    +<dt>Returns:</dt>
    +<dd>The tile of the board the player wants to take.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></code> - If the board column index is out of bounds.</dd>
    +<dd><code><a href="../items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></code> - If the board row index is out of bounds.</dd>
    +<dd><code><a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="putTileAction(it.polimi.is23am10.server.model.items.tile.Tile,it.polimi.is23am10.utils.Coordinates)">
    +<h3>putTileAction</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">putTileAction</span><wbr><span class="parameters">(<a href="../items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>&nbsp;t,
    + <a href="../../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&nbsp;coord)</span>
    +                   throws <span class="exceptions"><a href="../items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a>,
    +<a href="../items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a>,
    +<a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a>,
    +<a href="../items/bookshelf/exceptions/NullTileException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a></span></div>
    +<div class="block">Function that puts a tile inside the active player's bookshelf.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>t</code> - Tile taken from the board.</dd>
    +<dd><code>coord</code> - Coordinates of the bookshelf.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code> - If the bookshelf column index is out of bounds.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code> - If the bookshelf row index is out of bounds.</dd>
    +<dd><code><a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/NullTileException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a></code> - If the tile is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="checkEndGame()">
    +<h3>checkEndGame</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">checkEndGame</span>()</div>
    +<div class="block">Function that checks if there's a player who completed
    + their bookshelf and sets flags accordingly.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="assignPlayers()">
    +<h3>assignPlayers</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">assignPlayers</span>()</div>
    +<div class="block">Method that is called when all players joined
    + the game and the first one should be picked.
    + Can be used in tests to force starting a game before
    + the players threshold is met.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getDisconnectedPlayersNum()">
    +<h3>getDisconnectedPlayersNum</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getDisconnectedPlayersNum</span>()</div>
    +<div class="block">Simple helper function to get the number of disconnected
    + players to discount when looking for available games.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>disconnected player num.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="activePlayerMove(java.util.Map)">
    +<h3>activePlayerMove</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">activePlayerMove</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="../../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="../../../utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&nbsp;selectedCoordinates)</span>
    +                      throws <span class="exceptions"><a href="../items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a>,
    +<a href="../items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a>,
    +<a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a>,
    +<a href="../items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a>,
    +<a href="../items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a>,
    +<a href="../items/bookshelf/exceptions/NullTileException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a>,
    +<a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a>,
    +<a href="../items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a>,
    +<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a>,
    +<a href="../items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a>,
    +<a href="../items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a>,
    +<a href="../../../utils/exceptions/WrongMovesNumberException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongMovesNumberException</a>,
    +<a href="../../../utils/exceptions/WrongGameBoardPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongGameBoardPicksException</a>,
    +<a href="../../../utils/exceptions/WrongBookShelfPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a>,
    +<a href="../../controller/exceptions/NullGameHandlerInstance.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></span></div>
    +<div class="block">Method that plays the active player's turn.
    + It's important to understand the structure of the Hashmap, which allows to
    + find a correspondence between the coordinates of the taken tile of the board
    + and the coordinates of the player's bookshelf where he/she/they wants to put
    + the taken tile in.
    +
    + <p>
    + Note that I'm assuming all the params given to the method are valid since the
    + input validation will be implemented client side in the selection of those
    + coordinates.
    + </p></div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>selectedCoordinates</code> - Map containing the coordinates of selected tiles.
    +                            from board as key and the corresponding
    +                            coordinates of the active player bookshelf as
    +                            value.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></code> - If the board column index is out of bounds.</dd>
    +<dd><code><a href="../items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></code> - If the board row index is out of bounds.</dd>
    +<dd><code><a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code> - If the bookshelf column index is out of bounds.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code> - If the bookshelf row index is out of bounds.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/NullTileException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a></code> - If the tile is null.</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - Generic NPE.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></code> - If bookshelf is null.</dd>
    +<dd><code><a href="../items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></code> - If the list of scoreblocks is null.</dd>
    +<dd><code><a href="../items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></code> - If the number of matched blocks to set is negative.</dd>
    +<dd><code><a href="../items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a></code> - If the number of matched blocks to set is null.</dd>
    +<dd><code><a href="../../../utils/exceptions/WrongBookShelfPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a></code> - If the game moves are invalid because of bookshelf placement.</dd>
    +<dd><code><a href="../../../utils/exceptions/WrongGameBoardPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongGameBoardPicksException</a></code> - If the game moves are invalid because of board picking.</dd>
    +<dd><code><a href="../../../utils/exceptions/WrongMovesNumberException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongMovesNumberException</a></code> - If the game moves are in an illegal number.</dd>
    +<dd><code><a href="../../controller/exceptions/NullGameHandlerInstance.html" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></code> - If the game handler is null.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/FullGameException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/FullGameException.html
    new file mode 100644
    index 00000000..31a47f21
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/FullGameException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>FullGameException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game.exceptions, class: FullGameException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<h1 title="Class FullGameException" class="title">Class FullGameException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.game.exceptions.FullGameException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">FullGameException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">The game reached its maximum number of players.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.game.exceptions.FullGameException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">FullGameException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>FullGameException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">FullGameException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/InvalidBoardTileSelectionException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/InvalidBoardTileSelectionException.html
    new file mode 100644
    index 00000000..0133186d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/InvalidBoardTileSelectionException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>InvalidBoardTileSelectionException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game.exceptions, class: InvalidBoardTileSelectionException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<h1 title="Class InvalidBoardTileSelectionException" class="title">Class InvalidBoardTileSelectionException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.game.exceptions.InvalidBoardTileSelectionException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvalidBoardTileSelectionException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">The TileType given is not inside the enum of possible TileType.
    + Can be used in public methods of <a href="../../items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile"><code>Tile</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.game.exceptions.InvalidBoardTileSelectionException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">InvalidBoardTileSelectionException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>InvalidBoardTileSelectionException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvalidBoardTileSelectionException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/InvalidMaxPlayerException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/InvalidMaxPlayerException.html
    new file mode 100644
    index 00000000..3e8dd8b7
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/InvalidMaxPlayerException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>InvalidMaxPlayerException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game.exceptions, class: InvalidMaxPlayerException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<h1 title="Class InvalidMaxPlayerException" class="title">Class InvalidMaxPlayerException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.game.exceptions.InvalidMaxPlayerException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvalidMaxPlayerException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle invalid max players value.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.game.exceptions.InvalidMaxPlayerException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">InvalidMaxPlayerException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>InvalidMaxPlayerException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvalidMaxPlayerException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/InvalidPlayersNumberException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/InvalidPlayersNumberException.html
    new file mode 100644
    index 00000000..8a944b31
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/InvalidPlayersNumberException.html
    @@ -0,0 +1,165 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>InvalidPlayersNumberException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game.exceptions, class: InvalidPlayersNumberException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<h1 title="Class InvalidPlayersNumberException" class="title">Class InvalidPlayersNumberException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.game.exceptions.InvalidPlayersNumberException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvalidPlayersNumberException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.game.exceptions.InvalidPlayersNumberException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">InvalidPlayersNumberException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>InvalidPlayersNumberException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvalidPlayersNumberException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/NullAssignedPatternException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/NullAssignedPatternException.html
    new file mode 100644
    index 00000000..9fe49129
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/NullAssignedPatternException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullAssignedPatternException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game.exceptions, class: NullAssignedPatternException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<h1 title="Class NullAssignedPatternException" class="title">Class NullAssignedPatternException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullAssignedPatternException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to null pattern instances.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullAssignedPatternException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;type)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullAssignedPatternException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullAssignedPatternException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;type)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/NullMaxPlayerException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/NullMaxPlayerException.html
    new file mode 100644
    index 00000000..5a6b9f76
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/NullMaxPlayerException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullMaxPlayerException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game.exceptions, class: NullMaxPlayerException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<h1 title="Class NullMaxPlayerException" class="title">Class NullMaxPlayerException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.game.exceptions.NullMaxPlayerException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullMaxPlayerException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle null max players value.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.game.exceptions.NullMaxPlayerException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NullMaxPlayerException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NullMaxPlayerException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullMaxPlayerException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/NullPlayerException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/NullPlayerException.html
    new file mode 100644
    index 00000000..20aadc02
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/NullPlayerException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullPlayerException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game.exceptions, class: NullPlayerException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<h1 title="Class NullPlayerException" class="title">Class NullPlayerException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.game.exceptions.NullPlayerException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullPlayerException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle null player value.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.game.exceptions.NullPlayerException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NullPlayerException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NullPlayerException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullPlayerException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/PlayerNotFoundException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/PlayerNotFoundException.html
    new file mode 100644
    index 00000000..e2634ac9
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/PlayerNotFoundException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>PlayerNotFoundException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game.exceptions, class: PlayerNotFoundException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<h1 title="Class PlayerNotFoundException" class="title">Class PlayerNotFoundException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.game.exceptions.PlayerNotFoundException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PlayerNotFoundException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle player not found.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.game.exceptions.PlayerNotFoundException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">PlayerNotFoundException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>PlayerNotFoundException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PlayerNotFoundException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/package-summary.html
    new file mode 100644
    index 00000000..fb00e610
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/package-summary.html
    @@ -0,0 +1,131 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.game.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.game.exceptions" class="title">Package it.polimi.is23am10.server.model.game.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.game.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.model.game</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="FullGameException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">The game reached its maximum number of players.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="InvalidBoardTileSelectionException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidBoardTileSelectionException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">The TileType given is not inside the enum of possible TileType.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="InvalidMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle invalid max players value.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="InvalidPlayersNumberException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidPlayersNumberException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">&nbsp;</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to null pattern instances.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle null max players value.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NullPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullPlayerException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle null player value.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="PlayerNotFoundException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle player not found.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/package-tree.html
    new file mode 100644
    index 00000000..911fb7b5
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/exceptions/package-tree.html
    @@ -0,0 +1,87 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.game.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.game.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.game.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="FullGameException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="InvalidBoardTileSelectionException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidBoardTileSelectionException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="InvalidMaxPlayerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="InvalidPlayersNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidPlayersNumberException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="NullAssignedPatternException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="NullMaxPlayerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="NullPlayerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">NullPlayerException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="PlayerNotFoundException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/package-summary.html
    new file mode 100644
    index 00000000..52cb3f9f
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/package-summary.html
    @@ -0,0 +1,111 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.game</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.game">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.game" class="title">Package it.polimi.is23am10.server.model.game</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.game</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel">
    +<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The Game class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">All the possible status the game can be in.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/game/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/game/package-tree.html
    new file mode 100644
    index 00000000..ca5651bf
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/game/package-tree.html
    @@ -0,0 +1,86 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.game Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.game">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.game</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.game.<a href="Game.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game">Game</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.game.<a href="Game.GameStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/Board.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/Board.html
    new file mode 100644
    index 00000000..11d300cc
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/Board.html
    @@ -0,0 +1,499 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Board</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.board, class: Board">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.board</a></div>
    +<h1 title="Class Board" class="title">Class Board</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.board.Board</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Board</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">Game's board class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.board.Board">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#allowedNumOfPlayers" class="member-name-link">allowedNumOfPlayers</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The allowed player values.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#BOARD_GRID_COLS" class="member-name-link">BOARD_GRID_COLS</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The game board max col value.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#BOARD_GRID_ROWS" class="member-name-link">BOARD_GRID_ROWS</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The game board max row value.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#TILE_TYPE_NUM" class="member-name-link">TILE_TYPE_NUM</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The number of tiles for each <a href="../tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a>.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.items.board.Board)" class="member-name-link">Board</a><wbr>(<a href="Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a>&nbsp;toCopy)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Copy constructor for Board.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer)" class="member-name-link">Board</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;numOfPlayers)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBlackMapAt(java.lang.Integer,java.lang.Integer)" class="member-name-link">getBlackMapAt</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">View the tile in a specific black map position.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>[][]</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBoardGrid()" class="member-name-link">getBoardGrid</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">boardGrid getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTileAt(java.lang.Integer,java.lang.Integer)" class="member-name-link">getTileAt</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">View the tile in a specific board position.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTileFromSack()" class="member-name-link">getTileFromSack</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Extract a tile from the sack.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTileSackSize()" class="member-name-link">getTileSackSize</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieve the number of tiles remained inside the sack.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isRefillNeeded()" class="member-name-link">isRefillNeeded</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Helper method used to determine if the board should be refilled or not.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#refillIfNeeded()" class="member-name-link">refillIfNeeded</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method called at the end of the turn that
    + checks if the Board needs to be refilled
    + and proceeds if so.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#removeTileAt(java.lang.Integer,java.lang.Integer)" class="member-name-link">removeTileAt</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Support method that removes a tile</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#takeTileAt(java.lang.Integer,java.lang.Integer)" class="member-name-link">takeTileAt</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieve the tile in a specific board position.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="allowedNumOfPlayers">
    +<h3>allowedNumOfPlayers</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">allowedNumOfPlayers</span></div>
    +<div class="block">The allowed player values.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BOARD_GRID_ROWS">
    +<h3>BOARD_GRID_ROWS</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">BOARD_GRID_ROWS</span></div>
    +<div class="block">The game board max row value.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BOARD_GRID_COLS">
    +<h3>BOARD_GRID_COLS</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">BOARD_GRID_COLS</span></div>
    +<div class="block">The game board max col value.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="TILE_TYPE_NUM">
    +<h3>TILE_TYPE_NUM</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">TILE_TYPE_NUM</span></div>
    +<div class="block">The number of tiles for each <a href="../tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a>.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.Integer)">
    +<h3>Board</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Board</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;numOfPlayers)</span>
    +      throws <span class="exceptions"><a href="exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a>,
    +<a href="exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>numOfPlayers</code> - The current game instance number of players.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a></code> - If, while adding multiple players, there is an invalid number of them.</dd>
    +<dd><code><a href="exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></code> - If the number of players provided when filling the board is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.items.board.Board)">
    +<h3>Board</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Board</span><wbr><span class="parameters">(<a href="Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a>&nbsp;toCopy)</span></div>
    +<div class="block">Copy constructor for Board.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>toCopy</code> - board to copy</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getTileFromSack()">
    +<h3>getTileFromSack</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></span>&nbsp;<span class="element-name">getTileFromSack</span>()
    +                     throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang" class="external-link">IndexOutOfBoundsException</a></span></div>
    +<div class="block">Extract a tile from the sack.
    + This mutate the sack list.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The extracted tile.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang" class="external-link">IndexOutOfBoundsException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getBoardGrid()">
    +<h3>getBoardGrid</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>[][]</span>&nbsp;<span class="element-name">getBoardGrid</span>()</div>
    +<div class="block">boardGrid getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The board grid.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getTileSackSize()">
    +<h3>getTileSackSize</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getTileSackSize</span>()</div>
    +<div class="block">Retrieve the number of tiles remained inside the sack.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The remained tiles inside the sack.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getTileAt(java.lang.Integer,java.lang.Integer)">
    +<h3>getTileAt</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></span>&nbsp;<span class="element-name">getTileAt</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</span>
    +               throws <span class="exceptions"><a href="exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a>,
    +<a href="exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a>,
    +<a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></span></div>
    +<div class="block">View the tile in a specific board position.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>row</code> - The row index.</dd>
    +<dd><code>col</code> - The column index.</dd>
    +<dt>Returns:</dt>
    +<dd>The requested tile.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></code> - If the board row index is out of bounds.</dd>
    +<dd><code><a href="exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></code> - If the board column index is out of bounds.</dd>
    +<dd><code><a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getBlackMapAt(java.lang.Integer,java.lang.Integer)">
    +<h3>getBlackMapAt</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getBlackMapAt</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</span>
    +                      throws <span class="exceptions"><a href="exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a>,
    +<a href="exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a>,
    +<a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></span></div>
    +<div class="block">View the tile in a specific black map position.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>row</code> - The row index.</dd>
    +<dd><code>col</code> - The column index.</dd>
    +<dt>Returns:</dt>
    +<dd>The black map value.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></code> - If the board row index is out of bounds.</dd>
    +<dd><code><a href="exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></code> - If the board column index is out of bounds.</dd>
    +<dd><code><a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="removeTileAt(java.lang.Integer,java.lang.Integer)">
    +<h3>removeTileAt</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">removeTileAt</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</span>
    +                  throws <span class="exceptions"><a href="exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a>,
    +<a href="exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a>,
    +<a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></span></div>
    +<div class="block">Support method that removes a tile</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>row</code> - row index of removed tile</dd>
    +<dd><code>col</code> - col index of removed tile</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></code> - If the board column index is out of bounds.</dd>
    +<dd><code><a href="exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></code> - If the board row index is out of bounds.</dd>
    +<dd><code><a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="takeTileAt(java.lang.Integer,java.lang.Integer)">
    +<h3>takeTileAt</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></span>&nbsp;<span class="element-name">takeTileAt</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</span>
    +                throws <span class="exceptions"><a href="exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a>,
    +<a href="exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a>,
    +<a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></span></div>
    +<div class="block">Retrieve the tile in a specific board position.
    + This method removes the returned tile from the sack.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>row</code> - The row index.</dd>
    +<dd><code>col</code> - The column index.</dd>
    +<dt>Returns:</dt>
    +<dd>The requested tile.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></code> - If the board row index is out of bounds.</dd>
    +<dd><code><a href="exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></code> - If the board column index is out of bounds.</dd>
    +<dd><code><a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isRefillNeeded()">
    +<h3>isRefillNeeded</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isRefillNeeded</span>()</div>
    +<div class="block">Helper method used to determine if the board should be refilled or not.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>Should board be refilled.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="refillIfNeeded()">
    +<h3>refillIfNeeded</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">refillIfNeeded</span>()
    +                    throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang" class="external-link">IndexOutOfBoundsException</a></span></div>
    +<div class="block">Method called at the end of the turn that
    + checks if the Board needs to be refilled
    + and proceeds if so.</div>
    +<dl class="notes">
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IndexOutOfBoundsException.html" title="class or interface in java.lang" class="external-link">IndexOutOfBoundsException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html
    new file mode 100644
    index 00000000..257f6935
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html
    @@ -0,0 +1,168 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>BoardGridColIndexOutOfBoundsException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.board.exceptions, class: BoardGridColIndexOutOfBoundsException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></div>
    +<h1 title="Class BoardGridColIndexOutOfBoundsException" class="title">Class BoardGridColIndexOutOfBoundsException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="../../../../../utils/exceptions/ColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.ColIndexOutOfBoundsException</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.board.exceptions.BoardGridColIndexOutOfBoundsException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">BoardGridColIndexOutOfBoundsException</span>
    +<span class="extends-implements">extends <a href="../../../../../utils/exceptions/ColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a></span></div>
    +<div class="block">Custom exception to handle board grid out of bounds column values.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.board.exceptions.BoardGridColIndexOutOfBoundsException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer)" class="member-name-link">BoardGridColIndexOutOfBoundsException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.Integer)">
    +<h3>BoardGridColIndexOutOfBoundsException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BoardGridColIndexOutOfBoundsException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html
    new file mode 100644
    index 00000000..bf6eccdc
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html
    @@ -0,0 +1,168 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>BoardGridRowIndexOutOfBoundsException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.board.exceptions, class: BoardGridRowIndexOutOfBoundsException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></div>
    +<h1 title="Class BoardGridRowIndexOutOfBoundsException" class="title">Class BoardGridRowIndexOutOfBoundsException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="../../../../../utils/exceptions/RowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.RowIndexOutOfBoundsException</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.board.exceptions.BoardGridRowIndexOutOfBoundsException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">BoardGridRowIndexOutOfBoundsException</span>
    +<span class="extends-implements">extends <a href="../../../../../utils/exceptions/RowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a></span></div>
    +<div class="block">Custom exception to handle board grid out of bounds row values.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.board.exceptions.BoardGridRowIndexOutOfBoundsException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer)" class="member-name-link">BoardGridRowIndexOutOfBoundsException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.Integer)">
    +<h3>BoardGridRowIndexOutOfBoundsException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BoardGridRowIndexOutOfBoundsException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/InvalidNumOfPlayersException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/InvalidNumOfPlayersException.html
    new file mode 100644
    index 00000000..9f3f1a16
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/InvalidNumOfPlayersException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>InvalidNumOfPlayersException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.board.exceptions, class: InvalidNumOfPlayersException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></div>
    +<h1 title="Class InvalidNumOfPlayersException" class="title">Class InvalidNumOfPlayersException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.board.exceptions.InvalidNumOfPlayersException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvalidNumOfPlayersException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for wrong number of players.
    + initialization.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.board.exceptions.InvalidNumOfPlayersException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer)" class="member-name-link">InvalidNumOfPlayersException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;num)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.Integer)">
    +<h3>InvalidNumOfPlayersException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvalidNumOfPlayersException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;num)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/NullNumOfPlayersException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/NullNumOfPlayersException.html
    new file mode 100644
    index 00000000..55a03a8f
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/NullNumOfPlayersException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullNumOfPlayersException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.board.exceptions, class: NullNumOfPlayersException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></div>
    +<h1 title="Class NullNumOfPlayersException" class="title">Class NullNumOfPlayersException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.board.exceptions.NullNumOfPlayersException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullNumOfPlayersException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for null number of players value.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.board.exceptions.NullNumOfPlayersException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NullNumOfPlayersException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NullNumOfPlayersException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullNumOfPlayersException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html
    new file mode 100644
    index 00000000..7b1a5d75
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html
    @@ -0,0 +1,117 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.board.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.board.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.items.board.exceptions" class="title">Package it.polimi.is23am10.server.model.items.board.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.items.board.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.model.items.board</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle board grid out of bounds column values.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle board grid out of bounds row values.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for wrong number of players.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for null number of players value.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/package-tree.html
    new file mode 100644
    index 00000000..ad8df6c6
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/exceptions/package-tree.html
    @@ -0,0 +1,91 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.board.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.items.board.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.items.board.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="../../../../../utils/exceptions/ColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.board.exceptions.<a href="BoardGridColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.server.model.items.board.exceptions.<a href="InvalidNumOfPlayersException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.board.exceptions.<a href="NullNumOfPlayersException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="../../../../../utils/exceptions/RowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.board.exceptions.<a href="BoardGridRowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/package-summary.html
    new file mode 100644
    index 00000000..7f2ac5d8
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/package-summary.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.board</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.board">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.items.board" class="title">Package it.polimi.is23am10.server.model.items.board</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.items.board</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Game's board class definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/package-tree.html
    new file mode 100644
    index 00000000..37480534
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/board/package-tree.html
    @@ -0,0 +1,72 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.board Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.items.board">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.items.board</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.board.<a href="Board.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board">Board</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html
    new file mode 100644
    index 00000000..3ecfeeb0
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html
    @@ -0,0 +1,447 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Bookshelf</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.bookshelf, class: Bookshelf">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.bookshelf</a></div>
    +<h1 title="Class Bookshelf" class="title">Class Bookshelf</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.bookshelf.Bookshelf</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Bookshelf</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">Players' bookshelf class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.bookshelf.Bookshelf">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final int</code></div>
    +<div class="col-second even-row-color"><code><a href="#BOOKSHELF_COLS" class="member-name-link">BOOKSHELF_COLS</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The bookshelf max columns value.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final int</code></div>
    +<div class="col-second odd-row-color"><code><a href="#BOOKSHELF_ROWS" class="member-name-link">BOOKSHELF_ROWS</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The bookshelf max rows value.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Bookshelf</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor for the Bookshelf instance.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)" class="member-name-link">Bookshelf</a><wbr>(<a href="Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;toCopy)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Copy constructor of Bookshelf.</div>
    +</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">Bookshelf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;bookshelfString)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">This constructor takes a 30 char long string containing the content
    + of a bookshelf, with each tile associated to a letter, as shown below
    + and builds and returns the matching bookshelf object.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>[][]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBookshelfGrid()" class="member-name-link">getBookshelfGrid</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">bookshelfGrid getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBookshelfGridAt(java.lang.Integer,java.lang.Integer)" class="member-name-link">getBookshelfGridAt</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">bookshelfGrid index getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBookshelfString()" class="member-name-link">getBookshelfString</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method used to get a string representation for a bookshelf.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getFreeRowsInCol(int)" class="member-name-link">getFreeRowsInCol</a><wbr>(int&nbsp;column)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieve the number of <a href="../tile/Tile.TileType.html#EMPTY"><code>Tile.TileType.EMPTY</code></a> inside the bookshelf for a
    + given column.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isBookshelfFull()" class="member-name-link">isBookshelfFull</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">This function checks if player's bookshelf is full of tiles.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setBookshelfGridIndex(java.lang.Integer,java.lang.Integer,it.polimi.is23am10.server.model.items.tile.Tile)" class="member-name-link">setBookshelfGridIndex</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col,
    + <a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>&nbsp;tile)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Set a <a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile"><code>Tile</code></a> inside the bookshelf grid.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="BOOKSHELF_ROWS">
    +<h3>BOOKSHELF_ROWS</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">BOOKSHELF_ROWS</span></div>
    +<div class="block">The bookshelf max rows value.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../constant-values.html#it.polimi.is23am10.server.model.items.bookshelf.Bookshelf.BOOKSHELF_ROWS">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BOOKSHELF_COLS">
    +<h3>BOOKSHELF_COLS</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">BOOKSHELF_COLS</span></div>
    +<div class="block">The bookshelf max columns value.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../constant-values.html#it.polimi.is23am10.server.model.items.bookshelf.Bookshelf.BOOKSHELF_COLS">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Bookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Bookshelf</span>()</div>
    +<div class="block">Constructor for the Bookshelf instance.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)">
    +<h3>Bookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Bookshelf</span><wbr><span class="parameters">(<a href="Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;toCopy)</span></div>
    +<div class="block">Copy constructor of Bookshelf.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>toCopy</code> - original instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>Bookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Bookshelf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;bookshelfString)</span>
    +          throws <span class="exceptions"><a href="exceptions/WrongLengthBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongLengthBookshelfStringException</a>,
    +<a href="exceptions/WrongCharBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongCharBookshelfStringException</a>,
    +<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></span></div>
    +<div class="block">This constructor takes a 30 char long string containing the content
    + of a bookshelf, with each tile associated to a letter, as shown below
    + and builds and returns the matching bookshelf object.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>bookshelfString</code> - A string that allows us to fill the bookshelfGrid with
    +                        the
    +                        correspondence between each char and the position in
    +                        the
    +                        grid, there's a map to help us matching the char with
    +                        the <a href="../tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a></dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/WrongLengthBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongLengthBookshelfStringException</a></code> - If when building a bookshelf based on string, it is of an invalid length.</dd>
    +<dd><code><a href="exceptions/WrongCharBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongCharBookshelfStringException</a></code> - If when building a bookshelf based on string, it contains an invalid character.</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - Generic NPE.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getBookshelfString()">
    +<h3>getBookshelfString</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getBookshelfString</span>()</div>
    +<div class="block">Method used to get a string representation for a bookshelf.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>string representation of this bookshelf.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setBookshelfGridIndex(java.lang.Integer,java.lang.Integer,it.polimi.is23am10.server.model.items.tile.Tile)">
    +<h3>setBookshelfGridIndex</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setBookshelfGridIndex</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col,
    + <a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>&nbsp;tile)</span>
    +                           throws <span class="exceptions"><a href="exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a>,
    +<a href="exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a>,
    +<a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a>,
    +<a href="exceptions/NullTileException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a></span></div>
    +<div class="block">Set a <a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile"><code>Tile</code></a> inside the bookshelf grid.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>row</code> - The bookshelf grid row's value.</dd>
    +<dd><code>col</code> - The bookshelf grid col's value.</dd>
    +<dd><code>tile</code> - The tile to be set.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +<dd><code><a href="exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code> - If the bookshelf column index is out of bounds.</dd>
    +<dd><code><a href="exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code> - If the bookshelf row index is out of bounds.</dd>
    +<dd><code><a href="exceptions/NullTileException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a></code> - If tile is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getBookshelfGrid()">
    +<h3>getBookshelfGrid</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>[][]</span>&nbsp;<span class="element-name">getBookshelfGrid</span>()</div>
    +<div class="block">bookshelfGrid getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The bookshelf's 6x5 playground grid.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getBookshelfGridAt(java.lang.Integer,java.lang.Integer)">
    +<h3>getBookshelfGridAt</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></span>&nbsp;<span class="element-name">getBookshelfGridAt</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</span>
    +                        throws <span class="exceptions"><a href="exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a>,
    +<a href="exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a>,
    +<a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></span></div>
    +<div class="block">bookshelfGrid index getter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>row</code> - The bookshelf grid's row value.</dd>
    +<dd><code>col</code> - The bookshelf grid's col value.</dd>
    +<dt>Returns:</dt>
    +<dd>The tile at the given indexes.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +<dd><code><a href="exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code> - If the bookshelf column index is out of bounds.</dd>
    +<dd><code><a href="exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code> - If the bookshelf row index is out of bounds.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isBookshelfFull()">
    +<h3>isBookshelfFull</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isBookshelfFull</span>()</div>
    +<div class="block">This function checks if player's bookshelf is full of tiles.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>True if bookshelf grid is full.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getFreeRowsInCol(int)">
    +<h3>getFreeRowsInCol</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getFreeRowsInCol</span><wbr><span class="parameters">(int&nbsp;column)</span>
    +                     throws <span class="exceptions"><a href="exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a>,
    +<a href="exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a>,
    +<a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></span></div>
    +<div class="block">Retrieve the number of <a href="../tile/Tile.TileType.html#EMPTY"><code>Tile.TileType.EMPTY</code></a> inside the bookshelf for a
    + given column.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>column</code> - The column to be checked</dd>
    +<dt>Returns:</dt>
    +<dd>The number of <a href="../tile/Tile.TileType.html#EMPTY"><code>Tile.TileType.EMPTY</code></a></dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code> - If bookshelf column index is out of bounds.</dd>
    +<dd><code><a href="exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code> - If bookshelf row index is out of bounds.</dd>
    +<dd><code><a href="../../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If index value is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html
    new file mode 100644
    index 00000000..cc674021
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html
    @@ -0,0 +1,168 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>BookshelfGridColIndexOutOfBoundsException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.bookshelf.exceptions, class: BookshelfGridColIndexOutOfBoundsException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></div>
    +<h1 title="Class BookshelfGridColIndexOutOfBoundsException" class="title">Class BookshelfGridColIndexOutOfBoundsException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="../../../../../utils/exceptions/ColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.ColIndexOutOfBoundsException</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">BookshelfGridColIndexOutOfBoundsException</span>
    +<span class="extends-implements">extends <a href="../../../../../utils/exceptions/ColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a></span></div>
    +<div class="block">Custom exception to handle bookshelf grid out of bounds column values.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer)" class="member-name-link">BookshelfGridColIndexOutOfBoundsException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.Integer)">
    +<h3>BookshelfGridColIndexOutOfBoundsException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BookshelfGridColIndexOutOfBoundsException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html
    new file mode 100644
    index 00000000..2ed5a674
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html
    @@ -0,0 +1,168 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>BookshelfGridRowIndexOutOfBoundsException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.bookshelf.exceptions, class: BookshelfGridRowIndexOutOfBoundsException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></div>
    +<h1 title="Class BookshelfGridRowIndexOutOfBoundsException" class="title">Class BookshelfGridRowIndexOutOfBoundsException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance"><a href="../../../../../utils/exceptions/RowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.RowIndexOutOfBoundsException</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">BookshelfGridRowIndexOutOfBoundsException</span>
    +<span class="extends-implements">extends <a href="../../../../../utils/exceptions/RowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a></span></div>
    +<div class="block">Custom exception to handle bookshelf grid out of bounds row values.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer)" class="member-name-link">BookshelfGridRowIndexOutOfBoundsException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.Integer)">
    +<h3>BookshelfGridRowIndexOutOfBoundsException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">BookshelfGridRowIndexOutOfBoundsException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/NullTileException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/NullTileException.html
    new file mode 100644
    index 00000000..0aad2862
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/NullTileException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullTileException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.bookshelf.exceptions, class: NullTileException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></div>
    +<h1 title="Class NullTileException" class="title">Class NullTileException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.bookshelf.exceptions.NullTileException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullTileException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Null Tile exception.
    + Can be used public methods of <a href="../Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf"><code>Bookshelf</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.bookshelf.exceptions.NullTileException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullTileException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullTileException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullTileException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongCharBookshelfStringException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongCharBookshelfStringException.html
    new file mode 100644
    index 00000000..db8f83cc
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongCharBookshelfStringException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>WrongCharBookshelfStringException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.bookshelf.exceptions, class: WrongCharBookshelfStringException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></div>
    +<h1 title="Class WrongCharBookshelfStringException" class="title">Class WrongCharBookshelfStringException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongCharBookshelfStringException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WrongCharBookshelfStringException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">One char in the bookshelfString is not among the possibles <a href="../../tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a>
    + Can be used public methods of <a href="../Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf"><code>Bookshelf</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongCharBookshelfStringException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">WrongCharBookshelfStringException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>WrongCharBookshelfStringException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WrongCharBookshelfStringException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongLengthBookshelfStringException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongLengthBookshelfStringException.html
    new file mode 100644
    index 00000000..a0500ee7
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongLengthBookshelfStringException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>WrongLengthBookshelfStringException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.bookshelf.exceptions, class: WrongLengthBookshelfStringException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></div>
    +<h1 title="Class WrongLengthBookshelfStringException" class="title">Class WrongLengthBookshelfStringException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongLengthBookshelfStringException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WrongLengthBookshelfStringException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">bookshelfString given to the constructor has wrong length
    + Can be used public methods of <a href="../Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf"><code>Bookshelf</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongLengthBookshelfStringException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">WrongLengthBookshelfStringException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>WrongLengthBookshelfStringException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WrongLengthBookshelfStringException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html
    new file mode 100644
    index 00000000..650c986e
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html
    @@ -0,0 +1,123 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.bookshelf.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.bookshelf.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.items.bookshelf.exceptions" class="title">Package it.polimi.is23am10.server.model.items.bookshelf.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.items.bookshelf.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.model.items.bookshelf</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle bookshelf grid out of bounds column values.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle bookshelf grid out of bounds row values.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NullTileException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Null Tile exception.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="WrongCharBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongCharBookshelfStringException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">One char in the bookshelfString is not among the possibles <a href="../../tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a>
    + Can be used public methods of <a href="../Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf"><code>Bookshelf</code></a>.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="WrongLengthBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongLengthBookshelfStringException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">bookshelfString given to the constructor has wrong length
    + Can be used public methods of <a href="../Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf"><code>Bookshelf</code></a>.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-tree.html
    new file mode 100644
    index 00000000..4e726b7d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-tree.html
    @@ -0,0 +1,92 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.bookshelf.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.items.bookshelf.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.items.bookshelf.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="../../../../../utils/exceptions/ColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="BookshelfGridColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="NullTileException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="../../../../../utils/exceptions/RowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="BookshelfGridRowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="WrongCharBookshelfStringException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongCharBookshelfStringException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="WrongLengthBookshelfStringException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongLengthBookshelfStringException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/package-summary.html
    new file mode 100644
    index 00000000..c0741c3e
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/package-summary.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.bookshelf</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.bookshelf">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.items.bookshelf" class="title">Package it.polimi.is23am10.server.model.items.bookshelf</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.items.bookshelf</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Players' bookshelf class definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/package-tree.html
    new file mode 100644
    index 00000000..9828ee67
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/bookshelf/package-tree.html
    @@ -0,0 +1,72 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.bookshelf Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.items.bookshelf">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.items.bookshelf</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.<a href="Bookshelf.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/AbstractCard.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/AbstractCard.html
    new file mode 100644
    index 00000000..42c9a014
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/AbstractCard.html
    @@ -0,0 +1,198 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AbstractCard</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.card, class: AbstractCard">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.card</a></div>
    +<h1 title="Class AbstractCard" class="title">Class AbstractCard&lt;R,<wbr>T extends <a href="../../pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;R&gt;&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.card.AbstractCard&lt;R,<wbr>T&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></code>, <code><a href="SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">AbstractCard&lt;R,<wbr>T extends <a href="../../pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;R&gt;&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">Abstract card object.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.card.AbstractCard">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">AbstractCard</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="AbstractCard.html" title="type parameter in AbstractCard">T</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPattern()" class="member-name-link">getPattern</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Pattern getter.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>AbstractCard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AbstractCard</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getPattern()">
    +<h3>getPattern</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="AbstractCard.html" title="type parameter in AbstractCard">T</a></span>&nbsp;<span class="element-name">getPattern</span>()</div>
    +<div class="block">Pattern getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The instance pattern.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/PrivateCard.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/PrivateCard.html
    new file mode 100644
    index 00000000..d0968bb9
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/PrivateCard.html
    @@ -0,0 +1,244 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>PrivateCard</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.card, class: PrivateCard">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.card</a></div>
    +<h1 title="Class PrivateCard" class="title">Class PrivateCard</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">it.polimi.is23am10.server.model.items.card.AbstractCard</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;,<wbr><a href="../../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt;
    +<div class="inheritance">it.polimi.is23am10.server.model.items.card.PrivateCard</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PrivateCard</span>
    +<span class="extends-implements">extends <a href="AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;,<wbr><a href="../../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt;</span></div>
    +<div class="block">Private card class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.card.PrivateCard">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">PrivateCard</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Empty constructor.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.util.List)" class="member-name-link">PrivateCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt;&nbsp;usedPrivatePatterns)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMatchedBlocksCount()" class="member-name-link">getMatchedBlocksCount</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">matchedBlocksCount getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setMatchedBlocksCount(java.lang.Integer)" class="member-name-link">setMatchedBlocksCount</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;matchedBlocksCount)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">matchedBlocksCount setter.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.model.items.card.AbstractCard">Methods inherited from class&nbsp;it.polimi.is23am10.server.model.items.card.<a href="AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a></h3>
    +<code><a href="AbstractCard.html#getPattern()">getPattern</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.List)">
    +<h3>PrivateCard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PrivateCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt;&nbsp;usedPrivatePatterns)</span>
    +            throws <span class="exceptions"><a href="exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>usedPrivatePatterns</code> - is a list of PrivatePattern used to store the
    +                            already
    +                            used one.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></code> - If assigning a pattern to a card that already has one.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>PrivateCard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PrivateCard</span>()</div>
    +<div class="block">Empty constructor. To be used when obscuring private card
    + of other players when sending game updates</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="setMatchedBlocksCount(java.lang.Integer)">
    +<h3>setMatchedBlocksCount</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setMatchedBlocksCount</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;matchedBlocksCount)</span>
    +                           throws <span class="exceptions"><a href="exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a>,
    +<a href="exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></span></div>
    +<div class="block">matchedBlocksCount setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>matchedBlocksCount</code> - The value about how many matches the played has
    +                           achieved inside his/her private card.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a></code> - If the number of matched blocks to set is null.</dd>
    +<dd><code><a href="exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></code> - If the number of matched blocks to set is negative.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMatchedBlocksCount()">
    +<h3>getMatchedBlocksCount</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getMatchedBlocksCount</span>()</div>
    +<div class="block">matchedBlocksCount getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The value of matched blocks inside the user private card.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/SharedCard.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/SharedCard.html
    new file mode 100644
    index 00000000..dace72a4
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/SharedCard.html
    @@ -0,0 +1,267 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>SharedCard</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.card, class: SharedCard">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.card</a></div>
    +<h1 title="Class SharedCard" class="title">Class SharedCard</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">it.polimi.is23am10.server.model.items.card.AbstractCard</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;,<wbr><a href="../../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&gt;
    +<div class="inheritance">it.polimi.is23am10.server.model.items.card.SharedCard</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SharedCard</span>
    +<span class="extends-implements">extends <a href="AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;,<wbr><a href="../../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&gt;</span></div>
    +<div class="block">Shared card object.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.card.SharedCard">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.List,java.lang.Integer)" class="member-name-link">SharedCard</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&gt;&nbsp;usedSharedPatterns,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;numPlayers)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addCardWinner(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">addCardWinner</a><wbr>(<a href="../../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method used to add a player to the winner array.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCardWinners()" class="member-name-link">getCardWinners</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">cardWinners getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScoreBlocks()" class="member-name-link">getScoreBlocks</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">scoreBlocks getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setScoreBlocks(java.util.List)" class="member-name-link">setScoreBlocks</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt;&nbsp;scoreBlockList)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">ScoreBlocks setter.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.model.items.card.AbstractCard">Methods inherited from class&nbsp;it.polimi.is23am10.server.model.items.card.<a href="AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a></h3>
    +<code><a href="AbstractCard.html#getPattern()">getPattern</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.List,java.lang.Integer)">
    +<h3>SharedCard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SharedCard</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="../bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&gt;&nbsp;usedSharedPatterns,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;numPlayers)</span>
    +           throws <span class="exceptions"><a href="exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a>,
    +<a href="../scoreblock/exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>usedSharedPatterns</code> - is a list of SharedPattern used to store the already
    +                     used.</dd>
    +<dd><code>numPlayers</code> - the number of players in the game.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></code> - If assigning a pattern to a card that already has one.</dd>
    +<dd><code><a href="../scoreblock/exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="setScoreBlocks(java.util.List)">
    +<h3>setScoreBlocks</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setScoreBlocks</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt;&nbsp;scoreBlockList)</span>
    +                    throws <span class="exceptions"><a href="exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></span></div>
    +<div class="block">ScoreBlocks setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>scoreBlockList</code> - The score block list.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></code> - If the list of scoreblocks is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getScoreBlocks()">
    +<h3>getScoreBlocks</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt;</span>&nbsp;<span class="element-name">getScoreBlocks</span>()</div>
    +<div class="block">scoreBlocks getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The current score block points assigned to this card instance.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCardWinners()">
    +<h3>getCardWinners</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&gt;</span>&nbsp;<span class="element-name">getCardWinners</span>()</div>
    +<div class="block">cardWinners getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The list of player who got a SB from this card.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="addCardWinner(it.polimi.is23am10.server.model.player.Player)">
    +<h3>addCardWinner</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addCardWinner</span><wbr><span class="parameters">(<a href="../../player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</span></div>
    +<div class="block">Method used to add a player to the winner array.
    + When a player is added it's not allowed to take
    + another scoreblock from this card.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>player</code> - the player to add to array</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/AlreadyInitiatedPatternException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/AlreadyInitiatedPatternException.html
    new file mode 100644
    index 00000000..7cdd67f3
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/AlreadyInitiatedPatternException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AlreadyInitiatedPatternException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.card.exceptions, class: AlreadyInitiatedPatternException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></div>
    +<h1 title="Class AlreadyInitiatedPatternException" class="title">Class AlreadyInitiatedPatternException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">AlreadyInitiatedPatternException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for duplicate <a href="../AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card"><code>AbstractCard</code></a> <a href="../../../pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>AbstractPattern</code></a>
    + initialization.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">AlreadyInitiatedPatternException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>AlreadyInitiatedPatternException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AlreadyInitiatedPatternException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/NegativeMatchedBlockCountException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/NegativeMatchedBlockCountException.html
    new file mode 100644
    index 00000000..0af76efb
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/NegativeMatchedBlockCountException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NegativeMatchedBlockCountException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.card.exceptions, class: NegativeMatchedBlockCountException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></div>
    +<h1 title="Class NegativeMatchedBlockCountException" class="title">Class NegativeMatchedBlockCountException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.card.exceptions.NegativeMatchedBlockCountException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NegativeMatchedBlockCountException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for negative matched block count Integer.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.card.exceptions.NegativeMatchedBlockCountException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NegativeMatchedBlockCountException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NegativeMatchedBlockCountException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NegativeMatchedBlockCountException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/NullMatchedBlockCountException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/NullMatchedBlockCountException.html
    new file mode 100644
    index 00000000..896a23f8
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/NullMatchedBlockCountException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullMatchedBlockCountException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.card.exceptions, class: NullMatchedBlockCountException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></div>
    +<h1 title="Class NullMatchedBlockCountException" class="title">Class NullMatchedBlockCountException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.card.exceptions.NullMatchedBlockCountException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullMatchedBlockCountException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for null matched block count Integer.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.card.exceptions.NullMatchedBlockCountException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullMatchedBlockCountException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullMatchedBlockCountException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullMatchedBlockCountException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/NullScoreBlockListException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/NullScoreBlockListException.html
    new file mode 100644
    index 00000000..54bc31e9
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/NullScoreBlockListException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullScoreBlockListException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.card.exceptions, class: NullScoreBlockListException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></div>
    +<h1 title="Class NullScoreBlockListException" class="title">Class NullScoreBlockListException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.card.exceptions.NullScoreBlockListException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullScoreBlockListException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for null score blocks list instance.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.card.exceptions.NullScoreBlockListException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullScoreBlockListException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullScoreBlockListException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullScoreBlockListException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html
    new file mode 100644
    index 00000000..5f290885
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html
    @@ -0,0 +1,118 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.card.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.card.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.items.card.exceptions" class="title">Package it.polimi.is23am10.server.model.items.card.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.items.card.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.model.items.card</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for duplicate <a href="../AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card"><code>AbstractCard</code></a> <a href="../../../pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>AbstractPattern</code></a>
    + initialization.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for negative matched block count Integer.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for null matched block count Integer.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for null score blocks list instance.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/package-tree.html
    new file mode 100644
    index 00000000..ecebf8ab
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/exceptions/package-tree.html
    @@ -0,0 +1,83 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.card.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.items.card.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.items.card.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.exceptions.<a href="AlreadyInitiatedPatternException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.exceptions.<a href="NegativeMatchedBlockCountException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.exceptions.<a href="NullMatchedBlockCountException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.exceptions.<a href="NullScoreBlockListException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/package-summary.html
    new file mode 100644
    index 00000000..8d033903
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/package-summary.html
    @@ -0,0 +1,113 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.card</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.card">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.items.card" class="title">Package it.polimi.is23am10.server.model.items.card</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.items.card</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a>&lt;R,<wbr>T extends <a href="../../pattern/AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;R&gt;&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Abstract card object.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Private card class definition.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Shared card object.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/package-tree.html
    new file mode 100644
    index 00000000..3289ce9b
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/card/package-tree.html
    @@ -0,0 +1,77 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.card Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.items.card">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.items.card</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.<a href="AbstractCard.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a>&lt;R,<wbr>T&gt; (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.<a href="PrivateCard.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.<a href="SharedCard.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html
    new file mode 100644
    index 00000000..8e88218e
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html
    @@ -0,0 +1,228 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ScoreBlock</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.scoreblock, class: ScoreBlock">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.scoreblock</a></div>
    +<h1 title="Class ScoreBlock" class="title">Class ScoreBlock</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ScoreBlock</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">ScoreBlock class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer)" class="member-name-link">ScoreBlock</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;score)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScore()" class="member-name-link">getScore</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">score getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.Integer)">
    +<h3>ScoreBlock</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ScoreBlock</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;score)</span>
    +           throws <span class="exceptions"><a href="exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></code> - If the value assigned to a scoreblock is not valid.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getScore()">
    +<h3>getScore</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getScore</span>()</div>
    +<div class="block">score getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The score value associated with this instance.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html
    new file mode 100644
    index 00000000..fe60d6c7
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NotValidScoreBlockValueException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.scoreblock.exceptions, class: NotValidScoreBlockValueException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.scoreblock.exceptions</a></div>
    +<h1 title="Class NotValidScoreBlockValueException" class="title">Class NotValidScoreBlockValueException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NotValidScoreBlockValueException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for not valid score block value.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NotValidScoreBlockValueException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NotValidScoreBlockValueException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NotValidScoreBlockValueException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-summary.html
    new file mode 100644
    index 00000000..0da2efed
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-summary.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.scoreblock.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.scoreblock.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.items.scoreblock.exceptions" class="title">Package it.polimi.is23am10.server.model.items.scoreblock.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.items.scoreblock.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.model.items.scoreblock</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for not valid score block value.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-tree.html
    new file mode 100644
    index 00000000..cebc7563
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-tree.html
    @@ -0,0 +1,80 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.scoreblock.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.items.scoreblock.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.items.scoreblock.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.scoreblock.exceptions.<a href="NotValidScoreBlockValueException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/package-summary.html
    new file mode 100644
    index 00000000..c8dfb37d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/package-summary.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.scoreblock</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.scoreblock">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.items.scoreblock" class="title">Package it.polimi.is23am10.server.model.items.scoreblock</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.items.scoreblock</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">ScoreBlock class definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/package-tree.html
    new file mode 100644
    index 00000000..fab5c028
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/scoreblock/package-tree.html
    @@ -0,0 +1,72 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.scoreblock Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.items.scoreblock">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.items.scoreblock</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.scoreblock.<a href="ScoreBlock.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/Tile.TileType.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/Tile.TileType.html
    new file mode 100644
    index 00000000..6c9669b7
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/Tile.TileType.html
    @@ -0,0 +1,277 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Tile.TileType</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.tile, class: Tile, enum: TileType">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#enum-constant-summary">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#enum-constant-detail">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.tile</a></div>
    +<h1 title="Enum Class Tile.TileType" class="title">Enum Class Tile.TileType</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a>&gt;
    +<div class="inheritance">it.polimi.is23am10.server.model.items.tile.Tile.TileType</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><code><a href="Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">Tile.TileType</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a>&gt;</span></div>
    +<div class="block">An enumeration about the available tile types.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#BOOK" class="member-name-link">BOOK</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#CAT" class="member-name-link">CAT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#EMPTY" class="member-name-link">EMPTY</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#FRAME" class="member-name-link">FRAME</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#GAME" class="member-name-link">GAME</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#PLANT" class="member-name-link">PLANT</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#TROPHY" class="member-name-link">TROPHY</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="CAT">
    +<h3>CAT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></span>&nbsp;<span class="element-name">CAT</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="BOOK">
    +<h3>BOOK</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></span>&nbsp;<span class="element-name">BOOK</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="GAME">
    +<h3>GAME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></span>&nbsp;<span class="element-name">GAME</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="FRAME">
    +<h3>FRAME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></span>&nbsp;<span class="element-name">FRAME</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="TROPHY">
    +<h3>TROPHY</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></span>&nbsp;<span class="element-name">TROPHY</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="PLANT">
    +<h3>PLANT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></span>&nbsp;<span class="element-name">PLANT</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="EMPTY">
    +<h3>EMPTY</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></span>&nbsp;<span class="element-name">EMPTY</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/Tile.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/Tile.html
    new file mode 100644
    index 00000000..c157710c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/Tile.html
    @@ -0,0 +1,297 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Tile</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.tile, class: Tile">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.items.tile</a></div>
    +<h1 title="Class Tile" class="title">Class Tile</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.items.tile.Tile</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Tile</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">The tile class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.items.tile.Tile">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="Tile.TileType.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">An enumeration about the available tile types.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.items.tile.Tile)" class="member-name-link">Tile</a><wbr>(<a href="Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>&nbsp;toCopy)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Copy constructor for Tile.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.items.tile.Tile.TileType)" class="member-name-link">Tile</a><wbr>(<a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a>&nbsp;type)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">}</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getType()" class="member-name-link">getType</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">type getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">}</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isEmpty()" class="member-name-link">isEmpty</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method that checks if the Tile's <a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a> is EMPTY or not.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setTile(it.polimi.is23am10.server.model.items.tile.Tile.TileType)" class="member-name-link">setTile</a><wbr>(<a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a>&nbsp;tt)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The method that allows us to manually change the type of a specific Tile.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.items.tile.Tile.TileType)">
    +<h3>Tile</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Tile</span><wbr><span class="parameters">(<a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a>&nbsp;type)</span></div>
    +<div class="block">Constructor.
    + If the desired type has null value, an empty tile will be set.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.items.tile.Tile)">
    +<h3>Tile</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Tile</span><wbr><span class="parameters">(<a href="Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>&nbsp;toCopy)</span></div>
    +<div class="block">Copy constructor for Tile.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>toCopy</code> - tile to copy</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getType()">
    +<h3>getType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></span>&nbsp;<span class="element-name">getType</span>()</div>
    +<div class="block">type getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The type of the current Tile instance.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setTile(it.polimi.is23am10.server.model.items.tile.Tile.TileType)">
    +<h3>setTile</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setTile</span><wbr><span class="parameters">(<a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a>&nbsp;tt)</span>
    +             throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></span></div>
    +<div class="block">The method that allows us to manually change the type of a specific Tile.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>tt</code> - The tile type we want to set for the tile.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - Generic NPE.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<div class="block">}</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<div class="block">}</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="isEmpty()">
    +<h3>isEmpty</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isEmpty</span>()</div>
    +<div class="block">Method that checks if the Tile's <a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile"><code>Tile.TileType</code></a> is EMPTY or not.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>True if the tile has <a href="Tile.TileType.html#EMPTY"><code>Tile.TileType.EMPTY</code></a>.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/package-summary.html
    new file mode 100644
    index 00000000..d7bfa25a
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/package-summary.html
    @@ -0,0 +1,100 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.tile</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.items.tile">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li>Related Packages</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.items.tile" class="title">Package it.polimi.is23am10.server.model.items.tile</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.items.tile</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel">
    +<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The tile class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">An enumeration about the available tile types.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/package-tree.html
    new file mode 100644
    index 00000000..25fd6839
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/items/tile/package-tree.html
    @@ -0,0 +1,86 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.items.tile Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.items.tile">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.items.tile</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.tile.<a href="Tile.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.tile.<a href="Tile.TileType.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/AbstractPattern.html b/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/AbstractPattern.html
    new file mode 100644
    index 00000000..345cd715
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/AbstractPattern.html
    @@ -0,0 +1,174 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AbstractPattern</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.pattern, class: AbstractPattern">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.pattern</a></div>
    +<h1 title="Class AbstractPattern" class="title">Class AbstractPattern&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.pattern.AbstractPattern&lt;T&gt;</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a></code>, <code><a href="SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">AbstractPattern&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Abstract pattern object.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getIndex()" class="member-name-link">getIndex</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">CardIndex getter</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="AbstractPattern.html" title="type parameter in AbstractPattern">T</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRule()" class="member-name-link">getRule</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Rule getter.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getRule()">
    +<h3>getRule</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="AbstractPattern.html" title="type parameter in AbstractPattern">T</a></span>&nbsp;<span class="element-name">getRule</span>()</div>
    +<div class="block">Rule getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The rule function.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getIndex()">
    +<h3>getIndex</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getIndex</span>()</div>
    +<div class="block">CardIndex getter</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The index</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/PrivatePattern.html b/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/PrivatePattern.html
    new file mode 100644
    index 00000000..4d1cb33e
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/PrivatePattern.html
    @@ -0,0 +1,206 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>PrivatePattern</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.pattern, class: PrivatePattern">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.pattern</a></div>
    +<h1 title="Class PrivatePattern" class="title">Class PrivatePattern&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">it.polimi.is23am10.server.model.pattern.AbstractPattern</a>&lt;T&gt;
    +<div class="inheritance">it.polimi.is23am10.server.model.pattern.PrivatePattern&lt;T&gt;</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PrivatePattern&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;T&gt;</span></div>
    +<div class="block">Private pattern object.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(T,java.lang.Integer)" class="member-name-link">PrivatePattern</a><wbr>(<a href="PrivatePattern.html" title="type parameter in PrivatePattern">T</a>&nbsp;rule,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;cardIndex)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The constructor of the class PrivatePattern.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.model.pattern.AbstractPattern">Methods inherited from class&nbsp;it.polimi.is23am10.server.model.pattern.<a href="AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a></h3>
    +<code><a href="AbstractPattern.html#getIndex()">getIndex</a>, <a href="AbstractPattern.html#getRule()">getRule</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(T,java.lang.Integer)">
    +<h3 id="&lt;init&gt;(java.lang.Object,java.lang.Integer)">PrivatePattern</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PrivatePattern</span><wbr><span class="parameters">(<a href="PrivatePattern.html" title="type parameter in PrivatePattern">T</a>&nbsp;rule,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;cardIndex)</span></div>
    +<div class="block">The constructor of the class PrivatePattern.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>rule</code> - a function that takes a Bookshelf object and returns an Integer.</dd>
    +<dd><code>cardIndex</code> - The card index associated</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/SharedPattern.html b/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/SharedPattern.html
    new file mode 100644
    index 00000000..3969f7b7
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/SharedPattern.html
    @@ -0,0 +1,201 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>SharedPattern</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.pattern, class: SharedPattern">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.pattern</a></div>
    +<h1 title="Class SharedPattern" class="title">Class SharedPattern&lt;T&gt;</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">it.polimi.is23am10.server.model.pattern.AbstractPattern</a>&lt;T&gt;
    +<div class="inheritance">it.polimi.is23am10.server.model.pattern.SharedPattern&lt;T&gt;</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SharedPattern&lt;T&gt;</span>
    +<span class="extends-implements">extends <a href="AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;T&gt;</span></div>
    +<div class="block">Shared pattern object.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(T,java.lang.Integer)" class="member-name-link">SharedPattern</a><wbr>(<a href="SharedPattern.html" title="type parameter in SharedPattern">T</a>&nbsp;rule,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;cardIndex)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The constructor of the class SharedPattern.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.model.pattern.AbstractPattern">Methods inherited from class&nbsp;it.polimi.is23am10.server.model.pattern.<a href="AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a></h3>
    +<code><a href="AbstractPattern.html#getIndex()">getIndex</a>, <a href="AbstractPattern.html#getRule()">getRule</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(T,java.lang.Integer)">
    +<h3 id="&lt;init&gt;(java.lang.Object,java.lang.Integer)">SharedPattern</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SharedPattern</span><wbr><span class="parameters">(<a href="SharedPattern.html" title="type parameter in SharedPattern">T</a>&nbsp;rule,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;cardIndex)</span></div>
    +<div class="block">The constructor of the class SharedPattern.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/package-summary.html
    new file mode 100644
    index 00000000..1d73d2fd
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/package-summary.html
    @@ -0,0 +1,102 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.pattern</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.pattern">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li>Related Packages</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.pattern" class="title">Package it.polimi.is23am10.server.model.pattern</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.pattern</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractPattern.html" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Abstract pattern object.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;T&gt;</div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Private pattern object.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;T&gt;</div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Shared pattern object.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/package-tree.html
    new file mode 100644
    index 00000000..a6a7c2f7
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/pattern/package-tree.html
    @@ -0,0 +1,77 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.pattern Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.pattern">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.pattern</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.pattern.<a href="AbstractPattern.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;T&gt;
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.pattern.<a href="PrivatePattern.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;T&gt;</li>
    +<li class="circle">it.polimi.is23am10.server.model.pattern.<a href="SharedPattern.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;T&gt;</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/Player.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/Player.html
    new file mode 100644
    index 00000000..c006ceff
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/Player.html
    @@ -0,0 +1,547 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Player</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.player, class: Player">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.player</a></div>
    +<h1 title="Class Player" class="title">Class Player</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.player.Player</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Player</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">The Player class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.model.player.Player">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Player</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor for Player class.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">Player</a><wbr>(<a href="Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Copy constructor for Player class.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addScoreBlock(it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock)" class="member-name-link">addScoreBlock</a><wbr>(<a href="../items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&nbsp;scoreBlock)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method to add a scoreblock to the player.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBookshelf()" class="member-name-link">getBookshelf</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">bookshelf getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getIsActivePlayer()" class="member-name-link">getIsActivePlayer</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter of active player status.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getIsConnected()" class="member-name-link">getIsConnected</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter of connected status.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerID()" class="member-name-link">getPlayerID</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">playerId getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerName()" class="member-name-link">getPlayerName</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">playerName getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPrivateCard()" class="member-name-link">getPrivateCard</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">privateCard getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScore()" class="member-name-link">getScore</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">score getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScoreBlocks()" class="member-name-link">getScoreBlocks</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">scoreBlocks getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setBookshelf(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)" class="member-name-link">setBookshelf</a><wbr>(<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bookshelf)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">bookshelf setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setIsActivePlayer(boolean)" class="member-name-link">setIsActivePlayer</a><wbr>(boolean&nbsp;status)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Setter of active player status.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setIsConnected(boolean)" class="member-name-link">setIsConnected</a><wbr>(boolean&nbsp;status)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Setter of connected status.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setPlayerID(java.util.UUID)" class="member-name-link">setPlayerID</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;playerId)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">playerId setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setPlayerName(java.lang.String)" class="member-name-link">setPlayerName</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">playerName setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setPrivateCard(it.polimi.is23am10.server.model.items.card.PrivateCard)" class="member-name-link">setPrivateCard</a><wbr>(<a href="../items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a>&nbsp;privateCard)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">privateCard setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setScore(it.polimi.is23am10.server.model.score.Score)" class="member-name-link">setScore</a><wbr>(<a href="../score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a>&nbsp;score)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">score setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setScoreBlocks(java.util.List)" class="member-name-link">setScoreBlocks</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt;&nbsp;scoreBlocks)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">scoreBlocks setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateScore()" class="member-name-link">updateScore</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Function to be called by <a href="../game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> at the end of Player's turn.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.player.Player)">
    +<h3>Player</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Player</span><wbr><span class="parameters">(<a href="Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</span></div>
    +<div class="block">Copy constructor for Player class.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>player</code> - The player object to be copied.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Player</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Player</span>()</div>
    +<div class="block">Constructor for Player class.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="setPlayerID(java.util.UUID)">
    +<h3>setPlayerID</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPlayerID</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;playerId)</span>
    +                 throws <span class="exceptions"><a href="exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></span></div>
    +<div class="block">playerId setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerId</code> - The player id.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setPlayerName(java.lang.String)">
    +<h3>setPlayerName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPlayerName</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;playerName)</span>
    +                   throws <span class="exceptions"><a href="exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></span></div>
    +<div class="block">playerName setter.
    + The <a href="../factory/PlayerFactory.html" title="class in it.polimi.is23am10.server.model.factory"><code>PlayerFactory</code></a> has the ownership to guarantee the uniqueness of
    + this
    + name in a game instance.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerName</code> - The player name.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setScore(it.polimi.is23am10.server.model.score.Score)">
    +<h3>setScore</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setScore</span><wbr><span class="parameters">(<a href="../score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a>&nbsp;score)</span>
    +              throws <span class="exceptions"><a href="exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></span></div>
    +<div class="block">score setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>score</code> - The score.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setBookshelf(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)">
    +<h3>setBookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setBookshelf</span><wbr><span class="parameters">(<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bookshelf)</span>
    +                  throws <span class="exceptions"><a href="exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></span></div>
    +<div class="block">bookshelf setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>bookshelf</code> - The bookshelf.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setPrivateCard(it.polimi.is23am10.server.model.items.card.PrivateCard)">
    +<h3>setPrivateCard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPrivateCard</span><wbr><span class="parameters">(<a href="../items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a>&nbsp;privateCard)</span>
    +                    throws <span class="exceptions"><a href="exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></span></div>
    +<div class="block">privateCard setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>privateCard</code> - The private card.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setScoreBlocks(java.util.List)">
    +<h3>setScoreBlocks</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setScoreBlocks</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt;&nbsp;scoreBlocks)</span>
    +                    throws <span class="exceptions"><a href="exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></span></div>
    +<div class="block">scoreBlocks setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>scoreBlocks</code> - The score blocks list.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="addScoreBlock(it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock)">
    +<h3>addScoreBlock</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addScoreBlock</span><wbr><span class="parameters">(<a href="../items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&nbsp;scoreBlock)</span></div>
    +<div class="block">Method to add a scoreblock to the player.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>scoreBlock</code> - The scoreblock to add.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayerID()">
    +<h3>getPlayerID</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></span>&nbsp;<span class="element-name">getPlayerID</span>()</div>
    +<div class="block">playerId getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The player's id.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayerName()">
    +<h3>getPlayerName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getPlayerName</span>()</div>
    +<div class="block">playerName getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The player's name.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getScore()">
    +<h3>getScore</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></span>&nbsp;<span class="element-name">getScore</span>()</div>
    +<div class="block">score getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The player's score.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getBookshelf()">
    +<h3>getBookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></span>&nbsp;<span class="element-name">getBookshelf</span>()</div>
    +<div class="block">bookshelf getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The player's bookshelf.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPrivateCard()">
    +<h3>getPrivateCard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></span>&nbsp;<span class="element-name">getPrivateCard</span>()</div>
    +<div class="block">privateCard getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The player's private card.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getScoreBlocks()">
    +<h3>getScoreBlocks</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt;</span>&nbsp;<span class="element-name">getScoreBlocks</span>()</div>
    +<div class="block">scoreBlocks getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The player's score blocks list.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="updateScore()">
    +<h3>updateScore</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateScore</span>()
    +                 throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a>,
    +<a href="../items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a>,
    +<a href="../items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a>,
    +<a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a>,
    +<a href="exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a>,
    +<a href="../items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a>,
    +<a href="../items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a>,
    +<a href="../items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></span></div>
    +<div class="block">Function to be called by <a href="../game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> at the end of Player's turn.
    + Updates its scores passing their score-giving objects to specific methods.</div>
    +<dl class="notes">
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - Generic NPE.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code> - If the bookshelf column index is out of bounds.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code> - If the bookshelf row index is out of bounds.</dd>
    +<dd><code><a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +<dd><code><a href="exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></code> - If bookshelf is null.</dd>
    +<dd><code><a href="../items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></code> - If the list of scoreblocks is null.</dd>
    +<dd><code><a href="../items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></code> - If the number of matched blocks to set is negative.</dd>
    +<dd><code><a href="../items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a></code> - If the number of matched blocks to set is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setIsConnected(boolean)">
    +<h3>setIsConnected</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setIsConnected</span><wbr><span class="parameters">(boolean&nbsp;status)</span></div>
    +<div class="block">Setter of connected status.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>status</code> - status of player connection.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getIsConnected()">
    +<h3>getIsConnected</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getIsConnected</span>()</div>
    +<div class="block">Getter of connected status.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>status of player connection.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setIsActivePlayer(boolean)">
    +<h3>setIsActivePlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setIsActivePlayer</span><wbr><span class="parameters">(boolean&nbsp;status)</span></div>
    +<div class="block">Setter of active player status.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>status</code> - status of player.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getIsActivePlayer()">
    +<h3>getIsActivePlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getIsActivePlayer</span>()</div>
    +<div class="block">Getter of active player status.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>status of player .</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerBookshelfException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerBookshelfException.html
    new file mode 100644
    index 00000000..100212f4
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerBookshelfException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullPlayerBookshelfException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.player.exceptions, class: NullPlayerBookshelfException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></div>
    +<h1 title="Class NullPlayerBookshelfException" class="title">Class NullPlayerBookshelfException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullPlayerBookshelfException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Null player name exception.
    + Can be used public methods of <a href="../Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerBookshelfException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullPlayerBookshelfException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullPlayerBookshelfException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerIdException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerIdException.html
    new file mode 100644
    index 00000000..14920671
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerIdException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullPlayerIdException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.player.exceptions, class: NullPlayerIdException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></div>
    +<h1 title="Class NullPlayerIdException" class="title">Class NullPlayerIdException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullPlayerIdException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Null player id exception.
    + Can be used public methods of <a href="../Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerIdException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullPlayerIdException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullPlayerIdException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerNameException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerNameException.html
    new file mode 100644
    index 00000000..b1715cf8
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerNameException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullPlayerNameException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.player.exceptions, class: NullPlayerNameException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></div>
    +<h1 title="Class NullPlayerNameException" class="title">Class NullPlayerNameException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullPlayerNameException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Null player name exception.
    + Can be used public methods of <a href="../Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerNameException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullPlayerNameException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullPlayerNameException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerPrivateCardException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerPrivateCardException.html
    new file mode 100644
    index 00000000..8f10a7d2
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerPrivateCardException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullPlayerPrivateCardException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.player.exceptions, class: NullPlayerPrivateCardException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></div>
    +<h1 title="Class NullPlayerPrivateCardException" class="title">Class NullPlayerPrivateCardException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullPlayerPrivateCardException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Null player private card exception.
    + Can be used public methods of <a href="../Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerPrivateCardException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullPlayerPrivateCardException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullPlayerPrivateCardException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreBlocksException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreBlocksException.html
    new file mode 100644
    index 00000000..a8d4a239
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreBlocksException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullPlayerScoreBlocksException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.player.exceptions, class: NullPlayerScoreBlocksException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></div>
    +<h1 title="Class NullPlayerScoreBlocksException" class="title">Class NullPlayerScoreBlocksException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullPlayerScoreBlocksException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Null player score blocks exception.
    + Can be used public methods of <a href="../Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerScoreBlocksException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullPlayerScoreBlocksException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullPlayerScoreBlocksException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreException.html
    new file mode 100644
    index 00000000..39293bca
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullPlayerScoreException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.player.exceptions, class: NullPlayerScoreException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></div>
    +<h1 title="Class NullPlayerScoreException" class="title">Class NullPlayerScoreException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullPlayerScoreException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Null player score exception.
    + Can be used public methods of <a href="../Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a>.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPlayerScoreException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullPlayerScoreException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullPlayerScoreException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/package-summary.html
    new file mode 100644
    index 00000000..dc65e5f7
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/package-summary.html
    @@ -0,0 +1,125 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.player.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.player.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.player.exceptions" class="title">Package it.polimi.is23am10.server.model.player.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.player.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.model.player</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Null player name exception.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Null player id exception.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Null player name exception.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Null player private card exception.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Null player score blocks exception.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Null player score exception.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/package-tree.html
    new file mode 100644
    index 00000000..c977adde
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/exceptions/package-tree.html
    @@ -0,0 +1,85 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.player.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.player.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.player.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="NullPlayerBookshelfException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="NullPlayerIdException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="NullPlayerNameException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="NullPlayerPrivateCardException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="NullPlayerScoreBlocksException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="NullPlayerScoreException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/package-summary.html
    new file mode 100644
    index 00000000..90075508
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/package-summary.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.player</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.player">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.player" class="title">Package it.polimi.is23am10.server.model.player</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.player</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The Player class definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/player/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/player/package-tree.html
    new file mode 100644
    index 00000000..936d5df8
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/player/package-tree.html
    @@ -0,0 +1,72 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.player Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.player">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.player</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.player.<a href="Player.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player">Player</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/score/Score.html b/deliverables/javadoc/it/polimi/is23am10/server/model/score/Score.html
    new file mode 100644
    index 00000000..fd5490d0
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/score/Score.html
    @@ -0,0 +1,469 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Score</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.score, class: Score">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.score</a></div>
    +<h1 title="Class Score" class="title">Class Score</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.score.Score</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">Score</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">The Score class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.model.score.Score">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second even-row-color"><code><a href="#privateCardPointsMap" class="member-name-link">privateCardPointsMap</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Map that allows the conversion from number of matches 
    + in private cards to points received.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Score</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.score.Score)" class="member-name-link">Score</a><wbr>(<a href="Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a>&nbsp;toCopy)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Copy constructor to generate another copy of same Score.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBookshelfPoints()" class="member-name-link">getBookshelfPoints</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">bookshelfPoints getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getExtraPoint()" class="member-name-link">getExtraPoint</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">extraPoints getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPrivatePoints()" class="member-name-link">getPrivatePoints</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">privatePoints getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScoreBlockPoints()" class="member-name-link">getScoreBlockPoints</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">scoreBlockPoints getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStringTotalScore()" class="member-name-link">getStringTotalScore</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method used to retrieve a string representing the
    + total score.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getTotalScore()" class="member-name-link">getTotalScore</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter method that returns the total score
    + computing it from all the available scores.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getVisibleScore()" class="member-name-link">getVisibleScore</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method used to retrieve the total score from a
    + possibly obfuscated score.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#obfuscatePrivatePoints()" class="member-name-link">obfuscatePrivatePoints</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setBookshelfPoints(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)" class="member-name-link">setBookshelfPoints</a><wbr>(<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bs)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">bookshelfPoints setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setExtraPoint()" class="member-name-link">setExtraPoint</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">extraPoint setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setPrivatePoints(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,it.polimi.is23am10.server.model.items.card.PrivateCard)" class="member-name-link">setPrivatePoints</a><wbr>(<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bs,
    + <a href="../items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a>&nbsp;pc)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">privatePoints setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setScoreBlockPoints(java.util.List)" class="member-name-link">setScoreBlockPoints</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt;&nbsp;scoreBlocks)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">scoreBlockPoints setter.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="privateCardPointsMap">
    +<h3>privateCardPointsMap</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">privateCardPointsMap</span></div>
    +<div class="block">Map that allows the conversion from number of matches 
    + in private cards to points received.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Score</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Score</span>()</div>
    +<div class="block">Constructor.
    + Set all the default values.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.score.Score)">
    +<h3>Score</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Score</span><wbr><span class="parameters">(<a href="Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a>&nbsp;toCopy)</span></div>
    +<div class="block">Copy constructor to generate another copy of same Score.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>toCopy</code> - score to copy</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="setExtraPoint()">
    +<h3>setExtraPoint</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setExtraPoint</span>()</div>
    +<div class="block">extraPoint setter. Value can be only set to 1.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setBookshelfPoints(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)">
    +<h3>setBookshelfPoints</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setBookshelfPoints</span><wbr><span class="parameters">(<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bs)</span>
    +                        throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a>,
    +<a href="../items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a>,
    +<a href="../items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a>,
    +<a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a>,
    +<a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></span></div>
    +<div class="block">bookshelfPoints setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>bs</code> - The bookshelf object to check for groups in.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../../../utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code> - If the bookshelf row index is out of bounds.</dd>
    +<dd><code><a href="../items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code> - If the bookshelf column index is out of bounds.</dd>
    +<dd><code><a href="../player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></code> - If bookshelf is null.</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - Generic NPE.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setScoreBlockPoints(java.util.List)">
    +<h3>setScoreBlockPoints</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setScoreBlockPoints</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt;&nbsp;scoreBlocks)</span>
    +                         throws <span class="exceptions"><a href="../items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></span></div>
    +<div class="block">scoreBlockPoints setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>scoreBlocks</code> - The scoreblock list to get points from.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></code> - If the list of scoreblocks is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setPrivatePoints(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,it.polimi.is23am10.server.model.items.card.PrivateCard)">
    +<h3>setPrivatePoints</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPrivatePoints</span><wbr><span class="parameters">(<a href="../items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bs,
    + <a href="../items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a>&nbsp;pc)</span>
    +                      throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a>,
    +<a href="../items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a>,
    +<a href="../items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></span></div>
    +<div class="block">privatePoints setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>pc</code> - The private card to get points from.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></code> - If the number of matched blocks to set is negative.</dd>
    +<dd><code><a href="../items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a></code> - If the number of matched blocks to set is null.</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - Generic NPE.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="obfuscatePrivatePoints()">
    +<h3>obfuscatePrivatePoints</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">obfuscatePrivatePoints</span>()</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getExtraPoint()">
    +<h3>getExtraPoint</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getExtraPoint</span>()</div>
    +<div class="block">extraPoints getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The extra points value.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getBookshelfPoints()">
    +<h3>getBookshelfPoints</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getBookshelfPoints</span>()</div>
    +<div class="block">bookshelfPoints getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The bookshelf points value.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getScoreBlockPoints()">
    +<h3>getScoreBlockPoints</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getScoreBlockPoints</span>()</div>
    +<div class="block">scoreBlockPoints getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The score block points value.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPrivatePoints()">
    +<h3>getPrivatePoints</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getPrivatePoints</span>()</div>
    +<div class="block">privatePoints getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The private points value.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getTotalScore()">
    +<h3>getTotalScore</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getTotalScore</span>()</div>
    +<div class="block">Getter method that returns the total score
    + computing it from all the available scores.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>total score.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getVisibleScore()">
    +<h3>getVisibleScore</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getVisibleScore</span>()</div>
    +<div class="block">Method used to retrieve the total score from a
    + possibly obfuscated score. It ignores the invalidated privatescore.
    + Used for sorting purposes in CLI.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>visible score.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getStringTotalScore()">
    +<h3>getStringTotalScore</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getStringTotalScore</span>()</div>
    +<div class="block">Method used to retrieve a string representing the
    + total score. If score is obfuscated (private card points)
    + it returns a partial score and a graphic indication of possibly missing points.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>String representing total score.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/score/exceptions/NullPointsException.html b/deliverables/javadoc/it/polimi/is23am10/server/model/score/exceptions/NullPointsException.html
    new file mode 100644
    index 00000000..156a4c44
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/score/exceptions/NullPointsException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullPointsException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.score.exceptions, class: NullPointsException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.model.score.exceptions</a></div>
    +<h1 title="Class NullPointsException" class="title">Class NullPointsException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.model.score.exceptions.NullPointsException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullPointsException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle null points values.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.model.score.exceptions.NullPointsException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">NullPointsException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>NullPointsException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullPointsException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/score/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/score/exceptions/package-summary.html
    new file mode 100644
    index 00000000..d3d18c92
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/score/exceptions/package-summary.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.score.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.score.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.score.exceptions" class="title">Package it.polimi.is23am10.server.model.score.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.score.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.model.score</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NullPointsException.html" title="class in it.polimi.is23am10.server.model.score.exceptions">NullPointsException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle null points values.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/score/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/score/exceptions/package-tree.html
    new file mode 100644
    index 00000000..20738299
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/score/exceptions/package-tree.html
    @@ -0,0 +1,80 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.score.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.score.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.score.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.score.exceptions.<a href="NullPointsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.score.exceptions">NullPointsException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/score/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/model/score/package-summary.html
    new file mode 100644
    index 00000000..261956e1
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/score/package-summary.html
    @@ -0,0 +1,105 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.score</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.model.score">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.model.score" class="title">Package it.polimi.is23am10.server.model.score</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.model.score</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.model.score.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The Score class definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/model/score/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/model/score/package-tree.html
    new file mode 100644
    index 00000000..8a3ea950
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/model/score/package-tree.html
    @@ -0,0 +1,72 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.model.score Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.model.score">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.model.score</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.score.<a href="Score.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.score">Score</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html
    new file mode 100644
    index 00000000..9e4a52e9
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html
    @@ -0,0 +1,257 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>CurrentPlayerHandler</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.gamehandler, class: CurrentPlayerHandler">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.gamehandler</a></div>
    +<h1 title="Class CurrentPlayerHandler" class="title">Class CurrentPlayerHandler</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CurrentPlayerHandler</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The current player handler class definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">CurrentPlayerHandler</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getNotified()" class="member-name-link">getNotified</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The notified getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayer()" class="member-name-link">getPlayer</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The player getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStartPlayingTimeMs()" class="member-name-link">getStartPlayingTimeMs</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The start playing time getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setNotified(boolean)" class="member-name-link">setNotified</a><wbr>(boolean&nbsp;f)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The notified setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setPlayer</a><wbr>(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;p)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The player setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setStartPlayingTimeMs(long)" class="member-name-link">setStartPlayingTimeMs</a><wbr>(long&nbsp;time)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">The start playing time setter.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>CurrentPlayerHandler</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">CurrentPlayerHandler</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="setPlayer(it.polimi.is23am10.server.model.player.Player)">
    +<h3>setPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPlayer</span><wbr><span class="parameters">(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;p)</span></div>
    +<div class="block">The player setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>p</code> - the player to be assigned.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setStartPlayingTimeMs(long)">
    +<h3>setStartPlayingTimeMs</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setStartPlayingTimeMs</span><wbr><span class="parameters">(long&nbsp;time)</span></div>
    +<div class="block">The start playing time setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>time</code> - the player turn starting time in ms.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setNotified(boolean)">
    +<h3>setNotified</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setNotified</span><wbr><span class="parameters">(boolean&nbsp;f)</span></div>
    +<div class="block">The notified setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>f</code> - the notified flag to be set.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayer()">
    +<h3>getPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getPlayer</span>()</div>
    +<div class="block">The player getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the assigned player.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getStartPlayingTimeMs()">
    +<h3>getStartPlayingTimeMs</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getStartPlayingTimeMs</span>()</div>
    +<div class="block">The start playing time getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the player turn starting time in ms.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getNotified()">
    +<h3>getNotified</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getNotified</span>()</div>
    +<div class="block">The notified getter.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/GameHandler.html b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/GameHandler.html
    new file mode 100644
    index 00000000..eeb94d60
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/GameHandler.html
    @@ -0,0 +1,368 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>GameHandler</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.gamehandler, class: GameHandler">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.gamehandler</a></div>
    +<h1 title="Class GameHandler" class="title">Class GameHandler</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.gamehandler.GameHandler</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">GameHandler</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The match class definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.Integer)" class="member-name-link">GameHandler</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;firstPlayerName,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxPlayersNum)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#addPlayerConnector(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)" class="member-name-link">addPlayerConnector</a><wbr>(<a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;playerConnector)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Add a new player connector from socket server.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCurrentPlayerHandler()" class="member-name-link">getCurrentPlayerHandler</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Current player handler getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getGame()" class="member-name-link">getGame</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for <a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> instance.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerConnectorFromPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">getPlayerConnectorFromPlayer</a><wbr>(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieve the <a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector"><code>AbstractPlayerConnector</code></a> from a <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a> instance.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerConnectors()" class="member-name-link">getPlayerConnectors</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for <a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector"><code>AbstractPlayerConnector</code></a> list instance.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#pushGameState()" class="member-name-link">pushGameState</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Push a new game state to the message queue for each connected player.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#removePlayerByGame(java.util.UUID,it.polimi.is23am10.server.model.player.Player)" class="member-name-link">removePlayerByGame</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId,
    + <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Method that remove player by the game handler</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#updateCurrentPlayerHandler()" class="member-name-link">updateCurrentPlayerHandler</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Update the current player handler based on the game model updates.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.Integer)">
    +<h3>GameHandler</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">GameHandler</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;firstPlayerName,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxPlayersNum)</span>
    +            throws <span class="exceptions"><a href="../../model/game/exceptions/NullMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a>,
    +<a href="../../model/game/exceptions/InvalidMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a>,
    +<a href="../../model/player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a>,
    +<a href="../../model/player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a>,
    +<a href="../../model/player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a>,
    +<a href="../../model/player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a>,
    +<a href="../../model/player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a>,
    +<a href="../../model/player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a>,
    +<a href="../../model/factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a>,
    +<a href="../../model/items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a>,
    +<a href="../../model/factory/exceptions/NullPlayerNamesException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a>,
    +<a href="../../model/items/board/exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a>,
    +<a href="../../model/items/board/exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a>,
    +<a href="../../model/game/exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a>,
    +<a href="../../model/game/exceptions/FullGameException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a>,
    +<a href="../../model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a>,
    +<a href="../../model/game/exceptions/PlayerNotFoundException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>firstPlayerName</code> - The match starting player name.</dd>
    +<dd><code>maxPlayersNum</code> - The chosen max players for this match.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../../model/items/board/exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></code> - If the number of players provided when filling the board is null.</dd>
    +<dd><code><a href="../../model/items/board/exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a></code> - If, while adding multiple players, there is an invalid number of them.</dd>
    +<dd><code><a href="../../model/factory/exceptions/NullPlayerNamesException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a></code> - If, while adding multiple players, the list of player names is null.</dd>
    +<dd><code><a href="../../model/items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></code> - If assigning a pattern to a card that already has one.</dd>
    +<dd><code><a href="../../model/factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></code> - If player with that name already exists.</dd>
    +<dd><code><a href="../../model/player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></code> - If player's scoreblocks list is null.</dd>
    +<dd><code><a href="../../model/player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></code> - If player's private card object is null.</dd>
    +<dd><code><a href="../../model/player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></code> - If player's score object is null.</dd>
    +<dd><code><a href="../../model/player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></code> - If bookshelf is null.</dd>
    +<dd><code><a href="../../model/player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></code> - If player id is null.</dd>
    +<dd><code><a href="../../model/player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></code> - If player name is null.</dd>
    +<dd><code><a href="../../model/game/exceptions/InvalidMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a></code> - If value for maximum number of players in the game is not valid.</dd>
    +<dd><code><a href="../../model/game/exceptions/NullMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a></code> - If no value for maximum number of players in the game is provided.</dd>
    +<dd><code><a href="../../model/game/exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></code> - If the pattern assigned to a card is null.</dd>
    +<dd><code><a href="../../model/game/exceptions/FullGameException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a></code> - If game is full, on player trying to join.</dd>
    +<dd><code><a href="../../model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></code> - If the value assigned to a scoreblock is not valid.</dd>
    +<dd><code><a href="../../model/game/exceptions/PlayerNotFoundException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></code> - If the player with the name provided is not found.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="updateCurrentPlayerHandler()">
    +<h3>updateCurrentPlayerHandler</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">updateCurrentPlayerHandler</span>()</div>
    +<div class="block">Update the current player handler based on the game model updates.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCurrentPlayerHandler()">
    +<h3>getCurrentPlayerHandler</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></span>&nbsp;<span class="element-name">getCurrentPlayerHandler</span>()</div>
    +<div class="block">Current player handler getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The current player handler instance.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayerConnectorFromPlayer(it.polimi.is23am10.server.model.player.Player)">
    +<h3>getPlayerConnectorFromPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></span>&nbsp;<span class="element-name">getPlayerConnectorFromPlayer</span><wbr><span class="parameters">(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</span></div>
    +<div class="block">Retrieve the <a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector"><code>AbstractPlayerConnector</code></a> from a <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a> instance.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>player</code> - the player assinged to a connector to find.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getGame()">
    +<h3>getGame</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a></span>&nbsp;<span class="element-name">getGame</span>()</div>
    +<div class="block">Getter for <a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> instance.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The current game instance containing the game state.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayerConnectors()">
    +<h3>getPlayerConnectors</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Set.html" title="class or interface in java.util" class="external-link">Set</a>&lt;<a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&gt;</span>&nbsp;<span class="element-name">getPlayerConnectors</span>()</div>
    +<div class="block">Getter for <a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector"><code>AbstractPlayerConnector</code></a> list instance.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The current game instance containing the game state.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="addPlayerConnector(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)">
    +<h3>addPlayerConnector</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">addPlayerConnector</span><wbr><span class="parameters">(<a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a>&nbsp;playerConnector)</span>
    +                        throws <span class="exceptions"><a href="exceptions/NullPlayerConnector.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">NullPlayerConnector</a></span></div>
    +<div class="block">Add a new player connector from socket server.
    + Will accept a built instance of <a href="../playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector"><code>AbstractPlayerConnector</code></a></div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>playerConnector</code> - The connector to be added to the current game.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullPlayerConnector.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">NullPlayerConnector</a></code> - On null Player connector.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="pushGameState()">
    +<h3>pushGameState</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">pushGameState</span>()
    +                   throws <span class="exceptions"><a href="exceptions/GameSnapshotUpdateException.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">GameSnapshotUpdateException</a></span></div>
    +<div class="block">Push a new game state to the message queue for each connected player.</div>
    +<dl class="notes">
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/GameSnapshotUpdateException.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">GameSnapshotUpdateException</a></code> - On notification failure.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="removePlayerByGame(java.util.UUID,it.polimi.is23am10.server.model.player.Player)">
    +<h3>removePlayerByGame</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">removePlayerByGame</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId,
    + <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</span></div>
    +<div class="block">Method that remove player by the game handler</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>gameId</code> - game id.</dd>
    +<dd><code>player</code> - player to be removed.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/GameSnapshotUpdateException.html b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/GameSnapshotUpdateException.html
    new file mode 100644
    index 00000000..13b0b9bc
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/GameSnapshotUpdateException.html
    @@ -0,0 +1,167 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>GameSnapshotUpdateException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.gamehandler.exceptions, class: GameSnapshotUpdateException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.gamehandler.exceptions</a></div>
    +<h1 title="Class GameSnapshotUpdateException" class="title">Class GameSnapshotUpdateException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.gamehandler.exceptions.GameSnapshotUpdateException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">GameSnapshotUpdateException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to wrap InterruptedException on game snapshot updates.
    + Used in order to catch it preferentially with respect to other IEs.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.network.gamehandler.exceptions.GameSnapshotUpdateException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.game.Game)" class="member-name-link">GameSnapshotUpdateException</a><wbr>(<a href="../../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a>&nbsp;g)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.game.Game)">
    +<h3>GameSnapshotUpdateException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">GameSnapshotUpdateException</span><wbr><span class="parameters">(<a href="../../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a>&nbsp;g)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/NullPlayerConnector.html b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/NullPlayerConnector.html
    new file mode 100644
    index 00000000..25c74b49
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/NullPlayerConnector.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullPlayerConnector</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.gamehandler.exceptions, class: NullPlayerConnector">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.gamehandler.exceptions</a></div>
    +<h1 title="Class NullPlayerConnector" class="title">Class NullPlayerConnector</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullPlayerConnector</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle null max player connectors.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NullPlayerConnector</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NullPlayerConnector</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullPlayerConnector</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/package-summary.html
    new file mode 100644
    index 00000000..1f2a61c7
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/package-summary.html
    @@ -0,0 +1,109 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.gamehandler.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.gamehandler.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.network.gamehandler.exceptions" class="title">Package it.polimi.is23am10.server.network.gamehandler.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.network.gamehandler.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.network.gamehandler</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="GameSnapshotUpdateException.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">GameSnapshotUpdateException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to wrap InterruptedException on game snapshot updates.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullPlayerConnector.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">NullPlayerConnector</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle null max player connectors.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/package-tree.html
    new file mode 100644
    index 00000000..6c10191d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/exceptions/package-tree.html
    @@ -0,0 +1,81 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.gamehandler.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.network.gamehandler.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.network.gamehandler.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.gamehandler.exceptions.<a href="GameSnapshotUpdateException.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">GameSnapshotUpdateException</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.gamehandler.exceptions.<a href="NullPlayerConnector.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">NullPlayerConnector</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/package-summary.html
    new file mode 100644
    index 00000000..afa94ee1
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/package-summary.html
    @@ -0,0 +1,109 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.gamehandler</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.gamehandler">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.network.gamehandler" class="title">Package it.polimi.is23am10.server.network.gamehandler</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.network.gamehandler</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.network.gamehandler.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="CurrentPlayerHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The current player handler class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="GameHandler.html" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">The match class definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/package-tree.html
    new file mode 100644
    index 00000000..f09cb9a6
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/gamehandler/package-tree.html
    @@ -0,0 +1,73 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.gamehandler Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.network.gamehandler">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.network.gamehandler</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.gamehandler.<a href="CurrentPlayerHandler.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.gamehandler.<a href="GameHandler.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html
    new file mode 100644
    index 00000000..be2da8de
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html
    @@ -0,0 +1,278 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AbstractMessage.MessageType</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.messages, class: AbstractMessage, enum: MessageType">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#enum-constant-summary">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#enum-constant-detail">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.messages</a></div>
    +<h1 title="Enum Class AbstractMessage.MessageType" class="title">Enum Class AbstractMessage.MessageType</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a>&gt;
    +<div class="inheritance">it.polimi.is23am10.server.network.messages.AbstractMessage.MessageType</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><code><a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">AbstractMessage.MessageType</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a>&gt;</span></div>
    +<div class="block">Enum for type of message sent.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#AVAILABLE_GAMES" class="member-name-link">AVAILABLE_GAMES</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message containing the available games joinable by player.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="#CHAT_MESSAGE" class="member-name-link">CHAT_MESSAGE</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message containing a chat textual exchange between players.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="#ERROR_MESSAGE" class="member-name-link">ERROR_MESSAGE</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message containing an error to display to the player.</div>
    +</div>
    +<div class="col-first odd-row-color"><code><a href="#GAME_SNAPSHOT" class="member-name-link">GAME_SNAPSHOT</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message containing a VirtualView, representing a game snapshot.</div>
    +</div>
    +<div class="col-first even-row-color"><code><a href="#SNOOZE_ACK" class="member-name-link">SNOOZE_ACK</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">ACK message sent from server to client to confirm that the timer has
    + been snoozed.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="GAME_SNAPSHOT">
    +<h3>GAME_SNAPSHOT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></span>&nbsp;<span class="element-name">GAME_SNAPSHOT</span></div>
    +<div class="block">Message containing a VirtualView, representing a game snapshot.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CHAT_MESSAGE">
    +<h3>CHAT_MESSAGE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></span>&nbsp;<span class="element-name">CHAT_MESSAGE</span></div>
    +<div class="block">Message containing a chat textual exchange between players.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_MESSAGE">
    +<h3>ERROR_MESSAGE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></span>&nbsp;<span class="element-name">ERROR_MESSAGE</span></div>
    +<div class="block">Message containing an error to display to the player.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="AVAILABLE_GAMES">
    +<h3>AVAILABLE_GAMES</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></span>&nbsp;<span class="element-name">AVAILABLE_GAMES</span></div>
    +<div class="block">Message containing the available games joinable by player.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="SNOOZE_ACK">
    +<h3>SNOOZE_ACK</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></span>&nbsp;<span class="element-name">SNOOZE_ACK</span></div>
    +<div class="block">ACK message sent from server to client to confirm that the timer has
    + been snoozed. If not received by client implies client termination.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/messages/AbstractMessage.html b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/AbstractMessage.html
    new file mode 100644
    index 00000000..9c187c1a
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/AbstractMessage.html
    @@ -0,0 +1,231 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AbstractMessage</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.messages, class: AbstractMessage">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.messages</a></div>
    +<h1 title="Class AbstractMessage" class="title">Class AbstractMessage</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.messages.AbstractMessage</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></code>, <code><a href="ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></code>, <code><a href="ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></code>, <code><a href="GameMessage.html" title="class in it.polimi.is23am10.server.network.messages">GameMessage</a></code>, <code><a href="SnoozeACKMessage.html" title="class in it.polimi.is23am10.server.network.messages">SnoozeACKMessage</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">AbstractMessage</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">Abstract class representing a generic message exchanged.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.messages.AbstractMessage">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="AbstractMessage.MessageType.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Enum for type of message sent.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">AbstractMessage</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMessage()" class="member-name-link">getMessage</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for message.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMessageType()" class="member-name-link">getMessageType</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for message type.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>AbstractMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AbstractMessage</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getMessage()">
    +<h3>getMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getMessage</span>()</div>
    +<div class="block">Getter for message.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the string message</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMessageType()">
    +<h3>getMessageType</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></span>&nbsp;<span class="element-name">getMessageType</span>()</div>
    +<div class="block">Getter for message type.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>message type</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html
    new file mode 100644
    index 00000000..92d236e6
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html
    @@ -0,0 +1,235 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AvailableGamesMessage</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.messages, class: AvailableGamesMessage">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.messages</a></div>
    +<h1 title="Class AvailableGamesMessage" class="title">Class AvailableGamesMessage</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.AbstractMessage</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.messages.AvailableGamesMessage</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">AvailableGamesMessage</span>
    +<span class="extends-implements">extends <a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></span></div>
    +<div class="block">A message containing a list of available games to be sent to the client.
    + Note that games are already converted to network-friendly <a href="../virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview"><code>VirtualView</code></a></div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.messages.AvailableGamesMessage">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.network.messages.AbstractMessage">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></h2>
    +<code><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.List,it.polimi.is23am10.server.model.player.Player...)" class="member-name-link">AvailableGamesMessage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;&nbsp;availableGames,
    + <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>...&nbsp;receivers)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor for AvailableGamesMessage in broadcast.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReceiver()" class="member-name-link">getReceiver</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for the receiving player.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isBroadcast()" class="member-name-link">isBroadcast</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Boolean to check if message is direct or broadcast.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.network.messages.AbstractMessage">Methods inherited from class&nbsp;it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></h3>
    +<code><a href="AbstractMessage.html#getMessage()">getMessage</a>, <a href="AbstractMessage.html#getMessageType()">getMessageType</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.List,it.polimi.is23am10.server.model.player.Player...)">
    +<h3>AvailableGamesMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AvailableGamesMessage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="../virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&gt;&nbsp;availableGames,
    + <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>...&nbsp;receivers)</span></div>
    +<div class="block">Public constructor for AvailableGamesMessage in broadcast.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>availableGames</code> - games to send.</dd>
    +<dd><code>receivers</code> - the optional receiver player.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="isBroadcast()">
    +<h3>isBroadcast</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isBroadcast</span>()</div>
    +<div class="block">Boolean to check if message is direct or broadcast.
    + Overridden to false as this message can only be private.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>is the message broadcast?</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getReceiver()">
    +<h3>getReceiver</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getReceiver</span>()</div>
    +<div class="block">Getter for the receiving player.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the player instance</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/messages/ChatMessage.html b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/ChatMessage.html
    new file mode 100644
    index 00000000..9d84ae1a
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/ChatMessage.html
    @@ -0,0 +1,307 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ChatMessage</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.messages, class: ChatMessage">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.messages</a></div>
    +<h1 title="Class ChatMessage" class="title">Class ChatMessage</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.AbstractMessage</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.messages.ChatMessage</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ChatMessage</span>
    +<span class="extends-implements">extends <a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></span></div>
    +<div class="block">A message sent via chat.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.messages.ChatMessage">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.network.messages.AbstractMessage">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></h2>
    +<code><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.player.Player,java.lang.String)" class="member-name-link">ChatMessage</a><wbr>(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;sender,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;chatMessage)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor for building a broadcast message.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.player.Player,java.lang.String,it.polimi.is23am10.server.model.player.Player)" class="member-name-link">ChatMessage</a><wbr>(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;sender,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;chatMessage,
    + <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;receiver)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Public constructor for building a direct message.</div>
    +</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.player.Player,java.lang.String,java.lang.String)" class="member-name-link">ChatMessage</a><wbr>(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;sender,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;chatMessage,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;receiver)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor for building a direct message.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReceiver()" class="member-name-link">getReceiver</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for the receiving player.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReceiverName()" class="member-name-link">getReceiverName</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for the receiving player.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSender()" class="member-name-link">getSender</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for the sending player.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isBroadcast()" class="member-name-link">isBroadcast</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Boolean to check if message is direct or broadcast.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.network.messages.AbstractMessage">Methods inherited from class&nbsp;it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></h3>
    +<code><a href="AbstractMessage.html#getMessage()">getMessage</a>, <a href="AbstractMessage.html#getMessageType()">getMessageType</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.player.Player,java.lang.String,it.polimi.is23am10.server.model.player.Player)">
    +<h3>ChatMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ChatMessage</span><wbr><span class="parameters">(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;sender,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;chatMessage,
    + <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;receiver)</span></div>
    +<div class="block">Public constructor for building a direct message.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>sender</code> - the player sending the message</dd>
    +<dd><code>chatMessage</code> - the actual message</dd>
    +<dd><code>receiver</code> - the player receiving the message</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.player.Player,java.lang.String,java.lang.String)">
    +<h3>ChatMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ChatMessage</span><wbr><span class="parameters">(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;sender,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;chatMessage,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;receiver)</span></div>
    +<div class="block">Public constructor for building a direct message.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>sender</code> - the player sending the message</dd>
    +<dd><code>chatMessage</code> - the actual message</dd>
    +<dd><code>receiver</code> - the player name receiving the message</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.player.Player,java.lang.String)">
    +<h3>ChatMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ChatMessage</span><wbr><span class="parameters">(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;sender,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;chatMessage)</span></div>
    +<div class="block">Public constructor for building a broadcast message.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>sender</code> - the player sending the message</dd>
    +<dd><code>chatMessage</code> - the actual message</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="isBroadcast()">
    +<h3>isBroadcast</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isBroadcast</span>()</div>
    +<div class="block">Boolean to check if message is direct or broadcast.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>is the message broadcast?</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getReceiver()">
    +<h3>getReceiver</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getReceiver</span>()</div>
    +<div class="block">Getter for the receiving player.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the player instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getReceiverName()">
    +<h3>getReceiverName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getReceiverName</span>()</div>
    +<div class="block">Getter for the receiving player.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the player instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getSender()">
    +<h3>getSender</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getSender</span>()</div>
    +<div class="block">Getter for the sending player.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the sending player</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html
    new file mode 100644
    index 00000000..e15c5847
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html
    @@ -0,0 +1,259 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ErrorMessage.ErrorSeverity</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.messages, class: ErrorMessage, enum: ErrorSeverity">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li><a href="#enum-constant-summary">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#enum-constant-detail">Enum Constants</a></li>
    +<li>Field</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li><a href="#enum-constant-summary">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#enum-constant-detail">Enum Constants</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.messages</a></div>
    +<h1 title="Enum Class ErrorMessage.ErrorSeverity" class="title">Enum Class ErrorMessage.ErrorSeverity</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">java.lang.Enum</a>&lt;<a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a>&gt;
    +<div class="inheritance">it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;<a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a>&gt;</code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Enclosing class:</dt>
    +<dd><code><a href="ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public static enum </span><span class="element-name type-name-label">ErrorMessage.ErrorSeverity</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a>&gt;</span></div>
    +<div class="block">Three degrees of severity.
    + Rule of thumb: 
    + <ul>
    + <li>Warning = something changed the flow of the game. User must be aware.
    + <li>Error = something unexpected happened but game can continue.
    + <li>Critical = something so bad happened that the game must end.
    + </ul></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-java.lang.Enum">Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h2>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">Enum.EnumDesc</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a> extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.EnumDesc.html" title="class or interface in java.lang" class="external-link">E</a>&gt;&gt;</code></div>
    +</section>
    +</li>
    +<!-- =========== ENUM CONSTANT SUMMARY =========== -->
    +<li>
    +<section class="constants-summary" id="enum-constant-summary">
    +<h2>Enum Constant Summary</h2>
    +<div class="caption"><span>Enum Constants</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Enum Constant</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code><a href="#CRITICAL" class="member-name-link">CRITICAL</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#ERROR" class="member-name-link">ERROR</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><code><a href="#INFO" class="member-name-link">INFO</a></code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><code><a href="#WARNING" class="member-name-link">WARNING</a></code></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#valueOf(java.lang.String)" class="member-name-link">valueOf</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns the enum constant of this class with the specified name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a>[]</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#values()" class="member-name-link">values</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Enum">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" title="class or interface in java.lang" class="external-link">Enum</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#compareTo(E)" title="class or interface in java.lang" class="external-link">compareTo</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#describeConstable()" title="class or interface in java.lang" class="external-link">describeConstable</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#getDeclaringClass()" title="class or interface in java.lang" class="external-link">getDeclaringClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#name()" title="class or interface in java.lang" class="external-link">name</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#ordinal()" title="class or interface in java.lang" class="external-link">ordinal</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html#valueOf(java.lang.Class,java.lang.String)" title="class or interface in java.lang" class="external-link">valueOf</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ ENUM CONSTANT DETAIL =========== -->
    +<li>
    +<section class="constant-details" id="enum-constant-detail">
    +<h2>Enum Constant Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="INFO">
    +<h3>INFO</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></span>&nbsp;<span class="element-name">INFO</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WARNING">
    +<h3>WARNING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></span>&nbsp;<span class="element-name">WARNING</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR">
    +<h3>ERROR</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></span>&nbsp;<span class="element-name">ERROR</span></div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="CRITICAL">
    +<h3>CRITICAL</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></span>&nbsp;<span class="element-name">CRITICAL</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="values()">
    +<h3>values</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a>[]</span>&nbsp;<span class="element-name">values</span>()</div>
    +<div class="block">Returns an array containing the constants of this enum class, in
    +the order they are declared.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>an array containing the constants of this enum class, in the order they are declared</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="valueOf(java.lang.String)">
    +<h3>valueOf</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></span>&nbsp;<span class="element-name">valueOf</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;name)</span></div>
    +<div class="block">Returns the enum constant of this class with the specified name.
    +The string must match <i>exactly</i> an identifier used to declare an
    +enum constant in this class.  (Extraneous whitespace characters are 
    +not permitted.)</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>name</code> - the name of the enum constant to be returned.</dd>
    +<dt>Returns:</dt>
    +<dd>the enum constant with the specified name</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/IllegalArgumentException.html" title="class or interface in java.lang" class="external-link">IllegalArgumentException</a></code> - if this enum class has no constant with the specified name</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NullPointerException.html" title="class or interface in java.lang" class="external-link">NullPointerException</a></code> - if the argument is null</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/messages/ErrorMessage.html b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/ErrorMessage.html
    new file mode 100644
    index 00000000..bb5d7197
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/ErrorMessage.html
    @@ -0,0 +1,279 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ErrorMessage</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.messages, class: ErrorMessage">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.messages</a></div>
    +<h1 title="Class ErrorMessage" class="title">Class ErrorMessage</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.AbstractMessage</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.messages.ErrorMessage</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ErrorMessage</span>
    +<span class="extends-implements">extends <a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></span></div>
    +<div class="block">A message containing an error message to be sent to the client.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.messages.ErrorMessage">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="caption"><span>Nested Classes</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static enum&nbsp;</code></div>
    +<div class="col-second even-row-color"><code><a href="ErrorMessage.ErrorSeverity.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Three degrees of severity.</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.network.messages.AbstractMessage">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></h2>
    +<code><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,it.polimi.is23am10.server.model.player.Player,it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity)" class="member-name-link">ErrorMessage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage,
    + <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;receiver,
    + <a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a>&nbsp;errorSeverity)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor for ErrorMessage.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.String,it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity)" class="member-name-link">ErrorMessage</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage,
    + <a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a>&nbsp;errorSeverity)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Public constructor for ErrorMessage in broadcast.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getErrorSeverity()" class="member-name-link">getErrorSeverity</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for the severity.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getReceiver()" class="member-name-link">getReceiver</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for the receiving player.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#isBroadcast()" class="member-name-link">isBroadcast</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Boolean to check if message is direct or broadcast.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.network.messages.AbstractMessage">Methods inherited from class&nbsp;it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></h3>
    +<code><a href="AbstractMessage.html#getMessage()">getMessage</a>, <a href="AbstractMessage.html#getMessageType()">getMessageType</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,it.polimi.is23am10.server.model.player.Player,it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity)">
    +<h3>ErrorMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ErrorMessage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage,
    + <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;receiver,
    + <a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a>&nbsp;errorSeverity)</span></div>
    +<div class="block">Public constructor for ErrorMessage.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>errorMessage</code> - message to send.</dd>
    +<dd><code>receiver</code> - player who receives the message.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity)">
    +<h3>ErrorMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ErrorMessage</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;errorMessage,
    + <a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a>&nbsp;errorSeverity)</span></div>
    +<div class="block">Public constructor for ErrorMessage in broadcast.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>errorMessage</code> - message to send.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="isBroadcast()">
    +<h3>isBroadcast</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">isBroadcast</span>()</div>
    +<div class="block">Boolean to check if message is direct or broadcast.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>is the message broadcast?</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getReceiver()">
    +<h3>getReceiver</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getReceiver</span>()</div>
    +<div class="block">Getter for the receiving player.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the player instance</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getErrorSeverity()">
    +<h3>getErrorSeverity</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></span>&nbsp;<span class="element-name">getErrorSeverity</span>()</div>
    +<div class="block">Getter for the severity.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>the severity of the error.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/messages/GameMessage.html b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/GameMessage.html
    new file mode 100644
    index 00000000..1d60e77a
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/GameMessage.html
    @@ -0,0 +1,216 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>GameMessage</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.messages, class: GameMessage">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.messages</a></div>
    +<h1 title="Class GameMessage" class="title">Class GameMessage</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.AbstractMessage</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.messages.GameMessage</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">GameMessage</span>
    +<span class="extends-implements">extends <a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></span></div>
    +<div class="block">A message containing a serialized JSON of a virtual view instance.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.messages.GameMessage">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.network.messages.AbstractMessage">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></h2>
    +<code><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.network.virtualview.VirtualView)" class="member-name-link">GameMessage</a><wbr>(<a href="../virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;virtualView)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor for virtualView message.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getGame()" class="member-name-link">getGame</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for virtualView instance.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.network.messages.AbstractMessage">Methods inherited from class&nbsp;it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></h3>
    +<code><a href="AbstractMessage.html#getMessage()">getMessage</a>, <a href="AbstractMessage.html#getMessageType()">getMessageType</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.network.virtualview.VirtualView)">
    +<h3>GameMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">GameMessage</span><wbr><span class="parameters">(<a href="../virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a>&nbsp;virtualView)</span></div>
    +<div class="block">Public constructor for virtualView message.
    + Game object is serialized into JSON and set as message.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>virtualView</code> - virtual view to serialize</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getGame()">
    +<h3>getGame</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></span>&nbsp;<span class="element-name">getGame</span>()</div>
    +<div class="block">Getter for virtualView instance. It deserializes it from
    + JSON message.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>deserialized virtual view object</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/messages/SnoozeACKMessage.html b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/SnoozeACKMessage.html
    new file mode 100644
    index 00000000..7cf9bfdf
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/SnoozeACKMessage.html
    @@ -0,0 +1,177 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>SnoozeACKMessage</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.messages, class: SnoozeACKMessage">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li><a href="#nested-class-summary">Nested</a></li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li><a href="#nested-class-summary">Nested</a>&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.messages</a></div>
    +<h1 title="Class SnoozeACKMessage" class="title">Class SnoozeACKMessage</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.AbstractMessage</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.messages.SnoozeACKMessage</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">SnoozeACKMessage</span>
    +<span class="extends-implements">extends <a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></span></div>
    +<div class="block">Class representing a ACK message sent from server to client
    + in response to a snooze command. Used to keep alice client.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.messages.SnoozeACKMessage">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== NESTED CLASS SUMMARY ======== -->
    +<li>
    +<section class="nested-class-summary" id="nested-class-summary">
    +<h2>Nested Class Summary</h2>
    +<div class="inherited-list">
    +<h2 id="nested-classes-inherited-from-class-it.polimi.is23am10.server.network.messages.AbstractMessage">Nested classes/interfaces inherited from class&nbsp;it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></h2>
    +<code><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></code></div>
    +</section>
    +</li>
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">SnoozeACKMessage</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.network.messages.AbstractMessage">Methods inherited from class&nbsp;it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></h3>
    +<code><a href="AbstractMessage.html#getMessage()">getMessage</a>, <a href="AbstractMessage.html#getMessageType()">getMessageType</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>SnoozeACKMessage</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">SnoozeACKMessage</span>()</div>
    +<div class="block">Public constructor.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/messages/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/package-summary.html
    new file mode 100644
    index 00000000..8bbee9a4
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/package-summary.html
    @@ -0,0 +1,125 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.messages</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.messages">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li>Related Packages</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.network.messages" class="title">Package it.polimi.is23am10.server.network.messages</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.network.messages</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel">
    +<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Abstract class representing a generic message exchanged.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">Enum for type of message sent.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">A message containing a list of available games to be sent to the client.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">A message sent via chat.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">A message containing an error message to be sent to the client.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">Three degrees of severity.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="GameMessage.html" title="class in it.polimi.is23am10.server.network.messages">GameMessage</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">A message containing a serialized JSON of a virtual view instance.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="SnoozeACKMessage.html" title="class in it.polimi.is23am10.server.network.messages">SnoozeACKMessage</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Class representing a ACK message sent from server to client
    + in response to a snooze command.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/messages/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/package-tree.html
    new file mode 100644
    index 00000000..e6a06515
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/messages/package-tree.html
    @@ -0,0 +1,95 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.messages Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.network.messages">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.network.messages</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="AvailableGamesMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="ChatMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="ErrorMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="GameMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">GameMessage</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="SnoozeACKMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">SnoozeACKMessage</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="AbstractMessage.MessageType.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="ErrorMessage.ErrorSeverity.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html
    new file mode 100644
    index 00000000..a51ef9ad
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html
    @@ -0,0 +1,349 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AbstractPlayerConnector</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.playerconnector, class: AbstractPlayerConnector">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></div>
    +<h1 title="Class AbstractPlayerConnector" class="title">Class AbstractPlayerConnector</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a></code>, <code><a href="PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public abstract class </span><span class="element-name type-name-label">AbstractPlayerConnector</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>, <a href="interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></span></div>
    +<div class="block">The player connector class definition.
    + This class is responsible to handle clients' sockets connections.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getGameId()" class="member-name-link">getGameId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for the associated game id.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getLastSnoozeMs()" class="member-name-link">getLastSnoozeMs</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Get the client last snooze time in ms.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMessageFromQueue()" class="member-name-link">getMessageFromQueue</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieve a message from the queue.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMsgQueueSize()" class="member-name-link">getMsgQueueSize</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrieve the message queue size.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayer()" class="member-name-link">getPlayer</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for the associated player.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>abstract void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#notify(it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">notify</a><wbr>(<a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;message)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Notify the player an update.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setGameId(java.util.UUID)" class="member-name-link">setGameId</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Setter for the associated game id.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setLastSnoozeMs(long)" class="member-name-link">setLastSnoozeMs</a><wbr>(long&nbsp;lastSnoozeMs)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Set the client last snooze time in ms.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setPlayer</a><wbr>(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Setter for the player reference.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getGameId()">
    +<h3>getGameId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></span>&nbsp;<span class="element-name">getGameId</span>()</div>
    +<div class="block">Getter for the associated game id.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="interfaces/IPlayerConnector.html#getGameId()">getGameId</a></code>&nbsp;in interface&nbsp;<code><a href="interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>The game id.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayer()">
    +<h3>getPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getPlayer</span>()</div>
    +<div class="block">Getter for the associated player.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="interfaces/IPlayerConnector.html#getPlayer()">getPlayer</a></code>&nbsp;in interface&nbsp;<code><a href="interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>The player reference.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMessageFromQueue()">
    +<h3>getMessageFromQueue</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></span>&nbsp;<span class="element-name">getMessageFromQueue</span>()
    +                                    throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
    +<div class="block">Retrieve a message from the queue.
    + This deletes the retrieved message.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="interfaces/IPlayerConnector.html#getMessageFromQueue()">getMessageFromQueue</a></code>&nbsp;in interface&nbsp;<code><a href="interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>The oldest message if present.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code> - On msg queue failure.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMsgQueueSize()">
    +<h3>getMsgQueueSize</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">getMsgQueueSize</span>()</div>
    +<div class="block">Retrieve the message queue size.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="interfaces/IPlayerConnector.html#getMsgQueueSize()">getMsgQueueSize</a></code>&nbsp;in interface&nbsp;<code><a href="interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></code></dd>
    +<dt>Returns:</dt>
    +<dd>The blocking message queue size.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getLastSnoozeMs()">
    +<h3>getLastSnoozeMs</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getLastSnoozeMs</span>()</div>
    +<div class="block">Get the client last snooze time in ms.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The ms of the last alarm snooze.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="notify(it.polimi.is23am10.server.network.messages.AbstractMessage)">
    +<h3>notify</h3>
    +<div class="member-signature"><span class="modifiers">public abstract</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notify</span><wbr><span class="parameters">(<a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;message)</span>
    +                     throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a>,
    +<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Notify the player an update.
    + Different delivery strategies are applied based on the <a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages"><code>AbstractMessage</code></a> dynamic type.
    + This blocks undefinably until the queue is available (in case socket is used).
    + <a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> model instances should leverage this
    + queue to send responses to the client (i.e. game updates).</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>message</code> - The message to be added.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code> - On queue message insertion failure.</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - On remote call failure.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setGameId(java.util.UUID)">
    +<h3>setGameId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setGameId</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a>&nbsp;gameId)</span></div>
    +<div class="block">Setter for the associated game id.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>gameId</code> - The game id to associate to the current player connector.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setPlayer(it.polimi.is23am10.server.model.player.Player)">
    +<h3>setPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setPlayer</span><wbr><span class="parameters">(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;player)</span></div>
    +<div class="block">Setter for the player reference.</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="interfaces/IPlayerConnector.html#setPlayer(it.polimi.is23am10.server.model.player.Player)">setPlayer</a></code>&nbsp;in interface&nbsp;<code><a href="interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>player</code> - The player to associate to the current player connector.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setLastSnoozeMs(long)">
    +<h3>setLastSnoozeMs</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setLastSnoozeMs</span><wbr><span class="parameters">(long&nbsp;lastSnoozeMs)</span></div>
    +<div class="block">Set the client last snooze time in ms.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>lastSnoozeMs</code> - The snooze ms.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html
    new file mode 100644
    index 00000000..61bb161e
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html
    @@ -0,0 +1,254 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>PlayerConnectorRmi</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.playerconnector, class: PlayerConnectorRmi">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></div>
    +<h1 title="Class PlayerConnectorRmi" class="title">Class PlayerConnectorRmi</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PlayerConnectorRmi</span>
    +<span class="extends-implements">extends <a href="AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></span></div>
    +<div class="block">The player connector class definition.
    + This class is responsible to handle clients' sockets connections.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.util.concurrent.LinkedBlockingQueue,it.polimi.is23am10.client.IClient)" class="member-name-link">PlayerConnectorRmi</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/concurrent/LinkedBlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">LinkedBlockingQueue</a>&lt;<a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&gt;&nbsp;msgQueue,
    + <a href="../../../client/IClient.html" title="interface in it.polimi.is23am10.client">IClient</a>&nbsp;client)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../../client/IClient.html" title="interface in it.polimi.is23am10.client">IClient</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getClient()" class="member-name-link">getClient</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Retrive the <a href="../../../client/Client.html" title="class in it.polimi.is23am10.client"><code>Client</code></a> reference.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notify(it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">notify</a><wbr>(<a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;msg)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Notify the player an update.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setClient(it.polimi.is23am10.client.IClient)" class="member-name-link">setClient</a><wbr>(<a href="../../../client/IClient.html" title="interface in it.polimi.is23am10.client">IClient</a>&nbsp;client)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Set the <a href="../../../client/Client.html" title="class in it.polimi.is23am10.client"><code>Client</code></a> reference.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector">Methods inherited from class&nbsp;it.polimi.is23am10.server.network.playerconnector.<a href="AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></h3>
    +<code><a href="AbstractPlayerConnector.html#equals(java.lang.Object)">equals</a>, <a href="AbstractPlayerConnector.html#getGameId()">getGameId</a>, <a href="AbstractPlayerConnector.html#getLastSnoozeMs()">getLastSnoozeMs</a>, <a href="AbstractPlayerConnector.html#getMessageFromQueue()">getMessageFromQueue</a>, <a href="AbstractPlayerConnector.html#getMsgQueueSize()">getMsgQueueSize</a>, <a href="AbstractPlayerConnector.html#getPlayer()">getPlayer</a>, <a href="AbstractPlayerConnector.html#hashCode()">hashCode</a>, <a href="AbstractPlayerConnector.html#setGameId(java.util.UUID)">setGameId</a>, <a href="AbstractPlayerConnector.html#setLastSnoozeMs(long)">setLastSnoozeMs</a>, <a href="AbstractPlayerConnector.html#setPlayer(it.polimi.is23am10.server.model.player.Player)">setPlayer</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.util.concurrent.LinkedBlockingQueue,it.polimi.is23am10.client.IClient)">
    +<h3>PlayerConnectorRmi</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PlayerConnectorRmi</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/concurrent/LinkedBlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">LinkedBlockingQueue</a>&lt;<a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&gt;&nbsp;msgQueue,
    + <a href="../../../client/IClient.html" title="interface in it.polimi.is23am10.client">IClient</a>&nbsp;client)</span>
    +                   throws <span class="exceptions"><a href="exceptions/NullBlockingQueueException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullBlockingQueueException</a></span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>msgQueue</code> - The message queue instance.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullBlockingQueueException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullBlockingQueueException</a></code> - If providing a null queue when building player connector.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getClient()">
    +<h3>getClient</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../../client/IClient.html" title="interface in it.polimi.is23am10.client">IClient</a></span>&nbsp;<span class="element-name">getClient</span>()</div>
    +<div class="block">Retrive the <a href="../../../client/Client.html" title="class in it.polimi.is23am10.client"><code>Client</code></a> reference.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The client reference.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setClient(it.polimi.is23am10.client.IClient)">
    +<h3>setClient</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setClient</span><wbr><span class="parameters">(<a href="../../../client/IClient.html" title="interface in it.polimi.is23am10.client">IClient</a>&nbsp;client)</span></div>
    +<div class="block">Set the <a href="../../../client/Client.html" title="class in it.polimi.is23am10.client"><code>Client</code></a> reference.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>client</code> - The client reference.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="notify(it.polimi.is23am10.server.network.messages.AbstractMessage)">
    +<h3>notify</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notify</span><wbr><span class="parameters">(<a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;msg)</span>
    +            throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a>,
    +<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Notify the player an update.
    + Different delivery strategies are applied based on the <a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages"><code>AbstractMessage</code></a> dynamic type.
    + This blocks undefinably until the queue is available (in case socket is used).
    + <a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> model instances should leverage this
    + queue to send responses to the client (i.e. game updates).</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="AbstractPlayerConnector.html#notify(it.polimi.is23am10.server.network.messages.AbstractMessage)">notify</a></code>&nbsp;in class&nbsp;<code><a href="AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>msg</code> - The message to be added.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code> - On queue message insertion failure.</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - On remote call failure.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html
    new file mode 100644
    index 00000000..329e5746
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html
    @@ -0,0 +1,258 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>PlayerConnectorSocket</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.playerconnector, class: PlayerConnectorSocket">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></div>
    +<h1 title="Class PlayerConnectorSocket" class="title">Class PlayerConnectorSocket</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code>, <code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">PlayerConnectorSocket</span>
    +<span class="extends-implements">extends <a href="AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></span></div>
    +<div class="block">The player connector class definition.
    + This class is responsible to handle clients' sockets connections.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.net.Socket,java.util.concurrent.LinkedBlockingQueue)" class="member-name-link">PlayerConnectorSocket</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a>&nbsp;connector,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/concurrent/LinkedBlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">LinkedBlockingQueue</a>&lt;<a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&gt;&nbsp;msgQueue)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getConnector()" class="member-name-link">getConnector</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link"><code>Socket</code></a>, the low level connector.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#notify(it.polimi.is23am10.server.network.messages.AbstractMessage)" class="member-name-link">notify</a><wbr>(<a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;msg)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Notify the player an update.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setConnector(java.net.Socket)" class="member-name-link">setConnector</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a>&nbsp;socket)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Setter for <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link"><code>Socket</code></a>, the low level connector.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector">Methods inherited from class&nbsp;it.polimi.is23am10.server.network.playerconnector.<a href="AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></h3>
    +<code><a href="AbstractPlayerConnector.html#equals(java.lang.Object)">equals</a>, <a href="AbstractPlayerConnector.html#getGameId()">getGameId</a>, <a href="AbstractPlayerConnector.html#getLastSnoozeMs()">getLastSnoozeMs</a>, <a href="AbstractPlayerConnector.html#getMessageFromQueue()">getMessageFromQueue</a>, <a href="AbstractPlayerConnector.html#getMsgQueueSize()">getMsgQueueSize</a>, <a href="AbstractPlayerConnector.html#getPlayer()">getPlayer</a>, <a href="AbstractPlayerConnector.html#hashCode()">hashCode</a>, <a href="AbstractPlayerConnector.html#setGameId(java.util.UUID)">setGameId</a>, <a href="AbstractPlayerConnector.html#setLastSnoozeMs(long)">setLastSnoozeMs</a>, <a href="AbstractPlayerConnector.html#setPlayer(it.polimi.is23am10.server.model.player.Player)">setPlayer</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.net.Socket,java.util.concurrent.LinkedBlockingQueue)">
    +<h3>PlayerConnectorSocket</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">PlayerConnectorSocket</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a>&nbsp;connector,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/concurrent/LinkedBlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">LinkedBlockingQueue</a>&lt;<a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&gt;&nbsp;msgQueue)</span>
    +                      throws <span class="exceptions"><a href="exceptions/NullSocketConnectorException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullSocketConnectorException</a>,
    +<a href="exceptions/NullBlockingQueueException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullBlockingQueueException</a></span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>connector</code> - The <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link"><code>Socket</code></a> instance linked to a player client.</dd>
    +<dd><code>msgQueue</code> - The message queue instance.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullSocketConnectorException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullSocketConnectorException</a></code></dd>
    +<dd><code><a href="exceptions/NullBlockingQueueException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullBlockingQueueException</a></code> - If providing a null queue when building player connector.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getConnector()">
    +<h3>getConnector</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a></span>&nbsp;<span class="element-name">getConnector</span>()</div>
    +<div class="block">Getter for <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link"><code>Socket</code></a>, the low level connector.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The socket connector.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setConnector(java.net.Socket)">
    +<h3>setConnector</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setConnector</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link">Socket</a>&nbsp;socket)</span>
    +                  throws <span class="exceptions"><a href="exceptions/NullSocketConnectorException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullSocketConnectorException</a></span></div>
    +<div class="block">Setter for <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/net/Socket.html" title="class or interface in java.net" class="external-link"><code>Socket</code></a>, the low level connector.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>socket</code> - the socket I want to set.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullSocketConnectorException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullSocketConnectorException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="notify(it.polimi.is23am10.server.network.messages.AbstractMessage)">
    +<h3>notify</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">notify</span><wbr><span class="parameters">(<a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&nbsp;msg)</span>
    +            throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
    +<div class="block">Notify the player an update.
    + Different delivery strategies are applied based on the <a href="../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages"><code>AbstractMessage</code></a> dynamic type.
    + This blocks undefinably until the queue is available (in case socket is used).
    + <a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> model instances should leverage this
    + queue to send responses to the client (i.e. game updates).</div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code><a href="AbstractPlayerConnector.html#notify(it.polimi.is23am10.server.network.messages.AbstractMessage)">notify</a></code>&nbsp;in class&nbsp;<code><a href="AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></code></dd>
    +<dt>Parameters:</dt>
    +<dd><code>msg</code> - The message to be added.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code> - On queue message insertion failure.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/NullBlockingQueueException.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/NullBlockingQueueException.html
    new file mode 100644
    index 00000000..2f57e58b
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/NullBlockingQueueException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullBlockingQueueException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.playerconnector.exceptions, class: NullBlockingQueueException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a></div>
    +<h1 title="Class NullBlockingQueueException" class="title">Class NullBlockingQueueException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullBlockingQueueException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle null blocking queue instances.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NullBlockingQueueException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NullBlockingQueueException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullBlockingQueueException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/NullSocketConnectorException.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/NullSocketConnectorException.html
    new file mode 100644
    index 00000000..0005d403
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/NullSocketConnectorException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullSocketConnectorException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.playerconnector.exceptions, class: NullSocketConnectorException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a></div>
    +<h1 title="Class NullSocketConnectorException" class="title">Class NullSocketConnectorException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.playerconnector.exceptions.NullSocketConnectorException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullSocketConnectorException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle null socket client connector.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../../serialized-form.html#it.polimi.is23am10.server.network.playerconnector.exceptions.NullSocketConnectorException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NullSocketConnectorException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NullSocketConnectorException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullSocketConnectorException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/package-summary.html
    new file mode 100644
    index 00000000..d2b06c44
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/package-summary.html
    @@ -0,0 +1,111 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.playerconnector.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.playerconnector.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.network.playerconnector.exceptions" class="title">Package it.polimi.is23am10.server.network.playerconnector.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.network.playerconnector.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../interfaces/package-summary.html">it.polimi.is23am10.server.network.playerconnector.interfaces</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="NullBlockingQueueException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullBlockingQueueException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle null blocking queue instances.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullSocketConnectorException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullSocketConnectorException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle null socket client connector.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/package-tree.html
    new file mode 100644
    index 00000000..76080d1c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/exceptions/package-tree.html
    @@ -0,0 +1,81 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.playerconnector.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.network.playerconnector.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.network.playerconnector.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.exceptions.<a href="NullBlockingQueueException.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullBlockingQueueException</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.exceptions.<a href="NullSocketConnectorException.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullSocketConnectorException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html
    new file mode 100644
    index 00000000..749f4cde
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html
    @@ -0,0 +1,238 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>IPlayerConnector</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.playerconnector.interfaces, interface: IPlayerConnector">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.playerconnector.interfaces</a></div>
    +<h1 title="Interface IPlayerConnector" class="title">Interface IPlayerConnector</h1>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Superinterfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>All Known Implementing Classes:</dt>
    +<dd><code><a href="../AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></code>, <code><a href="../PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a></code>, <code><a href="../PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public interface </span><span class="element-name type-name-label">IPlayerConnector</span><span class="extends-implements">
    +extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a></span></div>
    +<div class="block">The player connector interface definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab3" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab3', 3)" class="table-tab">Abstract Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getGameId()" class="member-name-link">getGameId</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Getter for the associated game id.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getMessageFromQueue()" class="member-name-link">getMessageFromQueue</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Retrieve a message from the queue.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>int</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getMsgQueueSize()" class="member-name-link">getMsgQueueSize</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Retrieve the message queue size.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="../../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#getPlayer()" class="member-name-link">getPlayer</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Getter for the associated player.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3"><code><a href="#setPlayer(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">setPlayer</a><wbr>(<a href="../../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;p)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab3">
    +<div class="block">Setter for the associated player.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getPlayer()">
    +<h3>getPlayer</h3>
    +<div class="member-signature"><span class="return-type"><a href="../../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a></span>&nbsp;<span class="element-name">getPlayer</span>()
    +          throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Getter for the associated player.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The player reference.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - On RMI failure.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setPlayer(it.polimi.is23am10.server.model.player.Player)">
    +<h3>setPlayer</h3>
    +<div class="member-signature"><span class="return-type">void</span>&nbsp;<span class="element-name">setPlayer</span><wbr><span class="parameters">(<a href="../../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;p)</span>
    +        throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Setter for the associated player.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>p</code> - The player to be set.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getGameId()">
    +<h3>getGameId</h3>
    +<div class="member-signature"><span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></span>&nbsp;<span class="element-name">getGameId</span>()
    +        throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Getter for the associated game id.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The game id.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - On RMI failure.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMsgQueueSize()">
    +<h3>getMsgQueueSize</h3>
    +<div class="member-signature"><span class="return-type">int</span>&nbsp;<span class="element-name">getMsgQueueSize</span>()
    +             throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></span></div>
    +<div class="block">Retrieve the message queue size.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The blocking message queue size.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - On RMI failure.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMessageFromQueue()">
    +<h3>getMessageFromQueue</h3>
    +<div class="member-signature"><span class="return-type"><a href="../../messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a></span>&nbsp;<span class="element-name">getMessageFromQueue</span>()
    +                             throws <span class="exceptions"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a>,
    +<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></span></div>
    +<div class="block">Retrieve a message from the queue.
    + This deletes the retrieved message.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The oldest message if present.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/InterruptedException.html" title="class or interface in java.lang" class="external-link">InterruptedException</a></code> - On msg queue failure.</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/RemoteException.html" title="class or interface in java.rmi" class="external-link">RemoteException</a></code> - On RMI failure.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/interfaces/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/interfaces/package-summary.html
    new file mode 100644
    index 00000000..3c712f3d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/interfaces/package-summary.html
    @@ -0,0 +1,107 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.playerconnector.interfaces</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.playerconnector.interfaces">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.network.playerconnector.interfaces" class="title">Package it.polimi.is23am10.server.network.playerconnector.interfaces</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.network.playerconnector.interfaces</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../exceptions/package-summary.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Interfaces</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab1"><a href="IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab1">
    +<div class="block">The player connector interface definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/interfaces/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/interfaces/package-tree.html
    new file mode 100644
    index 00000000..07220ab4
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/interfaces/package-tree.html
    @@ -0,0 +1,72 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.playerconnector.interfaces Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.network.playerconnector.interfaces">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.network.playerconnector.interfaces</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">java.rmi.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" class="type-name-link external-link" title="class or interface in java.rmi">Remote</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.interfaces.<a href="IPlayerConnector.html" class="type-name-link" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/package-summary.html
    new file mode 100644
    index 00000000..ddde2f1c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/package-summary.html
    @@ -0,0 +1,115 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.playerconnector</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.playerconnector">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.network.playerconnector" class="title">Package it.polimi.is23am10.server.network.playerconnector</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.network.playerconnector</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="interfaces/package-summary.html">it.polimi.is23am10.server.network.playerconnector.interfaces</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The player connector class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">The player connector class definition.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The player connector class definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/package-tree.html
    new file mode 100644
    index 00000000..06ed5365
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/playerconnector/package-tree.html
    @@ -0,0 +1,77 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.playerconnector Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.network.playerconnector">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.network.playerconnector</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.<a href="AbstractPlayerConnector.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a> (implements it.polimi.is23am10.server.network.playerconnector.interfaces.<a href="interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.<a href="PlayerConnectorRmi.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.<a href="PlayerConnectorSocket.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html b/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html
    new file mode 100644
    index 00000000..52876fd0
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html
    @@ -0,0 +1,324 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>VirtualPlayer</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.virtualview, class: VirtualPlayer">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.virtualview</a></div>
    +<h1 title="Class VirtualPlayer" class="title">Class VirtualPlayer</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.virtualview.VirtualPlayer</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">VirtualPlayer</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">A virtual view with the state of a player, downscoped
    + to what is essential for the client to view</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.virtualview.VirtualPlayer">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.player.Player)" class="member-name-link">VirtualPlayer</a><wbr>(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;p)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getBookshelf()" class="member-name-link">getBookshelf</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for bookshelf.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getIsConnected()" class="member-name-link">getIsConnected</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for connected status.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerId()" class="member-name-link">getPlayerId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for player id.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayerName()" class="member-name-link">getPlayerName</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for player name.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPrivateCardIndex()" class="member-name-link">getPrivateCardIndex</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for private card index.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getScore()" class="member-name-link">getScore</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for score.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#obfuscatePrivateCard()" class="member-name-link">obfuscatePrivateCard</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Void method used when pushing state
    + to all players, in order to keep secret
    + each player's card to other players.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.player.Player)">
    +<h3>VirtualPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">VirtualPlayer</span><wbr><span class="parameters">(<a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&nbsp;p)</span></div>
    +<div class="block">Public constructor. Builds VirtualPlayer out of <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a></div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>p</code> - instance of <a href="../../model/player/Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a> to "virtualize".</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getPlayerId()">
    +<h3>getPlayerId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></span>&nbsp;<span class="element-name">getPlayerId</span>()</div>
    +<div class="block">Getter for player id.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>player id</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getScore()">
    +<h3>getScore</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a></span>&nbsp;<span class="element-name">getScore</span>()</div>
    +<div class="block">Getter for score.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>score</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getBookshelf()">
    +<h3>getBookshelf</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a></span>&nbsp;<span class="element-name">getBookshelf</span>()</div>
    +<div class="block">Getter for bookshelf.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>bookshelf</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPrivateCardIndex()">
    +<h3>getPrivateCardIndex</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getPrivateCardIndex</span>()</div>
    +<div class="block">Getter for private card index.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>private card index</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayerName()">
    +<h3>getPlayerName</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getPlayerName</span>()</div>
    +<div class="block">Getter for player name.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>player name</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getIsConnected()">
    +<h3>getIsConnected</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getIsConnected</span>()</div>
    +<div class="block">Getter for connected status.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>connected status.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="obfuscatePrivateCard()">
    +<h3>obfuscatePrivateCard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">obfuscatePrivateCard</span>()</div>
    +<div class="block">Void method used when pushing state
    + to all players, in order to keep secret
    + each player's card to other players.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/VirtualView.html b/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/VirtualView.html
    new file mode 100644
    index 00000000..74795d92
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/VirtualView.html
    @@ -0,0 +1,374 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>VirtualView</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.virtualview, class: VirtualView">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.server.network.virtualview</a></div>
    +<h1 title="Class VirtualView" class="title">Class VirtualView</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.server.network.virtualview.VirtualView</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">VirtualView</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">A virtual view with the state of the game, downscoped
    + to what is essential for the client to view</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.server.network.virtualview.VirtualView">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(it.polimi.is23am10.server.model.game.Game)" class="member-name-link">VirtualView</a><wbr>(<a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a>&nbsp;g)</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Public constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getActivePlayer()" class="member-name-link">getActivePlayer</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for active player</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getDisconnectedPlayersNum()" class="member-name-link">getDisconnectedPlayersNum</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Simple helper function to get the number of disconnected
    + players to discount when looking for available games.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getFirstPlayer()" class="member-name-link">getFirstPlayer</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for first player</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getGameBoard()" class="member-name-link">getGameBoard</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for game board</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getGameId()" class="member-name-link">getGameId</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for game id</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMaxPlayers()" class="member-name-link">getMaxPlayers</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for max players</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a>&gt;</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getPlayers()" class="member-name-link">getPlayers</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for player list (<a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview"><code>VirtualPlayer</code></a>)</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getSharedCards()" class="member-name-link">getSharedCards</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for shared cards indexes</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="../../model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getStatus()" class="member-name-link">getStatus</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for status.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getWinnerPlayer()" class="member-name-link">getWinnerPlayer</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Getter for winner player</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(it.polimi.is23am10.server.model.game.Game)">
    +<h3>VirtualView</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">VirtualView</span><wbr><span class="parameters">(<a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">Game</a>&nbsp;g)</span></div>
    +<div class="block">Public constructor. Builds VirtualView out of <a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a></div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>g</code> - instance of <a href="../../model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> to "virtualize"</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getGameId()">
    +<h3>getGameId</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a></span>&nbsp;<span class="element-name">getGameId</span>()</div>
    +<div class="block">Getter for game id</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>game id</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getPlayers()">
    +<h3>getPlayers</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a>&gt;</span>&nbsp;<span class="element-name">getPlayers</span>()</div>
    +<div class="block">Getter for player list (<a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview"><code>VirtualPlayer</code></a>)</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>player list</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMaxPlayers()">
    +<h3>getMaxPlayers</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getMaxPlayers</span>()</div>
    +<div class="block">Getter for max players</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>max players</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getActivePlayer()">
    +<h3>getActivePlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></span>&nbsp;<span class="element-name">getActivePlayer</span>()</div>
    +<div class="block">Getter for active player</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>active player</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getFirstPlayer()">
    +<h3>getFirstPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></span>&nbsp;<span class="element-name">getFirstPlayer</span>()</div>
    +<div class="block">Getter for first player</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>first player</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getWinnerPlayer()">
    +<h3>getWinnerPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></span>&nbsp;<span class="element-name">getWinnerPlayer</span>()</div>
    +<div class="block">Getter for winner player</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>winner player</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getGameBoard()">
    +<h3>getGameBoard</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a></span>&nbsp;<span class="element-name">getGameBoard</span>()</div>
    +<div class="block">Getter for game board</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>game board</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getSharedCards()">
    +<h3>getSharedCards</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;</span>&nbsp;<span class="element-name">getSharedCards</span>()</div>
    +<div class="block">Getter for shared cards indexes</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>Pairs of shared cards indexes and descriptions.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getStatus()">
    +<h3>getStatus</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="../../model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></span>&nbsp;<span class="element-name">getStatus</span>()</div>
    +<div class="block">Getter for status.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>game status.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getDisconnectedPlayersNum()">
    +<h3>getDisconnectedPlayersNum</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getDisconnectedPlayersNum</span>()</div>
    +<div class="block">Simple helper function to get the number of disconnected
    + players to discount when looking for available games.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>disconnected player num.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/package-summary.html
    new file mode 100644
    index 00000000..1e935f98
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/package-summary.html
    @@ -0,0 +1,100 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.virtualview</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server.network.virtualview">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li>Related Packages</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li>Related Packages&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server.network.virtualview" class="title">Package it.polimi.is23am10.server.network.virtualview</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server.network.virtualview</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">A virtual view with the state of a player, downscoped
    + to what is essential for the client to view</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">A virtual view with the state of the game, downscoped
    + to what is essential for the client to view</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/package-tree.html
    new file mode 100644
    index 00000000..1779406a
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/network/virtualview/package-tree.html
    @@ -0,0 +1,73 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server.network.virtualview Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server.network.virtualview">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server.network.virtualview</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.virtualview.<a href="VirtualPlayer.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.network.virtualview.<a href="VirtualView.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/server/package-summary.html
    new file mode 100644
    index 00000000..4fd6d2cd
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/package-summary.html
    @@ -0,0 +1,119 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.server">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.server" class="title">Package it.polimi.is23am10.server</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.server</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="command/package-summary.html">it.polimi.is23am10.server.command</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="controller/package-summary.html">it.polimi.is23am10.server.controller</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../client/package-summary.html">it.polimi.is23am10.client</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="../utils/package-summary.html">it.polimi.is23am10.utils</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="class-summary-tab0" role="tab" aria-selected="true" aria-controls="class-summary.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary', 2)" class="active-table-tab">All Classes and Interfaces</button><button id="class-summary-tab2" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab2', 2)" class="table-tab">Classes</button><button id="class-summary-tab3" role="tab" aria-selected="false" aria-controls="class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</button></div>
    +<div id="class-summary.tabpanel" role="tabpanel">
    +<div class="summary-table two-column-summary" aria-labelledby="class-summary-tab0">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Server.html" title="class in it.polimi.is23am10.server">Server</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The Server entry point class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab3"><a href="Server.ServerStatus.html" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab3">
    +<div class="block">The serverSocket status.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/server/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/server/package-tree.html
    new file mode 100644
    index 00000000..913e62ff
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/server/package-tree.html
    @@ -0,0 +1,86 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.server Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.server">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.server</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.<a href="Server.html" class="type-name-link" title="class in it.polimi.is23am10.server">Server</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.<a href="Server.ServerStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/ArgParser.html b/deliverables/javadoc/it/polimi/is23am10/utils/ArgParser.html
    new file mode 100644
    index 00000000..10841aa9
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/ArgParser.html
    @@ -0,0 +1,385 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ArgParser</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils, class: ArgParser">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils</a></div>
    +<h1 title="Class ArgParser" class="title">Class ArgParser</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.ArgParser</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ArgParser</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Parser for argument from CLI.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#DEBUG_CLI_COMMAND" class="member-name-link">DEBUG_CLI_COMMAND</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The debug command.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#IS_SERVER_CLI_COMMAND" class="member-name-link">IS_SERVER_CLI_COMMAND</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The is server command.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#KEEP_ALIVE_CLI_COMMAND" class="member-name-link">KEEP_ALIVE_CLI_COMMAND</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The keep alive cli command.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#MAX_CLIENT_INACTIVITY_TIME" class="member-name-link">MAX_CLIENT_INACTIVITY_TIME</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The max players inactivity time command.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#MAX_CONNECTIONS_CLI_COMMAND" class="member-name-link">MAX_CONNECTIONS_CLI_COMMAND</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The max connections cli command.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#RMI_PORT_CLI_COMMAND" class="member-name-link">RMI_PORT_CLI_COMMAND</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The rmi port cli command.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#SERVER_ADDRESS_CLI_COMMAND" class="member-name-link">SERVER_ADDRESS_CLI_COMMAND</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The server address cli command.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#SHOW_GUI_CLI_COMMAND" class="member-name-link">SHOW_GUI_CLI_COMMAND</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The show gui cli command.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#SOCKET_PORT_CLI_COMMAND" class="member-name-link">SOCKET_PORT_CLI_COMMAND</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The socket port cli command.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#USE_RMI_CLI_COMMAND" class="member-name-link">USE_RMI_CLI_COMMAND</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The use rmi cli command.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#parse(java.lang.String%5B%5D)" class="member-name-link">parse</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[]&nbsp;args)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Argument parser method that checks commands.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="SOCKET_PORT_CLI_COMMAND">
    +<h3>SOCKET_PORT_CLI_COMMAND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">SOCKET_PORT_CLI_COMMAND</span></div>
    +<div class="block">The socket port cli command.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ArgParser.SOCKET_PORT_CLI_COMMAND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="RMI_PORT_CLI_COMMAND">
    +<h3>RMI_PORT_CLI_COMMAND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">RMI_PORT_CLI_COMMAND</span></div>
    +<div class="block">The rmi port cli command.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ArgParser.RMI_PORT_CLI_COMMAND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MAX_CONNECTIONS_CLI_COMMAND">
    +<h3>MAX_CONNECTIONS_CLI_COMMAND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">MAX_CONNECTIONS_CLI_COMMAND</span></div>
    +<div class="block">The max connections cli command.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ArgParser.MAX_CONNECTIONS_CLI_COMMAND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="KEEP_ALIVE_CLI_COMMAND">
    +<h3>KEEP_ALIVE_CLI_COMMAND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">KEEP_ALIVE_CLI_COMMAND</span></div>
    +<div class="block">The keep alive cli command.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ArgParser.KEEP_ALIVE_CLI_COMMAND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="IS_SERVER_CLI_COMMAND">
    +<h3>IS_SERVER_CLI_COMMAND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">IS_SERVER_CLI_COMMAND</span></div>
    +<div class="block">The is server command.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ArgParser.IS_SERVER_CLI_COMMAND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="SHOW_GUI_CLI_COMMAND">
    +<h3>SHOW_GUI_CLI_COMMAND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">SHOW_GUI_CLI_COMMAND</span></div>
    +<div class="block">The show gui cli command.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ArgParser.SHOW_GUI_CLI_COMMAND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="USE_RMI_CLI_COMMAND">
    +<h3>USE_RMI_CLI_COMMAND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">USE_RMI_CLI_COMMAND</span></div>
    +<div class="block">The use rmi cli command.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ArgParser.USE_RMI_CLI_COMMAND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="SERVER_ADDRESS_CLI_COMMAND">
    +<h3>SERVER_ADDRESS_CLI_COMMAND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">SERVER_ADDRESS_CLI_COMMAND</span></div>
    +<div class="block">The server address cli command.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ArgParser.SERVER_ADDRESS_CLI_COMMAND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="DEBUG_CLI_COMMAND">
    +<h3>DEBUG_CLI_COMMAND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">DEBUG_CLI_COMMAND</span></div>
    +<div class="block">The debug command. If enabled shows all messages in console.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ArgParser.DEBUG_CLI_COMMAND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MAX_CLIENT_INACTIVITY_TIME">
    +<h3>MAX_CLIENT_INACTIVITY_TIME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">MAX_CLIENT_INACTIVITY_TIME</span></div>
    +<div class="block">The max players inactivity time command.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ArgParser.MAX_CLIENT_INACTIVITY_TIME">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="parse(java.lang.String[])">
    +<h3>parse</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">parse</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>[]&nbsp;args)</span>
    +                  throws <span class="exceptions"><a href="exceptions/InvalidArgumentException.html" title="class in it.polimi.is23am10.utils.exceptions">InvalidArgumentException</a>,
    +<a href="exceptions/MissingParameterException.html" title="class in it.polimi.is23am10.utils.exceptions">MissingParameterException</a>,
    +<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NumberFormatException.html" title="class or interface in java.lang" class="external-link">NumberFormatException</a>,
    +<a href="config/exceptions/InvalidPortNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a>,
    +<a href="config/exceptions/InvalidMaxConnectionsNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidMaxConnectionsNumberException</a></span></div>
    +<div class="block">Argument parser method that checks commands.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>args</code> - arguments passed through cli.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/InvalidArgumentException.html" title="class in it.polimi.is23am10.utils.exceptions">InvalidArgumentException</a></code> - for invalid command.</dd>
    +<dd><code><a href="exceptions/MissingParameterException.html" title="class in it.polimi.is23am10.utils.exceptions">MissingParameterException</a></code> - for missing param.</dd>
    +<dd><code><a href="config/exceptions/InvalidPortNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a></code> - if port not in bounds.</dd>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/NumberFormatException.html" title="class or interface in java.lang" class="external-link">NumberFormatException</a></code> - if int not found.</dd>
    +<dd><code><a href="config/exceptions/InvalidMaxConnectionsNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidMaxConnectionsNumberException</a></code> - if the max number of connections is invalid.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/CommandSyntaxValidator.html b/deliverables/javadoc/it/polimi/is23am10/utils/CommandSyntaxValidator.html
    new file mode 100644
    index 00000000..a01b61b6
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/CommandSyntaxValidator.html
    @@ -0,0 +1,213 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>CommandSyntaxValidator</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils, class: CommandSyntaxValidator">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils</a></div>
    +<h1 title="Class CommandSyntaxValidator" class="title">Class CommandSyntaxValidator</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.CommandSyntaxValidator</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">CommandSyntaxValidator</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Helper class to validate user input strings.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateColIdx(java.lang.String)" class="member-name-link">validateColIdx</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method validator of column index input.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateCoord(java.lang.String)" class="member-name-link">validateCoord</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method validator of coordinates input.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateGameIdx(java.lang.String,java.lang.Integer)" class="member-name-link">validateGameIdx</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;n)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method validator of game index input.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateMaxPlayer(java.lang.String)" class="member-name-link">validateMaxPlayer</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method validator of max player input.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="validateGameIdx(java.lang.String,java.lang.Integer)">
    +<h3>validateGameIdx</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">validateGameIdx</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;n)</span></div>
    +<div class="block">Method validator of game index input.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>s</code> - string with game index chosen.</dd>
    +<dd><code>n</code> - index max.</dd>
    +<dt>Returns:</dt>
    +<dd>true if valid.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validateMaxPlayer(java.lang.String)">
    +<h3>validateMaxPlayer</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">validateMaxPlayer</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s)</span></div>
    +<div class="block">Method validator of max player input.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>s</code> - string with game index chosen.</dd>
    +<dt>Returns:</dt>
    +<dd>true if valid.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validateCoord(java.lang.String)">
    +<h3>validateCoord</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">validateCoord</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s)</span></div>
    +<div class="block">Method validator of coordinates input.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>s</code> - string with game index chosen.</dd>
    +<dt>Returns:</dt>
    +<dd>true if valid.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validateColIdx(java.lang.String)">
    +<h3>validateColIdx</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">validateColIdx</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;s)</span></div>
    +<div class="block">Method validator of column index input.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>s</code> - string with col index chosen.</dd>
    +<dt>Returns:</dt>
    +<dd>true if valid.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/Coordinates.html b/deliverables/javadoc/it/polimi/is23am10/utils/Coordinates.html
    new file mode 100644
    index 00000000..085ef529
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/Coordinates.html
    @@ -0,0 +1,302 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Coordinates</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils, class: Coordinates">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils</a></div>
    +<h1 title="Class Coordinates" class="title">Class Coordinates</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.Coordinates</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">Coordinates</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></span></div>
    +<div class="block">The Coordinate helper class definition.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../serialized-form.html#it.polimi.is23am10.utils.Coordinates">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">Coordinates</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Empty constructor that sets the coordinates in the origin.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer,java.lang.Integer)" class="member-name-link">Coordinates</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;r,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;c)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Constructor of Coordinates given the two indexes.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#equals(java.lang.Object)" class="member-name-link">equals</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getCol()" class="member-name-link">getCol</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Column getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getRow()" class="member-name-link">getRow</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Row getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>int</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#hashCode()" class="member-name-link">hashCode</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"></div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setCol(java.lang.Integer)" class="member-name-link">setCol</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;c)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Column setter</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#setRow(java.lang.Integer)" class="member-name-link">setRow</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;r)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Row setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#toString()" class="member-name-link">toString</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.Integer,java.lang.Integer)">
    +<h3>Coordinates</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Coordinates</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;r,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;c)</span></div>
    +<div class="block">Constructor of Coordinates given the two indexes.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>r</code> - row index.</dd>
    +<dd><code>c</code> - column index.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>Coordinates</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">Coordinates</span>()</div>
    +<div class="block">Empty constructor that sets the coordinates in the origin.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getRow()">
    +<h3>getRow</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getRow</span>()</div>
    +<div class="block">Row getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>row index.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getCol()">
    +<h3>getCol</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getCol</span>()</div>
    +<div class="block">Column getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>column index.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setRow(java.lang.Integer)">
    +<h3>setRow</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setRow</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;r)</span></div>
    +<div class="block">Row setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>r</code> - row index.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setCol(java.lang.Integer)">
    +<h3>setCol</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setCol</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;c)</span></div>
    +<div class="block">Column setter</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>c</code> - column index.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="equals(java.lang.Object)">
    +<h3>equals</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">equals</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>&nbsp;obj)</span></div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="hashCode()">
    +<h3>hashCode</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">int</span>&nbsp;<span class="element-name">hashCode</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="toString()">
    +<h3>toString</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">toString</span>()</div>
    +<dl class="notes">
    +<dt>Overrides:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/ErrorTypeString.html b/deliverables/javadoc/it/polimi/is23am10/utils/ErrorTypeString.html
    new file mode 100644
    index 00000000..ceb56550
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/ErrorTypeString.html
    @@ -0,0 +1,532 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ErrorTypeString</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils, class: ErrorTypeString">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li>Constr</li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils</a></div>
    +<h1 title="Class ErrorTypeString" class="title">Class ErrorTypeString</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.ErrorTypeString</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">ErrorTypeString</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Helper class to identify messages to be sent to client and to logger.
    + Some messages might be sent to client only, hiding complexity where not
    + needed, others might be sent to server only for same reasons. Please check each string's javadoc.
    + 
    + <p>The error convention used is the same as <a href="../server/network/messages/ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages"><code>ErrorMessage.ErrorSeverity</code></a></p></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#ERROR_ADDING_CONNECTOR" class="member-name-link">ERROR_ADDING_CONNECTOR</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message error in adding player connector.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#ERROR_ADDING_HANDLER" class="member-name-link">ERROR_ADDING_HANDLER</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message error in adding game handler.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#ERROR_ADDING_PLAYERS" class="member-name-link">ERROR_ADDING_PLAYERS</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message error in adding player to the game.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#ERROR_GAME_FULL" class="member-name-link">ERROR_GAME_FULL</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message error to be shown client-side when trying to join a game already full.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#ERROR_GAME_STATE" class="member-name-link">ERROR_GAME_STATE</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message error in game model fault.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#ERROR_INITIALIZING_NEW_GAME" class="member-name-link">ERROR_INITIALIZING_NEW_GAME</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message error in initializing the game.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#ERROR_INVALID_MOVE" class="member-name-link">ERROR_INVALID_MOVE</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message error in executing a move chosen by the client.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#ERROR_JOINING" class="member-name-link">ERROR_JOINING</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message error in adding player to the game.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#ERROR_MESSAGE_DELIVERY" class="member-name-link">ERROR_MESSAGE_DELIVERY</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message error on failure while pushing messages in player queues.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#ERROR_RMI_EXPOSURE" class="member-name-link">ERROR_RMI_EXPOSURE</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message error in adding a new RMI player connector.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#ERROR_SERVER_SIDE" class="member-name-link">ERROR_SERVER_SIDE</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message error to be shown client-side to hide server-side controller failures
    + that the user can't help fixing (player connectors, gamehandlers, networking...).</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#ERROR_SNOOZING_TIMER" class="member-name-link">ERROR_SNOOZING_TIMER</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message error in snoozing game time handler.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#ERROR_SOCKET_CONNECTOR" class="member-name-link">ERROR_SOCKET_CONNECTOR</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message error in retrieving socket connector.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#ERROR_UPDATING_GAME" class="member-name-link">ERROR_UPDATING_GAME</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message error on failure while pushing game updates in player queues.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#RECEIVER_NOT_FOUND" class="member-name-link">RECEIVER_NOT_FOUND</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message error in sending message to player name not existing.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#WARNING_PLAYER_DISCONNECT" class="member-name-link">WARNING_PLAYER_DISCONNECT</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message warning sent to all players to inform them of a player
    + leaving the game.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#WARNING_PLAYER_JOIN" class="member-name-link">WARNING_PLAYER_JOIN</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message warning sent to all players to inform them of a new player
    + joining the game.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#WARNING_PLAYER_JOIN_SERVER" class="member-name-link">WARNING_PLAYER_JOIN_SERVER</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Message warning logged when new player is joining the game.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#WARNING_PLAYER_REJOIN" class="member-name-link">WARNING_PLAYER_REJOIN</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Message warning sent to all players to inform them of a new player
    + joining the game.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="ERROR_INITIALIZING_NEW_GAME">
    +<h3>ERROR_INITIALIZING_NEW_GAME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_INITIALIZING_NEW_GAME</span></div>
    +<div class="block">Message error in initializing the game.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_INITIALIZING_NEW_GAME">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_ADDING_PLAYERS">
    +<h3>ERROR_ADDING_PLAYERS</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_ADDING_PLAYERS</span></div>
    +<div class="block">Message error in adding player to the game.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_ADDING_PLAYERS">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_JOINING">
    +<h3>ERROR_JOINING</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_JOINING</span></div>
    +<div class="block">Message error in adding player to the game.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_JOINING">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_MESSAGE_DELIVERY">
    +<h3>ERROR_MESSAGE_DELIVERY</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_MESSAGE_DELIVERY</span></div>
    +<div class="block">Message error on failure while pushing messages in player queues.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_MESSAGE_DELIVERY">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_INVALID_MOVE">
    +<h3>ERROR_INVALID_MOVE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_INVALID_MOVE</span></div>
    +<div class="block">Message error in executing a move chosen by the client.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_INVALID_MOVE">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_GAME_FULL">
    +<h3>ERROR_GAME_FULL</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_GAME_FULL</span></div>
    +<div class="block">Message error to be shown client-side when trying to join a game already full.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_GAME_FULL">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_SERVER_SIDE">
    +<h3>ERROR_SERVER_SIDE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_SERVER_SIDE</span></div>
    +<div class="block">Message error to be shown client-side to hide server-side controller failures
    + that the user can't help fixing (player connectors, gamehandlers, networking...).</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_SERVER_SIDE">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WARNING_PLAYER_JOIN">
    +<h3>WARNING_PLAYER_JOIN</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WARNING_PLAYER_JOIN</span></div>
    +<div class="block">Message warning sent to all players to inform them of a new player
    + joining the game.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.WARNING_PLAYER_JOIN">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WARNING_PLAYER_JOIN_SERVER">
    +<h3>WARNING_PLAYER_JOIN_SERVER</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WARNING_PLAYER_JOIN_SERVER</span></div>
    +<div class="block">Message warning logged when new player is joining the game.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.WARNING_PLAYER_JOIN_SERVER">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WARNING_PLAYER_REJOIN">
    +<h3>WARNING_PLAYER_REJOIN</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WARNING_PLAYER_REJOIN</span></div>
    +<div class="block">Message warning sent to all players to inform them of a new player
    + joining the game.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.WARNING_PLAYER_REJOIN">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="WARNING_PLAYER_DISCONNECT">
    +<h3>WARNING_PLAYER_DISCONNECT</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">WARNING_PLAYER_DISCONNECT</span></div>
    +<div class="block">Message warning sent to all players to inform them of a player
    + leaving the game.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.WARNING_PLAYER_DISCONNECT">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_ADDING_CONNECTOR">
    +<h3>ERROR_ADDING_CONNECTOR</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_ADDING_CONNECTOR</span></div>
    +<div class="block">Message error in adding player connector.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_ADDING_CONNECTOR">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_SOCKET_CONNECTOR">
    +<h3>ERROR_SOCKET_CONNECTOR</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_SOCKET_CONNECTOR</span></div>
    +<div class="block">Message error in retrieving socket connector.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_SOCKET_CONNECTOR">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_ADDING_HANDLER">
    +<h3>ERROR_ADDING_HANDLER</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_ADDING_HANDLER</span></div>
    +<div class="block">Message error in adding game handler.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_ADDING_HANDLER">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_UPDATING_GAME">
    +<h3>ERROR_UPDATING_GAME</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_UPDATING_GAME</span></div>
    +<div class="block">Message error on failure while pushing game updates in player queues.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_UPDATING_GAME">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_RMI_EXPOSURE">
    +<h3>ERROR_RMI_EXPOSURE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_RMI_EXPOSURE</span></div>
    +<div class="block">Message error in adding a new RMI player connector.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_RMI_EXPOSURE">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_SNOOZING_TIMER">
    +<h3>ERROR_SNOOZING_TIMER</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_SNOOZING_TIMER</span></div>
    +<div class="block">Message error in snoozing game time handler.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_SNOOZING_TIMER">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="ERROR_GAME_STATE">
    +<h3>ERROR_GAME_STATE</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">ERROR_GAME_STATE</span></div>
    +<div class="block">Message error in game model fault.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.ERROR_GAME_STATE">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="RECEIVER_NOT_FOUND">
    +<h3>RECEIVER_NOT_FOUND</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">RECEIVER_NOT_FOUND</span></div>
    +<div class="block">Message error in sending message to player name not existing.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../constant-values.html#it.polimi.is23am10.utils.ErrorTypeString.RECEIVER_NOT_FOUND">Constant Field Values</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/IndexValidator.html b/deliverables/javadoc/it/polimi/is23am10/utils/IndexValidator.html
    new file mode 100644
    index 00000000..4a832324
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/IndexValidator.html
    @@ -0,0 +1,184 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>IndexValidator</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils, class: IndexValidator">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils</a></div>
    +<h1 title="Class IndexValidator" class="title">Class IndexValidator</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.IndexValidator</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">IndexValidator</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Index validator class definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validColIndex(java.lang.Integer,java.lang.Integer)" class="member-name-link">validColIndex</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxValue)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Validate the column index.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validRowIndex(java.lang.Integer,java.lang.Integer)" class="member-name-link">validRowIndex</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxValue)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Validate the row index.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="validRowIndex(java.lang.Integer,java.lang.Integer)">
    +<h3>validRowIndex</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">validRowIndex</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxValue)</span>
    +                             throws <span class="exceptions"><a href="exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></span></div>
    +<div class="block">Validate the row index.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>row</code> - The index value to be evaluated.</dd>
    +<dt>Returns:</dt>
    +<dd>The validation result.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="validColIndex(java.lang.Integer,java.lang.Integer)">
    +<h3>validColIndex</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">validColIndex</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxValue)</span>
    +                             throws <span class="exceptions"><a href="exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></span></div>
    +<div class="block">Validate the column index.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>col</code> - The index value to be evaluated.</dd>
    +<dt>Returns:</dt>
    +<dd>The validation result.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/MoveCommandHelper.html b/deliverables/javadoc/it/polimi/is23am10/utils/MoveCommandHelper.html
    new file mode 100644
    index 00000000..df0fa983
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/MoveCommandHelper.html
    @@ -0,0 +1,173 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>MoveCommandHelper</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils, class: MoveCommandHelper">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils</a></div>
    +<h1 title="Class MoveCommandHelper" class="title">Class MoveCommandHelper</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.MoveCommandHelper</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MoveCommandHelper</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">Helper class to convert input move from index to coordinates.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#fromColIdxToCoord(java.lang.String,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,java.lang.Integer)" class="member-name-link">fromColIdxToCoord</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;idx,
    + <a href="../server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bs,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;nMoves)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Method that takes the column input of the player bookshelf and returns the list of the 
    + first available empty coordinates.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="fromColIdxToCoord(java.lang.String,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,java.lang.Integer)">
    +<h3>fromColIdxToCoord</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;</span>&nbsp;<span class="element-name">fromColIdxToCoord</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;idx,
    + <a href="../server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bs,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;nMoves)</span>
    +                                           throws <span class="exceptions"><a href="../server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a>,
    +<a href="../server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a>,
    +<a href="exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a>,
    +<a href="exceptions/WrongBookShelfPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a></span></div>
    +<div class="block">Method that takes the column input of the player bookshelf and returns the list of the 
    + first available empty coordinates.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>idx</code> - column index.</dd>
    +<dd><code>bs</code> - player bookshelf.</dd>
    +<dd><code>nMoves</code> - number of moves made and of empty coords to check.</dd>
    +<dt>Returns:</dt>
    +<dd>list of first available empty coordinates of the bookshelf</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="../server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code></dd>
    +<dd><code><a href="../server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code></dd>
    +<dd><code><a href="exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code></dd>
    +<dd><code><a href="exceptions/WrongBookShelfPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a></code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html b/deliverables/javadoc/it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html
    new file mode 100644
    index 00000000..eca71e85
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html
    @@ -0,0 +1,208 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>MoveTileCommandTypeAdaptor</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils, class: MoveTileCommandTypeAdaptor">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils</a></div>
    +<h1 title="Class MoveTileCommandTypeAdaptor" class="title">Class MoveTileCommandTypeAdaptor</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.MoveTileCommandTypeAdaptor</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.google.gson.JsonDeserializer&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&gt;</code>, <code>com.google.gson.JsonSerializer&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&gt;</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MoveTileCommandTypeAdaptor</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements com.google.gson.JsonSerializer&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&gt;, com.google.gson.JsonDeserializer&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&gt;</span></div>
    +<div class="block">Custom deserializer class definition for Gson usage.
    + This works <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link"><code>Map</code></a> with <a href="Coordinates.html" title="class in it.polimi.is23am10.utils"><code>Coordinates</code></a> as keys.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">MoveTileCommandTypeAdaptor</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#deserialize(com.google.gson.JsonElement,java.lang.reflect.Type,com.google.gson.JsonDeserializationContext)" class="member-name-link">deserialize</a><wbr>(com.google.gson.JsonElement&nbsp;json,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/reflect/Type.html" title="class or interface in java.lang.reflect" class="external-link">Type</a>&nbsp;typeOfT,
    + com.google.gson.JsonDeserializationContext&nbsp;context)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>com.google.gson.JsonElement</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#serialize(java.util.Map,java.lang.reflect.Type,com.google.gson.JsonSerializationContext)" class="member-name-link">serialize</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&nbsp;src,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/reflect/Type.html" title="class or interface in java.lang.reflect" class="external-link">Type</a>&nbsp;typeOfSrc,
    + com.google.gson.JsonSerializationContext&nbsp;context)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>MoveTileCommandTypeAdaptor</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MoveTileCommandTypeAdaptor</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="serialize(java.util.Map,java.lang.reflect.Type,com.google.gson.JsonSerializationContext)">
    +<h3>serialize</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">com.google.gson.JsonElement</span>&nbsp;<span class="element-name">serialize</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&nbsp;src,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/reflect/Type.html" title="class or interface in java.lang.reflect" class="external-link">Type</a>&nbsp;typeOfSrc,
    + com.google.gson.JsonSerializationContext&nbsp;context)</span></div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code>serialize</code>&nbsp;in interface&nbsp;<code>com.google.gson.JsonSerializer&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&gt;</code></dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="deserialize(com.google.gson.JsonElement,java.lang.reflect.Type,com.google.gson.JsonDeserializationContext)">
    +<h3>deserialize</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;</span>&nbsp;<span class="element-name">deserialize</span><wbr><span class="parameters">(com.google.gson.JsonElement&nbsp;json,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/reflect/Type.html" title="class or interface in java.lang.reflect" class="external-link">Type</a>&nbsp;typeOfT,
    + com.google.gson.JsonDeserializationContext&nbsp;context)</span>
    +                                         throws <span class="exceptions">com.google.gson.JsonParseException</span></div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code>deserialize</code>&nbsp;in interface&nbsp;<code>com.google.gson.JsonDeserializer&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&gt;</code></dd>
    +<dt>Throws:</dt>
    +<dd><code>com.google.gson.JsonParseException</code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/MovesValidator.html b/deliverables/javadoc/it/polimi/is23am10/utils/MovesValidator.html
    new file mode 100644
    index 00000000..79a06a94
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/MovesValidator.html
    @@ -0,0 +1,191 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>MovesValidator</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils, class: MovesValidator">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils</a></div>
    +<h1 title="Class MovesValidator" class="title">Class MovesValidator</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.MovesValidator</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MovesValidator</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The game movement validator class definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#validateGameMoves(java.util.Map,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,it.polimi.is23am10.server.model.items.board.Board)" class="member-name-link">validateGameMoves</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&nbsp;moves,
    + <a href="../server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bookshelf,
    + <a href="../server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a>&nbsp;board)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Validates the game moves for the given moves, bookshelf and board.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="validateGameMoves(java.util.Map,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,it.polimi.is23am10.server.model.items.board.Board)">
    +<h3>validateGameMoves</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">validateGameMoves</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt;&nbsp;moves,
    + <a href="../server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&nbsp;bookshelf,
    + <a href="../server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a>&nbsp;board)</span>
    +                              throws <span class="exceptions"><a href="exceptions/WrongMovesNumberException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongMovesNumberException</a>,
    +<a href="../server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a>,
    +<a href="../server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a>,
    +<a href="exceptions/WrongGameBoardPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongGameBoardPicksException</a>,
    +<a href="exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a>,
    +<a href="../server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a>,
    +<a href="../server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a>,
    +<a href="exceptions/WrongBookShelfPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a></span></div>
    +<div class="block">Validates the game moves for the given moves, bookshelf and board.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>moves</code> - the map of coordinates to coordinates representing the moves
    +                  made on the board</dd>
    +<dd><code>bookshelf</code> - the bookshelf to validate the moves on</dd>
    +<dd><code>board</code> - the game board to validate the moves on</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/WrongMovesNumberException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongMovesNumberException</a></code> - If the game moves are in an illegal number.                 if the number of moves made
    +                                                   is less than 1 or greater
    +                                                   than 3</dd>
    +<dd><code><a href="exceptions/WrongGameBoardPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongGameBoardPicksException</a></code> - If the game moves are invalid because of board picking.              if the picks made on the
    +                                                   board are invalid</dd>
    +<dd><code><a href="../server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></code> - If the board row index is out of bounds.     if a row index in the moves
    +                                                   is out of bounds of the
    +                                                   board</dd>
    +<dd><code><a href="../server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></code> - If the board column index is out of bounds.     if a column index in the
    +                                                   moves is out of bounds of
    +                                                   the board</dd>
    +<dd><code><a href="exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></code> - If the index provided is null.                   if a null coordinate is
    +                                                   present in the moves</dd>
    +<dd><code><a href="../server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code> - If the bookshelf column index is out of bounds. if a column index in the
    +                                                   moves is out of bounds of
    +                                                   the bookshelf</dd>
    +<dd><code><a href="../server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code> - If the bookshelf row index is out of bounds. if a row index in the moves
    +                                                   is out of bounds of the
    +                                                   bookshelf</dd>
    +<dd><code><a href="exceptions/WrongBookShelfPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a></code> - If the game moves are invalid because of bookshelf placement.              if the picks made on the
    +                                                   bookshelf are invalid</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory.html b/deliverables/javadoc/it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory.html
    new file mode 100644
    index 00000000..e2fe02ea
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory.html
    @@ -0,0 +1,184 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ThreadLocalTypeAdapterFactory</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils, class: ThreadLocalTypeAdapterFactory">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils</a></div>
    +<h1 title="Class ThreadLocalTypeAdapterFactory" class="title">Class ThreadLocalTypeAdapterFactory</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.ThreadLocalTypeAdapterFactory</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code>com.google.gson.TypeAdapterFactory</code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ThreadLocalTypeAdapterFactory</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a>
    +implements com.google.gson.TypeAdapterFactory</span></div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">ThreadLocalTypeAdapterFactory</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>&lt;T&gt;&nbsp;com.google.gson.TypeAdapter&lt;T&gt;</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#create(com.google.gson.Gson,com.google.gson.reflect.TypeToken)" class="member-name-link">create</a><wbr>(com.google.gson.Gson&nbsp;gson,
    + com.google.gson.reflect.TypeToken&lt;T&gt;&nbsp;type)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">&nbsp;</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>ThreadLocalTypeAdapterFactory</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ThreadLocalTypeAdapterFactory</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="create(com.google.gson.Gson,com.google.gson.reflect.TypeToken)">
    +<h3>create</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="type-parameters">&lt;T&gt;</span>&nbsp;<span class="return-type">com.google.gson.TypeAdapter&lt;T&gt;</span>&nbsp;<span class="element-name">create</span><wbr><span class="parameters">(com.google.gson.Gson&nbsp;gson,
    + com.google.gson.reflect.TypeToken&lt;T&gt;&nbsp;type)</span></div>
    +<dl class="notes">
    +<dt>Specified by:</dt>
    +<dd><code>create</code>&nbsp;in interface&nbsp;<code>com.google.gson.TypeAdapterFactory</code></dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/config/AppConfig.html b/deliverables/javadoc/it/polimi/is23am10/utils/config/AppConfig.html
    new file mode 100644
    index 00000000..687a8b4c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/config/AppConfig.html
    @@ -0,0 +1,537 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AppConfig</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.config, class: AppConfig">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li><a href="#field-summary">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li><a href="#field-detail">Field</a></li>
    +<li>Constr</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li><a href="#field-summary">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li><a href="#field-detail">Field</a>&nbsp;|&nbsp;</li>
    +<li>Constr&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.config</a></div>
    +<h1 title="Class AppConfig" class="title">Class AppConfig</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.config.AppConfig</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public final class </span><span class="element-name type-name-label">AppConfig</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The application config class definition.
    + If not set otherwise all the configuration parameters for the application
    + are set to default values here.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- =========== FIELD SUMMARY =========== -->
    +<li>
    +<section class="field-summary" id="field-summary">
    +<h2>Field Summary</h2>
    +<div class="caption"><span>Fields</span></div>
    +<div class="summary-table three-column-summary">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Field</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#MAX_CONNECTIONS_NUMBER" class="member-name-link">MAX_CONNECTIONS_NUMBER</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The upper bound of connection numbers.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#MAX_PORT_NUMBER" class="member-name-link">MAX_PORT_NUMBER</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The upper bound of port numbers.</div>
    +</div>
    +<div class="col-first even-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color"><code><a href="#MIN_CONNECTIONS_NUMBER" class="member-name-link">MIN_CONNECTIONS_NUMBER</a></code></div>
    +<div class="col-last even-row-color">
    +<div class="block">The lower bound of connection numbers.</div>
    +</div>
    +<div class="col-first odd-row-color"><code>static final <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color"><code><a href="#MIN_PORT_NUMBER" class="member-name-link">MIN_PORT_NUMBER</a></code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">The lower bound of port numbers.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab1" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab1', 3)" class="table-tab">Static Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getIsServer()" class="member-name-link">getIsServer</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Is server getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getKeepAlive()" class="member-name-link">getKeepAlive</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Keep alive getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getMaxConnections()" class="member-name-link">getMaxConnections</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Max connections getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static long</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getMaxInactivityTime()" class="member-name-link">getMaxInactivityTime</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Max inactivity time getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getServerAddress()" class="member-name-link">getServerAddress</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Server address getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getServerRmiPort()" class="member-name-link">getServerRmiPort</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Server port getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getServerSocketPort()" class="member-name-link">getServerSocketPort</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Server port getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getShowDebug()" class="member-name-link">getShowDebug</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Show debug getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getShowGUI()" class="member-name-link">getShowGUI</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Show GUI getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#getUseRMI()" class="member-name-link">getUseRMI</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Use RMI getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setIsServer(boolean)" class="member-name-link">setIsServer</a><wbr>(boolean&nbsp;is)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Keep alive setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setKeepAlive(boolean)" class="member-name-link">setKeepAlive</a><wbr>(boolean&nbsp;k)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Keep alive setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setMaxConnections(java.lang.Integer)" class="member-name-link">setMaxConnections</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxConn)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Max connections setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setMaxInactivityTimeMs(long)" class="member-name-link">setMaxInactivityTimeMs</a><wbr>(long&nbsp;time)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Max inactivity time setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setServerAddress(java.lang.String)" class="member-name-link">setServerAddress</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;address)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Server address setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setServerRmiPort(java.lang.Integer)" class="member-name-link">setServerRmiPort</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;p)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Server port setter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setServerSocketPort(java.lang.Integer)" class="member-name-link">setServerSocketPort</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;p)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Server port setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setShowDebug(boolean)" class="member-name-link">setShowDebug</a><wbr>(boolean&nbsp;debug)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Show verbose debug.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setShowGUI(boolean)" class="member-name-link">setShowGUI</a><wbr>(boolean&nbsp;sg)</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Show GUI setter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code>static void</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4"><code><a href="#setUseRMI(boolean)" class="member-name-link">setUseRMI</a><wbr>(boolean&nbsp;rmi)</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab1 method-summary-table-tab4">
    +<div class="block">Use RMI setter.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ============ FIELD DETAIL =========== -->
    +<li>
    +<section class="field-details" id="field-detail">
    +<h2>Field Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="MIN_PORT_NUMBER">
    +<h3>MIN_PORT_NUMBER</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">MIN_PORT_NUMBER</span></div>
    +<div class="block">The lower bound of port numbers.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MAX_PORT_NUMBER">
    +<h3>MAX_PORT_NUMBER</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">MAX_PORT_NUMBER</span></div>
    +<div class="block">The upper bound of port numbers.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MIN_CONNECTIONS_NUMBER">
    +<h3>MIN_CONNECTIONS_NUMBER</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">MIN_CONNECTIONS_NUMBER</span></div>
    +<div class="block">The lower bound of connection numbers.</div>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="MAX_CONNECTIONS_NUMBER">
    +<h3>MAX_CONNECTIONS_NUMBER</h3>
    +<div class="member-signature"><span class="modifiers">public static final</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">MAX_CONNECTIONS_NUMBER</span></div>
    +<div class="block">The upper bound of connection numbers.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="setServerSocketPort(java.lang.Integer)">
    +<h3>setServerSocketPort</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setServerSocketPort</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;p)</span>
    +                                throws <span class="exceptions"><a href="exceptions/InvalidPortNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a></span></div>
    +<div class="block">Server port setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>p</code> - port number.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/InvalidPortNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a></code> - invalid port number.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setServerRmiPort(java.lang.Integer)">
    +<h3>setServerRmiPort</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setServerRmiPort</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;p)</span>
    +                             throws <span class="exceptions"><a href="exceptions/InvalidPortNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a></span></div>
    +<div class="block">Server port setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>p</code> - port number.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/InvalidPortNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a></code> - invalid port number.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setMaxConnections(java.lang.Integer)">
    +<h3>setMaxConnections</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setMaxConnections</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxConn)</span>
    +                              throws <span class="exceptions"><a href="exceptions/InvalidMaxConnectionsNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidMaxConnectionsNumberException</a></span></div>
    +<div class="block">Max connections setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>maxConn</code> - number of max connections.</dd>
    +<dt>Throws:</dt>
    +<dd><code><a href="exceptions/InvalidMaxConnectionsNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidMaxConnectionsNumberException</a></code> - invalid number of maxConn.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setKeepAlive(boolean)">
    +<h3>setKeepAlive</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setKeepAlive</span><wbr><span class="parameters">(boolean&nbsp;k)</span></div>
    +<div class="block">Keep alive setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>k</code> - keep alive status.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setIsServer(boolean)">
    +<h3>setIsServer</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setIsServer</span><wbr><span class="parameters">(boolean&nbsp;is)</span></div>
    +<div class="block">Keep alive setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>is</code> - launch server app</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setShowGUI(boolean)">
    +<h3>setShowGUI</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setShowGUI</span><wbr><span class="parameters">(boolean&nbsp;sg)</span></div>
    +<div class="block">Show GUI setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>sg</code> - show GUI if client</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setUseRMI(boolean)">
    +<h3>setUseRMI</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setUseRMI</span><wbr><span class="parameters">(boolean&nbsp;rmi)</span></div>
    +<div class="block">Use RMI setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>rmi</code> - use RMI or not (socket).</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setShowDebug(boolean)">
    +<h3>setShowDebug</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setShowDebug</span><wbr><span class="parameters">(boolean&nbsp;debug)</span></div>
    +<div class="block">Show verbose debug.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>debug</code> - show debug or not.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setServerAddress(java.lang.String)">
    +<h3>setServerAddress</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setServerAddress</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;address)</span></div>
    +<div class="block">Server address setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>address</code> - Server address.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="setMaxInactivityTimeMs(long)">
    +<h3>setMaxInactivityTimeMs</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">void</span>&nbsp;<span class="element-name">setMaxInactivityTimeMs</span><wbr><span class="parameters">(long&nbsp;time)</span></div>
    +<div class="block">Max inactivity time setter.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>time</code> - max inactivity time in ms.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getServerSocketPort()">
    +<h3>getServerSocketPort</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getServerSocketPort</span>()</div>
    +<div class="block">Server port getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The instantiated server port.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getServerRmiPort()">
    +<h3>getServerRmiPort</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getServerRmiPort</span>()</div>
    +<div class="block">Server port getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The instantiated server port.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMaxConnections()">
    +<h3>getMaxConnections</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getMaxConnections</span>()</div>
    +<div class="block">Max connections getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The maximum allowed connections.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getKeepAlive()">
    +<h3>getKeepAlive</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getKeepAlive</span>()</div>
    +<div class="block">Keep alive getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The keep alive flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getIsServer()">
    +<h3>getIsServer</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getIsServer</span>()</div>
    +<div class="block">Is server getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The isServer flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getShowGUI()">
    +<h3>getShowGUI</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getShowGUI</span>()</div>
    +<div class="block">Show GUI getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The show GUI flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getUseRMI()">
    +<h3>getUseRMI</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getUseRMI</span>()</div>
    +<div class="block">Use RMI getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The use RMI flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getServerAddress()">
    +<h3>getServerAddress</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getServerAddress</span>()</div>
    +<div class="block">Server address getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The server address.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getShowDebug()">
    +<h3>getShowDebug</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getShowDebug</span>()</div>
    +<div class="block">Show debug getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The debug flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMaxInactivityTime()">
    +<h3>getMaxInactivityTime</h3>
    +<div class="member-signature"><span class="modifiers">public static</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getMaxInactivityTime</span>()</div>
    +<div class="block">Max inactivity time getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The max inactivity time.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/config/AppConfigContext.html b/deliverables/javadoc/it/polimi/is23am10/utils/config/AppConfigContext.html
    new file mode 100644
    index 00000000..7d1c887e
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/config/AppConfigContext.html
    @@ -0,0 +1,370 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>AppConfigContext</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.config, class: AppConfigContext">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-detail">Method</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.config</a></div>
    +<h1 title="Class AppConfigContext" class="title">Class AppConfigContext</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance">it.polimi.is23am10.utils.config.AppConfigContext</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">AppConfigContext</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></span></div>
    +<div class="block">The server config context class definition.</div>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">AppConfigContext</a>()</code></div>
    +<div class="col-last even-row-color">
    +<div class="block">Constructor with default values.</div>
    +</div>
    +<div class="col-constructor-name odd-row-color"><code><a href="#%3Cinit%3E(java.lang.Integer,java.lang.Integer,java.lang.Integer,boolean,boolean,boolean,boolean,java.lang.String,boolean,long)" class="member-name-link">AppConfigContext</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;serverSocketPort,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;serverRmiPort,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxConnections,
    + boolean&nbsp;keepAlive,
    + boolean&nbsp;isServer,
    + boolean&nbsp;showGUI,
    + boolean&nbsp;useRMI,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;serverAddress,
    + boolean&nbsp;showDebug,
    + long&nbsp;maxInactivityTimeMs)</code></div>
    +<div class="col-last odd-row-color">
    +<div class="block">Constructor.</div>
    +</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div id="method-summary-table">
    +<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="method-summary-table-tab0" role="tab" aria-selected="true" aria-controls="method-summary-table.tabpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table', 3)" class="active-table-tab">All Methods</button><button id="method-summary-table-tab2" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab2', 3)" class="table-tab">Instance Methods</button><button id="method-summary-table-tab4" role="tab" aria-selected="false" aria-controls="method-summary-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('method-summary-table', 'method-summary-table-tab4', 3)" class="table-tab">Concrete Methods</button></div>
    +<div id="method-summary-table.tabpanel" role="tabpanel">
    +<div class="summary-table three-column-summary" aria-labelledby="method-summary-table-tab0">
    +<div class="table-header col-first">Modifier and Type</div>
    +<div class="table-header col-second">Method</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getIsServer()" class="member-name-link">getIsServer</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Is server getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getKeepAlive()" class="member-name-link">getKeepAlive</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Keep alive getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMaxConnections()" class="member-name-link">getMaxConnections</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Max connections getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>long</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getMaxInactivityTime()" class="member-name-link">getMaxInactivityTime</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Max inactivity time getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getServerAddress()" class="member-name-link">getServerAddress</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Server address getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getServerRmiPort()" class="member-name-link">getServerRmiPort</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Server rmi port getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getServerSocketPort()" class="member-name-link">getServerSocketPort</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Server socket port getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getShowDebug()" class="member-name-link">getShowDebug</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Show debug getter.</div>
    +</div>
    +<div class="col-first even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getShowGUI()" class="member-name-link">getShowGUI</a>()</code></div>
    +<div class="col-last even-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Show GUI getter.</div>
    +</div>
    +<div class="col-first odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code>boolean</code></div>
    +<div class="col-second odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4"><code><a href="#getUseRMI()" class="member-name-link">getUseRMI</a>()</code></div>
    +<div class="col-last odd-row-color method-summary-table method-summary-table-tab2 method-summary-table-tab4">
    +<div class="block">Use RMI getter.</div>
    +</div>
    +</div>
    +</div>
    +</div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#toString()" title="class or interface in java.lang" class="external-link">toString</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.Integer,java.lang.Integer,java.lang.Integer,boolean,boolean,boolean,boolean,java.lang.String,boolean,long)">
    +<h3>AppConfigContext</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AppConfigContext</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;serverSocketPort,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;serverRmiPort,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxConnections,
    + boolean&nbsp;keepAlive,
    + boolean&nbsp;isServer,
    + boolean&nbsp;showGUI,
    + boolean&nbsp;useRMI,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;serverAddress,
    + boolean&nbsp;showDebug,
    + long&nbsp;maxInactivityTimeMs)</span></div>
    +<div class="block">Constructor.</div>
    +<dl class="notes">
    +<dt>Parameters:</dt>
    +<dd><code>serverSocketPort</code> - The server socket port number.</dd>
    +<dd><code>serverRmiPort</code> - The server rmi port number.</dd>
    +<dd><code>maxConnections</code> - The maximum allowed connections.</dd>
    +<dd><code>keepAlive</code> - The socket keep alive flag.</dd>
    +<dd><code>isServer</code> - Run app in server mode flag.</dd>
    +<dd><code>showGUI</code> - Show GUI client flag.</dd>
    +<dd><code>useRMI</code> - Use RMI over socket flag.</dd>
    +<dd><code>serverAddress</code> - Address where to find server.</dd>
    +<dd><code>showDebug</code> - Show debug infos flag.</dd>
    +<dd><code>maxInactivityTimeMs</code> - Milliseconds to wait for inactive players before disconnecting.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>AppConfigContext</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">AppConfigContext</span>()</div>
    +<div class="block">Constructor with default values.</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<!-- ============ METHOD DETAIL ========== -->
    +<li>
    +<section class="method-details" id="method-detail">
    +<h2>Method Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="getServerSocketPort()">
    +<h3>getServerSocketPort</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getServerSocketPort</span>()</div>
    +<div class="block">Server socket port getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The instantiated server socket port.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getServerRmiPort()">
    +<h3>getServerRmiPort</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getServerRmiPort</span>()</div>
    +<div class="block">Server rmi port getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The instantiated server rmi port.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMaxConnections()">
    +<h3>getMaxConnections</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a></span>&nbsp;<span class="element-name">getMaxConnections</span>()</div>
    +<div class="block">Max connections getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The maximum allowed connections.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getKeepAlive()">
    +<h3>getKeepAlive</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getKeepAlive</span>()</div>
    +<div class="block">Keep alive getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The keep alive flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getIsServer()">
    +<h3>getIsServer</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getIsServer</span>()</div>
    +<div class="block">Is server getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The isServer flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getShowGUI()">
    +<h3>getShowGUI</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getShowGUI</span>()</div>
    +<div class="block">Show GUI getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The show GUI flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getUseRMI()">
    +<h3>getUseRMI</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getUseRMI</span>()</div>
    +<div class="block">Use RMI getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The use RMI flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getServerAddress()">
    +<h3>getServerAddress</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a></span>&nbsp;<span class="element-name">getServerAddress</span>()</div>
    +<div class="block">Server address getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The server address.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getShowDebug()">
    +<h3>getShowDebug</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">boolean</span>&nbsp;<span class="element-name">getShowDebug</span>()</div>
    +<div class="block">Show debug getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The debug flag.</dd>
    +</dl>
    +</section>
    +</li>
    +<li>
    +<section class="detail" id="getMaxInactivityTime()">
    +<h3>getMaxInactivityTime</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="return-type">long</span>&nbsp;<span class="element-name">getMaxInactivityTime</span>()</div>
    +<div class="block">Max inactivity time getter.</div>
    +<dl class="notes">
    +<dt>Returns:</dt>
    +<dd>The max inactivity time value in ms.</dd>
    +</dl>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/InvalidMaxConnectionsNumberException.html b/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/InvalidMaxConnectionsNumberException.html
    new file mode 100644
    index 00000000..88f61f20
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/InvalidMaxConnectionsNumberException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>InvalidMaxConnectionsNumberException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.config.exceptions, class: InvalidMaxConnectionsNumberException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.config.exceptions</a></div>
    +<h1 title="Class InvalidMaxConnectionsNumberException" class="title">Class InvalidMaxConnectionsNumberException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.utils.config.exceptions.InvalidMaxConnectionsNumberException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvalidMaxConnectionsNumberException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for invalid max connections number.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.utils.config.exceptions.InvalidMaxConnectionsNumberException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">InvalidMaxConnectionsNumberException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>InvalidMaxConnectionsNumberException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvalidMaxConnectionsNumberException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/InvalidPortNumberException.html b/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/InvalidPortNumberException.html
    new file mode 100644
    index 00000000..1ea81541
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/InvalidPortNumberException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>InvalidPortNumberException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.config.exceptions, class: InvalidPortNumberException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.config.exceptions</a></div>
    +<h1 title="Class InvalidPortNumberException" class="title">Class InvalidPortNumberException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.utils.config.exceptions.InvalidPortNumberException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvalidPortNumberException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for invalid port number.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../../serialized-form.html#it.polimi.is23am10.utils.config.exceptions.InvalidPortNumberException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">InvalidPortNumberException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>InvalidPortNumberException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvalidPortNumberException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/package-summary.html
    new file mode 100644
    index 00000000..5f61d570
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/package-summary.html
    @@ -0,0 +1,109 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.utils.config.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.config.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.utils.config.exceptions" class="title">Package it.polimi.is23am10.utils.config.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.utils.config.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.utils.config</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="InvalidMaxConnectionsNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidMaxConnectionsNumberException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for invalid max connections number.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="InvalidPortNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for invalid port number.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/package-tree.html
    new file mode 100644
    index 00000000..eaba9f97
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/config/exceptions/package-tree.html
    @@ -0,0 +1,81 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.utils.config.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.utils.config.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.utils.config.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.utils.config.exceptions.<a href="InvalidMaxConnectionsNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidMaxConnectionsNumberException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.config.exceptions.<a href="InvalidPortNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/config/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/utils/config/package-summary.html
    new file mode 100644
    index 00000000..4dc9790c
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/config/package-summary.html
    @@ -0,0 +1,113 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.utils.config</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.config">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.utils.config" class="title">Package it.polimi.is23am10.utils.config</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.utils.config</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.utils</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.utils.config.exceptions</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="../exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="AppConfig.html" title="class in it.polimi.is23am10.utils.config">AppConfig</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The application config class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="AppConfigContext.html" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">The server config context class definition.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/config/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/utils/config/package-tree.html
    new file mode 100644
    index 00000000..230124e6
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/config/package-tree.html
    @@ -0,0 +1,73 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.utils.config Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.utils.config">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.utils.config</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.utils.config.<a href="AppConfig.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config">AppConfig</a></li>
    +<li class="circle">it.polimi.is23am10.utils.config.<a href="AppConfigContext.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html
    new file mode 100644
    index 00000000..d9fcea90
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html
    @@ -0,0 +1,174 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>ColIndexOutOfBoundsException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.exceptions, class: ColIndexOutOfBoundsException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<h1 title="Class ColIndexOutOfBoundsException" class="title">Class ColIndexOutOfBoundsException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.utils.exceptions.ColIndexOutOfBoundsException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="../../server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></code>, <code><a href="../../server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">ColIndexOutOfBoundsException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle index out of bounds values.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.utils.exceptions.ColIndexOutOfBoundsException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.Integer,java.lang.Integer)" class="member-name-link">ColIndexOutOfBoundsException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;item,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxValue)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.Integer,java.lang.Integer)">
    +<h3>ColIndexOutOfBoundsException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">ColIndexOutOfBoundsException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;item,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;col,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxValue)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/InvalidArgumentException.html b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/InvalidArgumentException.html
    new file mode 100644
    index 00000000..09974314
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/InvalidArgumentException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>InvalidArgumentException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.exceptions, class: InvalidArgumentException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<h1 title="Class InvalidArgumentException" class="title">Class InvalidArgumentException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.utils.exceptions.InvalidArgumentException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">InvalidArgumentException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for invalid cli argument parsed.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.utils.exceptions.InvalidArgumentException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">InvalidArgumentException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>InvalidArgumentException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">InvalidArgumentException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/MissingParameterException.html b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/MissingParameterException.html
    new file mode 100644
    index 00000000..8e71f19f
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/MissingParameterException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>MissingParameterException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.exceptions, class: MissingParameterException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<h1 title="Class MissingParameterException" class="title">Class MissingParameterException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.utils.exceptions.MissingParameterException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">MissingParameterException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for invalid cli argument parsed.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.utils.exceptions.MissingParameterException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">MissingParameterException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>MissingParameterException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">MissingParameterException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;arg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/NullIndexValueException.html b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/NullIndexValueException.html
    new file mode 100644
    index 00000000..4a66c200
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/NullIndexValueException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>NullIndexValueException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.exceptions, class: NullIndexValueException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<h1 title="Class NullIndexValueException" class="title">Class NullIndexValueException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.utils.exceptions.NullIndexValueException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">NullIndexValueException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception for null index values.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.utils.exceptions.NullIndexValueException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">NullIndexValueException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>NullIndexValueException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">NullIndexValueException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html
    new file mode 100644
    index 00000000..926d9233
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html
    @@ -0,0 +1,174 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>RowIndexOutOfBoundsException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.exceptions, class: RowIndexOutOfBoundsException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<h1 title="Class RowIndexOutOfBoundsException" class="title">Class RowIndexOutOfBoundsException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.utils.exceptions.RowIndexOutOfBoundsException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<dl class="notes">
    +<dt>Direct Known Subclasses:</dt>
    +<dd><code><a href="../../server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></code>, <code><a href="../../server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">RowIndexOutOfBoundsException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle index out of bounds values.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.utils.exceptions.RowIndexOutOfBoundsException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String,java.lang.Integer,java.lang.Integer)" class="member-name-link">RowIndexOutOfBoundsException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;item,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxValue)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String,java.lang.Integer,java.lang.Integer)">
    +<h3>RowIndexOutOfBoundsException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">RowIndexOutOfBoundsException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;item,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;row,
    + <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&nbsp;maxValue)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/WrongBookShelfPicksException.html b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/WrongBookShelfPicksException.html
    new file mode 100644
    index 00000000..dc326d70
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/WrongBookShelfPicksException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>WrongBookShelfPicksException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.exceptions, class: WrongBookShelfPicksException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<h1 title="Class WrongBookShelfPicksException" class="title">Class WrongBookShelfPicksException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.utils.exceptions.WrongBookShelfPicksException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WrongBookShelfPicksException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle wrong picks inside the book shelf.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.utils.exceptions.WrongBookShelfPicksException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">WrongBookShelfPicksException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>WrongBookShelfPicksException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WrongBookShelfPicksException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/WrongGameBoardPicksException.html b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/WrongGameBoardPicksException.html
    new file mode 100644
    index 00000000..d4c5091f
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/WrongGameBoardPicksException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>WrongGameBoardPicksException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.exceptions, class: WrongGameBoardPicksException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<h1 title="Class WrongGameBoardPicksException" class="title">Class WrongGameBoardPicksException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.utils.exceptions.WrongGameBoardPicksException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WrongGameBoardPicksException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle wrong picks inside the game board.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.utils.exceptions.WrongGameBoardPicksException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E(java.lang.String)" class="member-name-link">WrongGameBoardPicksException</a><wbr>(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;(java.lang.String)">
    +<h3>WrongGameBoardPicksException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WrongGameBoardPicksException</span><wbr><span class="parameters">(<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&nbsp;msg)</span></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/WrongMovesNumberException.html b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/WrongMovesNumberException.html
    new file mode 100644
    index 00000000..ce9b3618
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/WrongMovesNumberException.html
    @@ -0,0 +1,166 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>WrongMovesNumberException</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.exceptions, class: WrongMovesNumberException">
    +<meta name="generator" content="javadoc/ClassWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="class-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li class="nav-bar-cell1-rev">Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#class">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Summary:</p>
    +<ul>
    +<li>Nested</li>
    +<li>Field</li>
    +<li><a href="#constructor-summary">Constr</a></li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +</li>
    +<li>
    +<p>Detail:</p>
    +<ul>
    +<li>Field</li>
    +<li><a href="#constructor-detail">Constr</a></li>
    +<li>Method</li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Summary:&nbsp;</li>
    +<li>Nested&nbsp;|&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-summary">Constr</a>&nbsp;|&nbsp;</li>
    +<li><a href="#method-summary">Method</a></li>
    +</ul>
    +<ul class="sub-nav-list">
    +<li>Detail:&nbsp;</li>
    +<li>Field&nbsp;|&nbsp;</li>
    +<li><a href="#constructor-detail">Constr</a>&nbsp;|&nbsp;</li>
    +<li>Method</li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<!-- ======== START OF CLASS DATA ======== -->
    +<div class="header">
    +<div class="sub-title"><span class="package-label-in-type">Package</span>&nbsp;<a href="package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<h1 title="Class WrongMovesNumberException" class="title">Class WrongMovesNumberException</h1>
    +</div>
    +<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">java.lang.Throwable</a>
    +<div class="inheritance"><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">java.lang.Exception</a>
    +<div class="inheritance">it.polimi.is23am10.utils.exceptions.WrongMovesNumberException</div>
    +</div>
    +</div>
    +</div>
    +<section class="class-description" id="class-description">
    +<dl class="notes">
    +<dt>All Implemented Interfaces:</dt>
    +<dd><code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></code></dd>
    +</dl>
    +<hr>
    +<div class="type-signature"><span class="modifiers">public class </span><span class="element-name type-name-label">WrongMovesNumberException</span>
    +<span class="extends-implements">extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a></span></div>
    +<div class="block">Custom exception to handle wrong movements number.</div>
    +<dl class="notes">
    +<dt>See Also:</dt>
    +<dd>
    +<ul class="see-list">
    +<li><a href="../../../../../serialized-form.html#it.polimi.is23am10.utils.exceptions.WrongMovesNumberException">Serialized Form</a></li>
    +</ul>
    +</dd>
    +</dl>
    +</section>
    +<section class="summary">
    +<ul class="summary-list">
    +<!-- ======== CONSTRUCTOR SUMMARY ======== -->
    +<li>
    +<section class="constructor-summary" id="constructor-summary">
    +<h2>Constructor Summary</h2>
    +<div class="caption"><span>Constructors</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Constructor</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-constructor-name even-row-color"><code><a href="#%3Cinit%3E()" class="member-name-link">WrongMovesNumberException</a>()</code></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</section>
    +</li>
    +<!-- ========== METHOD SUMMARY =========== -->
    +<li>
    +<section class="method-summary" id="method-summary">
    +<h2>Method Summary</h2>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Throwable">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" title="class or interface in java.lang" class="external-link">Throwable</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#addSuppressed(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">addSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#fillInStackTrace()" title="class or interface in java.lang" class="external-link">fillInStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getCause()" title="class or interface in java.lang" class="external-link">getCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getLocalizedMessage()" title="class or interface in java.lang" class="external-link">getLocalizedMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getMessage()" title="class or interface in java.lang" class="external-link">getMessage</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getStackTrace()" title="class or interface in java.lang" class="external-link">getStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#getSuppressed()" title="class or interface in java.lang" class="external-link">getSuppressed</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#initCause(java.lang.Throwable)" title="class or interface in java.lang" class="external-link">initCause</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace()" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintStream)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#printStackTrace(java.io.PrintWriter)" title="class or interface in java.lang" class="external-link">printStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#setStackTrace(java.lang.StackTraceElement%5B%5D)" title="class or interface in java.lang" class="external-link">setStackTrace</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html#toString()" title="class or interface in java.lang" class="external-link">toString</a></code></div>
    +<div class="inherited-list">
    +<h3 id="methods-inherited-from-class-java.lang.Object">Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a></h3>
    +<code><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#equals(java.lang.Object)" title="class or interface in java.lang" class="external-link">equals</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#getClass()" title="class or interface in java.lang" class="external-link">getClass</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#hashCode()" title="class or interface in java.lang" class="external-link">hashCode</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notify()" title="class or interface in java.lang" class="external-link">notify</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#notifyAll()" title="class or interface in java.lang" class="external-link">notifyAll</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait()" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long)" title="class or interface in java.lang" class="external-link">wait</a>, <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html#wait(long,int)" title="class or interface in java.lang" class="external-link">wait</a></code></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<section class="details">
    +<ul class="details-list">
    +<!-- ========= CONSTRUCTOR DETAIL ======== -->
    +<li>
    +<section class="constructor-details" id="constructor-detail">
    +<h2>Constructor Details</h2>
    +<ul class="member-list">
    +<li>
    +<section class="detail" id="&lt;init&gt;()">
    +<h3>WrongMovesNumberException</h3>
    +<div class="member-signature"><span class="modifiers">public</span>&nbsp;<span class="element-name">WrongMovesNumberException</span>()</div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +<!-- ========= END OF CLASS DATA ========= -->
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/package-summary.html
    new file mode 100644
    index 00000000..22264148
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/package-summary.html
    @@ -0,0 +1,135 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.utils.exceptions</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils.exceptions">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.utils.exceptions" class="title">Package it.polimi.is23am10.utils.exceptions</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.utils.exceptions</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10.utils</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../config/package-summary.html">it.polimi.is23am10.utils.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Exception Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="ColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle index out of bounds values.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="InvalidArgumentException.html" title="class in it.polimi.is23am10.utils.exceptions">InvalidArgumentException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for invalid cli argument parsed.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="MissingParameterException.html" title="class in it.polimi.is23am10.utils.exceptions">MissingParameterException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for invalid cli argument parsed.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception for null index values.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="RowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle index out of bounds values.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="WrongBookShelfPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle wrong picks inside the book shelf.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab5"><a href="WrongGameBoardPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongGameBoardPicksException</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle wrong picks inside the game board.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab5"><a href="WrongMovesNumberException.html" title="class in it.polimi.is23am10.utils.exceptions">WrongMovesNumberException</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab5">
    +<div class="block">Custom exception to handle wrong movements number.</div>
    +</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/package-tree.html
    new file mode 100644
    index 00000000..c375aa02
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/exceptions/package-tree.html
    @@ -0,0 +1,87 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.utils.exceptions Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.utils.exceptions">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.utils.exceptions</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="ColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="InvalidArgumentException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">InvalidArgumentException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="MissingParameterException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">MissingParameterException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="NullIndexValueException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="RowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="WrongBookShelfPicksException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="WrongGameBoardPicksException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">WrongGameBoardPicksException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="WrongMovesNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">WrongMovesNumberException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/package-summary.html b/deliverables/javadoc/it/polimi/is23am10/utils/package-summary.html
    new file mode 100644
    index 00000000..6e81ba3d
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/package-summary.html
    @@ -0,0 +1,143 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.utils</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="declaration: package: it.polimi.is23am10.utils">
    +<meta name="generator" content="javadoc/PackageWriterImpl">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-declaration-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li class="nav-bar-cell1-rev">Package</li>
    +<li>Class</li>
    +<li><a href="package-tree.html">Tree</a></li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#package">Help</a></li>
    +</ul>
    +<ul class="sub-nav-list-small">
    +<li>
    +<p>Package:</p>
    +<ul>
    +<li>Description</li>
    +<li><a href="#related-package-summary">Related Packages</a></li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list">
    +<ul class="sub-nav-list">
    +<li>Package:&nbsp;</li>
    +<li>Description&nbsp;|&nbsp;</li>
    +<li><a href="#related-package-summary">Related Packages</a>&nbsp;|&nbsp;</li>
    +<li><a href="#class-summary">Classes and Interfaces</a></li>
    +</ul>
    +</div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Package it.polimi.is23am10.utils" class="title">Package it.polimi.is23am10.utils</h1>
    +</div>
    +<hr>
    +<div class="package-signature">package <span class="element-name">it.polimi.is23am10.utils</span></div>
    +<section class="summary">
    +<ul class="summary-list">
    +<li>
    +<div id="related-package-summary">
    +<div class="caption"><span>Related Packages</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Package</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color"><a href="../package-summary.html">it.polimi.is23am10</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="config/package-summary.html">it.polimi.is23am10.utils.config</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +<div class="col-first odd-row-color"><a href="../client/package-summary.html">it.polimi.is23am10.client</a></div>
    +<div class="col-last odd-row-color">&nbsp;</div>
    +<div class="col-first even-row-color"><a href="../server/package-summary.html">it.polimi.is23am10.server</a></div>
    +<div class="col-last even-row-color">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +<li>
    +<div id="class-summary">
    +<div class="caption"><span>Classes</span></div>
    +<div class="summary-table two-column-summary">
    +<div class="table-header col-first">Class</div>
    +<div class="table-header col-last">Description</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ArgParser.html" title="class in it.polimi.is23am10.utils">ArgParser</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Parser for argument from CLI.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="CommandSyntaxValidator.html" title="class in it.polimi.is23am10.utils">CommandSyntaxValidator</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Helper class to validate user input strings.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The Coordinate helper class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="ErrorTypeString.html" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Helper class to identify messages to be sent to client and to logger.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="IndexValidator.html" title="class in it.polimi.is23am10.utils">IndexValidator</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">Index validator class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="MoveCommandHelper.html" title="class in it.polimi.is23am10.utils">MoveCommandHelper</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Helper class to convert input move from index to coordinates.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="MovesValidator.html" title="class in it.polimi.is23am10.utils">MovesValidator</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">
    +<div class="block">The game movement validator class definition.</div>
    +</div>
    +<div class="col-first odd-row-color class-summary class-summary-tab2"><a href="MoveTileCommandTypeAdaptor.html" title="class in it.polimi.is23am10.utils">MoveTileCommandTypeAdaptor</a></div>
    +<div class="col-last odd-row-color class-summary class-summary-tab2">
    +<div class="block">Custom deserializer class definition for Gson usage.</div>
    +</div>
    +<div class="col-first even-row-color class-summary class-summary-tab2"><a href="ThreadLocalTypeAdapterFactory.html" title="class in it.polimi.is23am10.utils">ThreadLocalTypeAdapterFactory</a></div>
    +<div class="col-last even-row-color class-summary class-summary-tab2">&nbsp;</div>
    +</div>
    +</div>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/it/polimi/is23am10/utils/package-tree.html b/deliverables/javadoc/it/polimi/is23am10/utils/package-tree.html
    new file mode 100644
    index 00000000..5b800fda
    --- /dev/null
    +++ b/deliverables/javadoc/it/polimi/is23am10/utils/package-tree.html
    @@ -0,0 +1,80 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>it.polimi.is23am10.utils Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="tree: package: it.polimi.is23am10.utils">
    +<meta name="generator" content="javadoc/PackageTreeWriter">
    +<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="../../../../jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="../../../../script.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="../../../../script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="package-tree-page">
    +<script type="text/javascript">var pathtoroot = "../../../../";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="../../../../index.html">Overview</a></li>
    +<li><a href="package-summary.html">Package</a></li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="../../../../index-files/index-1.html">Index</a></li>
    +<li><a href="../../../../help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="../../../../search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For Package it.polimi.is23am10.utils</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="../../../../overview-tree.html">All Packages</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.utils.<a href="ArgParser.html" class="type-name-link" title="class in it.polimi.is23am10.utils">ArgParser</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="CommandSyntaxValidator.html" class="type-name-link" title="class in it.polimi.is23am10.utils">CommandSyntaxValidator</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="Coordinates.html" class="type-name-link" title="class in it.polimi.is23am10.utils">Coordinates</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="ErrorTypeString.html" class="type-name-link" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="IndexValidator.html" class="type-name-link" title="class in it.polimi.is23am10.utils">IndexValidator</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="MoveCommandHelper.html" class="type-name-link" title="class in it.polimi.is23am10.utils">MoveCommandHelper</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="MovesValidator.html" class="type-name-link" title="class in it.polimi.is23am10.utils">MovesValidator</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="MoveTileCommandTypeAdaptor.html" class="type-name-link" title="class in it.polimi.is23am10.utils">MoveTileCommandTypeAdaptor</a> (implements com.google.gson.JsonDeserializer&lt;T&gt;, com.google.gson.JsonSerializer&lt;T&gt;)</li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="ThreadLocalTypeAdapterFactory.html" class="type-name-link" title="class in it.polimi.is23am10.utils">ThreadLocalTypeAdapterFactory</a> (implements com.google.gson.TypeAdapterFactory)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/jquery-ui.overrides.css b/deliverables/javadoc/jquery-ui.overrides.css
    new file mode 100644
    index 00000000..facf852c
    --- /dev/null
    +++ b/deliverables/javadoc/jquery-ui.overrides.css
    @@ -0,0 +1,35 @@
    +/*
    + * Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
    + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    + *
    + * This code is free software; you can redistribute it and/or modify it
    + * under the terms of the GNU General Public License version 2 only, as
    + * published by the Free Software Foundation.  Oracle designates this
    + * particular file as subject to the "Classpath" exception as provided
    + * by Oracle in the LICENSE file that accompanied this code.
    + *
    + * This code is distributed in the hope that it will be useful, but WITHOUT
    + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    + * version 2 for more details (a copy is included in the LICENSE file that
    + * accompanied this code).
    + *
    + * You should have received a copy of the GNU General Public License version
    + * 2 along with this work; if not, write to the Free Software Foundation,
    + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    + *
    + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    + * or visit www.oracle.com if you need additional information or have any
    + * questions.
    + */
    +
    +.ui-state-active,
    +.ui-widget-content .ui-state-active,
    +.ui-widget-header .ui-state-active,
    +a.ui-button:active,
    +.ui-button:active,
    +.ui-button.ui-state-active:hover {
    +    /* Overrides the color of selection used in jQuery UI */
    +    background: #F8981D;
    +    border: 1px solid #F8981D;
    +}
    diff --git a/deliverables/javadoc/legal/ADDITIONAL_LICENSE_INFO b/deliverables/javadoc/legal/ADDITIONAL_LICENSE_INFO
    new file mode 100644
    index 00000000..ff700cd0
    --- /dev/null
    +++ b/deliverables/javadoc/legal/ADDITIONAL_LICENSE_INFO
    @@ -0,0 +1,37 @@
    +                      ADDITIONAL INFORMATION ABOUT LICENSING
    +
    +Certain files distributed by Oracle America, Inc. and/or its affiliates are 
    +subject to the following clarification and special exception to the GPLv2, 
    +based on the GNU Project exception for its Classpath libraries, known as the 
    +GNU Classpath Exception.
    +
    +Note that Oracle includes multiple, independent programs in this software 
    +package.  Some of those programs are provided under licenses deemed 
    +incompatible with the GPLv2 by the Free Software Foundation and others. 
    +For example, the package includes programs licensed under the Apache 
    +License, Version 2.0 and may include FreeType. Such programs are licensed 
    +to you under their original licenses. 
    +
    +Oracle facilitates your further distribution of this package by adding the 
    +Classpath Exception to the necessary parts of its GPLv2 code, which permits 
    +you to use that code in combination with other independent modules not 
    +licensed under the GPLv2. However, note that this would not permit you to 
    +commingle code under an incompatible license with Oracle's GPLv2 licensed 
    +code by, for example, cutting and pasting such code into a file also 
    +containing Oracle's GPLv2 licensed code and then distributing the result. 
    +
    +Additionally, if you were to remove the Classpath Exception from any of the 
    +files to which it applies and distribute the result, you would likely be 
    +required to license some or all of the other code in that distribution under 
    +the GPLv2 as well, and since the GPLv2 is incompatible with the license terms 
    +of some items included in the distribution by Oracle, removing the Classpath 
    +Exception could therefore effectively compromise your ability to further 
    +distribute the package. 
    +
    +Failing to distribute notices associated with some files may also create 
    +unexpected legal consequences.
    + 
    +Proceed with caution and we recommend that you obtain the advice of a lawyer 
    +skilled in open source matters before removing the Classpath Exception or 
    +making modifications to this package which may subsequently be redistributed 
    +and/or involve the use of third party software.
    diff --git a/deliverables/javadoc/legal/ASSEMBLY_EXCEPTION b/deliverables/javadoc/legal/ASSEMBLY_EXCEPTION
    new file mode 100644
    index 00000000..065b8d90
    --- /dev/null
    +++ b/deliverables/javadoc/legal/ASSEMBLY_EXCEPTION
    @@ -0,0 +1,27 @@
    +
    +OPENJDK ASSEMBLY EXCEPTION
    +
    +The OpenJDK source code made available by Oracle America, Inc. (Oracle) at
    +openjdk.java.net ("OpenJDK Code") is distributed under the terms of the GNU
    +General Public License <http://www.gnu.org/copyleft/gpl.html> version 2
    +only ("GPL2"), with the following clarification and special exception.
    +
    +    Linking this OpenJDK Code statically or dynamically with other code
    +    is making a combined work based on this library.  Thus, the terms
    +    and conditions of GPL2 cover the whole combination.
    +
    +    As a special exception, Oracle gives you permission to link this
    +    OpenJDK Code with certain code licensed by Oracle as indicated at
    +    http://openjdk.java.net/legal/exception-modules-2007-05-08.html
    +    ("Designated Exception Modules") to produce an executable,
    +    regardless of the license terms of the Designated Exception Modules,
    +    and to copy and distribute the resulting executable under GPL2,
    +    provided that the Designated Exception Modules continue to be
    +    governed by the licenses under which they were offered by Oracle.
    +
    +As such, it allows licensees and sublicensees of Oracle's GPL2 OpenJDK Code
    +to build an executable that includes those portions of necessary code that
    +Oracle could not provide under GPL2 (or that Oracle has provided under GPL2
    +with the Classpath exception).  If you modify or add to the OpenJDK code,
    +that new GPL2 code may still be combined with Designated Exception Modules
    +if the new code is made subject to this exception by its copyright holder.
    diff --git a/deliverables/javadoc/legal/LICENSE b/deliverables/javadoc/legal/LICENSE
    new file mode 100644
    index 00000000..8b400c7a
    --- /dev/null
    +++ b/deliverables/javadoc/legal/LICENSE
    @@ -0,0 +1,347 @@
    +The GNU General Public License (GPL)
    +
    +Version 2, June 1991
    +
    +Copyright (C) 1989, 1991 Free Software Foundation, Inc.
    +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
    +
    +Everyone is permitted to copy and distribute verbatim copies of this license
    +document, but changing it is not allowed.
    +
    +Preamble
    +
    +The licenses for most software are designed to take away your freedom to share
    +and change it.  By contrast, the GNU General Public License is intended to
    +guarantee your freedom to share and change free software--to make sure the
    +software is free for all its users.  This General Public License applies to
    +most of the Free Software Foundation's software and to any other program whose
    +authors commit to using it.  (Some other Free Software Foundation software is
    +covered by the GNU Library General Public License instead.) You can apply it to
    +your programs, too.
    +
    +When we speak of free software, we are referring to freedom, not price.  Our
    +General Public Licenses are designed to make sure that you have the freedom to
    +distribute copies of free software (and charge for this service if you wish),
    +that you receive source code or can get it if you want it, that you can change
    +the software or use pieces of it in new free programs; and that you know you
    +can do these things.
    +
    +To protect your rights, we need to make restrictions that forbid anyone to deny
    +you these rights or to ask you to surrender the rights.  These restrictions
    +translate to certain responsibilities for you if you distribute copies of the
    +software, or if you modify it.
    +
    +For example, if you distribute copies of such a program, whether gratis or for
    +a fee, you must give the recipients all the rights that you have.  You must
    +make sure that they, too, receive or can get the source code.  And you must
    +show them these terms so they know their rights.
    +
    +We protect your rights with two steps: (1) copyright the software, and (2)
    +offer you this license which gives you legal permission to copy, distribute
    +and/or modify the software.
    +
    +Also, for each author's protection and ours, we want to make certain that
    +everyone understands that there is no warranty for this free software.  If the
    +software is modified by someone else and passed on, we want its recipients to
    +know that what they have is not the original, so that any problems introduced
    +by others will not reflect on the original authors' reputations.
    +
    +Finally, any free program is threatened constantly by software patents.  We
    +wish to avoid the danger that redistributors of a free program will
    +individually obtain patent licenses, in effect making the program proprietary.
    +To prevent this, we have made it clear that any patent must be licensed for
    +everyone's free use or not licensed at all.
    +
    +The precise terms and conditions for copying, distribution and modification
    +follow.
    +
    +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
    +
    +0. This License applies to any program or other work which contains a notice
    +placed by the copyright holder saying it may be distributed under the terms of
    +this General Public License.  The "Program", below, refers to any such program
    +or work, and a "work based on the Program" means either the Program or any
    +derivative work under copyright law: that is to say, a work containing the
    +Program or a portion of it, either verbatim or with modifications and/or
    +translated into another language.  (Hereinafter, translation is included
    +without limitation in the term "modification".) Each licensee is addressed as
    +"you".
    +
    +Activities other than copying, distribution and modification are not covered by
    +this License; they are outside its scope.  The act of running the Program is
    +not restricted, and the output from the Program is covered only if its contents
    +constitute a work based on the Program (independent of having been made by
    +running the Program).  Whether that is true depends on what the Program does.
    +
    +1. You may copy and distribute verbatim copies of the Program's source code as
    +you receive it, in any medium, provided that you conspicuously and
    +appropriately publish on each copy an appropriate copyright notice and
    +disclaimer of warranty; keep intact all the notices that refer to this License
    +and to the absence of any warranty; and give any other recipients of the
    +Program a copy of this License along with the Program.
    +
    +You may charge a fee for the physical act of transferring a copy, and you may
    +at your option offer warranty protection in exchange for a fee.
    +
    +2. You may modify your copy or copies of the Program or any portion of it, thus
    +forming a work based on the Program, and copy and distribute such modifications
    +or work under the terms of Section 1 above, provided that you also meet all of
    +these conditions:
    +
    +    a) You must cause the modified files to carry prominent notices stating
    +    that you changed the files and the date of any change.
    +
    +    b) You must cause any work that you distribute or publish, that in whole or
    +    in part contains or is derived from the Program or any part thereof, to be
    +    licensed as a whole at no charge to all third parties under the terms of
    +    this License.
    +
    +    c) If the modified program normally reads commands interactively when run,
    +    you must cause it, when started running for such interactive use in the
    +    most ordinary way, to print or display an announcement including an
    +    appropriate copyright notice and a notice that there is no warranty (or
    +    else, saying that you provide a warranty) and that users may redistribute
    +    the program under these conditions, and telling the user how to view a copy
    +    of this License.  (Exception: if the Program itself is interactive but does
    +    not normally print such an announcement, your work based on the Program is
    +    not required to print an announcement.)
    +
    +These requirements apply to the modified work as a whole.  If identifiable
    +sections of that work are not derived from the Program, and can be reasonably
    +considered independent and separate works in themselves, then this License, and
    +its terms, do not apply to those sections when you distribute them as separate
    +works.  But when you distribute the same sections as part of a whole which is a
    +work based on the Program, the distribution of the whole must be on the terms
    +of this License, whose permissions for other licensees extend to the entire
    +whole, and thus to each and every part regardless of who wrote it.
    +
    +Thus, it is not the intent of this section to claim rights or contest your
    +rights to work written entirely by you; rather, the intent is to exercise the
    +right to control the distribution of derivative or collective works based on
    +the Program.
    +
    +In addition, mere aggregation of another work not based on the Program with the
    +Program (or with a work based on the Program) on a volume of a storage or
    +distribution medium does not bring the other work under the scope of this
    +License.
    +
    +3. You may copy and distribute the Program (or a work based on it, under
    +Section 2) in object code or executable form under the terms of Sections 1 and
    +2 above provided that you also do one of the following:
    +
    +    a) Accompany it with the complete corresponding machine-readable source
    +    code, which must be distributed under the terms of Sections 1 and 2 above
    +    on a medium customarily used for software interchange; or,
    +
    +    b) Accompany it with a written offer, valid for at least three years, to
    +    give any third party, for a charge no more than your cost of physically
    +    performing source distribution, a complete machine-readable copy of the
    +    corresponding source code, to be distributed under the terms of Sections 1
    +    and 2 above on a medium customarily used for software interchange; or,
    +
    +    c) Accompany it with the information you received as to the offer to
    +    distribute corresponding source code.  (This alternative is allowed only
    +    for noncommercial distribution and only if you received the program in
    +    object code or executable form with such an offer, in accord with
    +    Subsection b above.)
    +
    +The source code for a work means the preferred form of the work for making
    +modifications to it.  For an executable work, complete source code means all
    +the source code for all modules it contains, plus any associated interface
    +definition files, plus the scripts used to control compilation and installation
    +of the executable.  However, as a special exception, the source code
    +distributed need not include anything that is normally distributed (in either
    +source or binary form) with the major components (compiler, kernel, and so on)
    +of the operating system on which the executable runs, unless that component
    +itself accompanies the executable.
    +
    +If distribution of executable or object code is made by offering access to copy
    +from a designated place, then offering equivalent access to copy the source
    +code from the same place counts as distribution of the source code, even though
    +third parties are not compelled to copy the source along with the object code.
    +
    +4. You may not copy, modify, sublicense, or distribute the Program except as
    +expressly provided under this License.  Any attempt otherwise to copy, modify,
    +sublicense or distribute the Program is void, and will automatically terminate
    +your rights under this License.  However, parties who have received copies, or
    +rights, from you under this License will not have their licenses terminated so
    +long as such parties remain in full compliance.
    +
    +5. You are not required to accept this License, since you have not signed it.
    +However, nothing else grants you permission to modify or distribute the Program
    +or its derivative works.  These actions are prohibited by law if you do not
    +accept this License.  Therefore, by modifying or distributing the Program (or
    +any work based on the Program), you indicate your acceptance of this License to
    +do so, and all its terms and conditions for copying, distributing or modifying
    +the Program or works based on it.
    +
    +6. Each time you redistribute the Program (or any work based on the Program),
    +the recipient automatically receives a license from the original licensor to
    +copy, distribute or modify the Program subject to these terms and conditions.
    +You may not impose any further restrictions on the recipients' exercise of the
    +rights granted herein.  You are not responsible for enforcing compliance by
    +third parties to this License.
    +
    +7. If, as a consequence of a court judgment or allegation of patent
    +infringement or for any other reason (not limited to patent issues), conditions
    +are imposed on you (whether by court order, agreement or otherwise) that
    +contradict the conditions of this License, they do not excuse you from the
    +conditions of this License.  If you cannot distribute so as to satisfy
    +simultaneously your obligations under this License and any other pertinent
    +obligations, then as a consequence you may not distribute the Program at all.
    +For example, if a patent license would not permit royalty-free redistribution
    +of the Program by all those who receive copies directly or indirectly through
    +you, then the only way you could satisfy both it and this License would be to
    +refrain entirely from distribution of the Program.
    +
    +If any portion of this section is held invalid or unenforceable under any
    +particular circumstance, the balance of the section is intended to apply and
    +the section as a whole is intended to apply in other circumstances.
    +
    +It is not the purpose of this section to induce you to infringe any patents or
    +other property right claims or to contest validity of any such claims; this
    +section has the sole purpose of protecting the integrity of the free software
    +distribution system, which is implemented by public license practices.  Many
    +people have made generous contributions to the wide range of software
    +distributed through that system in reliance on consistent application of that
    +system; it is up to the author/donor to decide if he or she is willing to
    +distribute software through any other system and a licensee cannot impose that
    +choice.
    +
    +This section is intended to make thoroughly clear what is believed to be a
    +consequence of the rest of this License.
    +
    +8. If the distribution and/or use of the Program is restricted in certain
    +countries either by patents or by copyrighted interfaces, the original
    +copyright holder who places the Program under this License may add an explicit
    +geographical distribution limitation excluding those countries, so that
    +distribution is permitted only in or among countries not thus excluded.  In
    +such case, this License incorporates the limitation as if written in the body
    +of this License.
    +
    +9. The Free Software Foundation may publish revised and/or new versions of the
    +General Public License from time to time.  Such new versions will be similar in
    +spirit to the present version, but may differ in detail to address new problems
    +or concerns.
    +
    +Each version is given a distinguishing version number.  If the Program
    +specifies a version number of this License which applies to it and "any later
    +version", you have the option of following the terms and conditions either of
    +that version or of any later version published by the Free Software Foundation.
    +If the Program does not specify a version number of this License, you may
    +choose any version ever published by the Free Software Foundation.
    +
    +10. If you wish to incorporate parts of the Program into other free programs
    +whose distribution conditions are different, write to the author to ask for
    +permission.  For software which is copyrighted by the Free Software Foundation,
    +write to the Free Software Foundation; we sometimes make exceptions for this.
    +Our decision will be guided by the two goals of preserving the free status of
    +all derivatives of our free software and of promoting the sharing and reuse of
    +software generally.
    +
    +NO WARRANTY
    +
    +11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
    +THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN OTHERWISE
    +STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE
    +PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
    +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
    +FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
    +PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE,
    +YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
    +
    +12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL
    +ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE
    +PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
    +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR
    +INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
    +BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
    +FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER
    +OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
    +
    +END OF TERMS AND CONDITIONS
    +
    +How to Apply These Terms to Your New Programs
    +
    +If you develop a new program, and you want it to be of the greatest possible
    +use to the public, the best way to achieve this is to make it free software
    +which everyone can redistribute and change under these terms.
    +
    +To do so, attach the following notices to the program.  It is safest to attach
    +them to the start of each source file to most effectively convey the exclusion
    +of warranty; and each file should have at least the "copyright" line and a
    +pointer to where the full notice is found.
    +
    +    One line to give the program's name and a brief idea of what it does.
    +
    +    Copyright (C) <year> <name of author>
    +
    +    This program is free software; you can redistribute it and/or modify it
    +    under the terms of the GNU General Public License as published by the Free
    +    Software Foundation; either version 2 of the License, or (at your option)
    +    any later version.
    +
    +    This program is distributed in the hope that it will be useful, but WITHOUT
    +    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    +    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
    +    more details.
    +
    +    You should have received a copy of the GNU General Public License along
    +    with this program; if not, write to the Free Software Foundation, Inc.,
    +    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    +
    +Also add information on how to contact you by electronic and paper mail.
    +
    +If the program is interactive, make it output a short notice like this when it
    +starts in an interactive mode:
    +
    +    Gnomovision version 69, Copyright (C) year name of author Gnomovision comes
    +    with ABSOLUTELY NO WARRANTY; for details type 'show w'.  This is free
    +    software, and you are welcome to redistribute it under certain conditions;
    +    type 'show c' for details.
    +
    +The hypothetical commands 'show w' and 'show c' should show the appropriate
    +parts of the General Public License.  Of course, the commands you use may be
    +called something other than 'show w' and 'show c'; they could even be
    +mouse-clicks or menu items--whatever suits your program.
    +
    +You should also get your employer (if you work as a programmer) or your school,
    +if any, to sign a "copyright disclaimer" for the program, if necessary.  Here
    +is a sample; alter the names:
    +
    +    Yoyodyne, Inc., hereby disclaims all copyright interest in the program
    +    'Gnomovision' (which makes passes at compilers) written by James Hacker.
    +
    +    signature of Ty Coon, 1 April 1989
    +
    +    Ty Coon, President of Vice
    +
    +This General Public License does not permit incorporating your program into
    +proprietary programs.  If your program is a subroutine library, you may
    +consider it more useful to permit linking proprietary applications with the
    +library.  If this is what you want to do, use the GNU Library General Public
    +License instead of this License.
    +
    +
    +"CLASSPATH" EXCEPTION TO THE GPL
    +
    +Certain source files distributed by Oracle America and/or its affiliates are
    +subject to the following clarification and special exception to the GPL, but
    +only where Oracle has expressly included in the particular source file's header
    +the words "Oracle designates this particular file as subject to the "Classpath"
    +exception as provided by Oracle in the LICENSE file that accompanied this code."
    +
    +    Linking this library statically or dynamically with other modules is making
    +    a combined work based on this library.  Thus, the terms and conditions of
    +    the GNU General Public License cover the whole combination.
    +
    +    As a special exception, the copyright holders of this library give you
    +    permission to link this library with independent modules to produce an
    +    executable, regardless of the license terms of these independent modules,
    +    and to copy and distribute the resulting executable under terms of your
    +    choice, provided that you also meet, for each linked independent module,
    +    the terms and conditions of the license of that module.  An independent
    +    module is a module which is not derived from or based on this library.  If
    +    you modify this library, you may extend this exception to your version of
    +    the library, but you are not obligated to do so.  If you do not wish to do
    +    so, delete this exception statement from your version.
    diff --git a/deliverables/javadoc/legal/jquery.md b/deliverables/javadoc/legal/jquery.md
    new file mode 100644
    index 00000000..f7b72e3f
    --- /dev/null
    +++ b/deliverables/javadoc/legal/jquery.md
    @@ -0,0 +1,72 @@
    +## jQuery v3.6.0
    +
    +### jQuery License
    +```
    +jQuery v 3.6.0
    +Copyright OpenJS Foundation and other contributors, https://openjsf.org/
    +
    +Permission is hereby granted, free of charge, to any person obtaining
    +a copy of this software and associated documentation files (the
    +"Software"), to deal in the Software without restriction, including
    +without limitation the rights to use, copy, modify, merge, publish,
    +distribute, sublicense, and/or sell copies of the Software, and to
    +permit persons to whom the Software is furnished to do so, subject to
    +the following conditions:
    +
    +The above copyright notice and this permission notice shall be
    +included in all copies or substantial portions of the Software.
    +
    +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    +
    +******************************************
    +
    +The jQuery JavaScript Library v3.6.0 also includes Sizzle.js
    +
    +Sizzle.js includes the following license:
    +
    +Copyright JS Foundation and other contributors, https://js.foundation/
    +
    +This software consists of voluntary contributions made by many
    +individuals. For exact contribution history, see the revision history
    +available at https://github.com/jquery/sizzle
    +
    +The following license applies to all parts of this software except as
    +documented below:
    +
    +====
    +
    +Permission is hereby granted, free of charge, to any person obtaining
    +a copy of this software and associated documentation files (the
    +"Software"), to deal in the Software without restriction, including
    +without limitation the rights to use, copy, modify, merge, publish,
    +distribute, sublicense, and/or sell copies of the Software, and to
    +permit persons to whom the Software is furnished to do so, subject to
    +the following conditions:
    +
    +The above copyright notice and this permission notice shall be
    +included in all copies or substantial portions of the Software.
    +
    +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    +
    +====
    +
    +All files located in the node_modules and external directories are
    +externally maintained libraries used by this software which have their
    +own licenses; we recommend you read them, as their terms may differ from
    +the terms above.
    +
    +*********************
    +
    +```
    diff --git a/deliverables/javadoc/legal/jqueryUI.md b/deliverables/javadoc/legal/jqueryUI.md
    new file mode 100644
    index 00000000..9f4c9e95
    --- /dev/null
    +++ b/deliverables/javadoc/legal/jqueryUI.md
    @@ -0,0 +1,49 @@
    +## jQuery UI v1.13.1
    +
    +### jQuery UI License
    +```
    +Copyright jQuery Foundation and other contributors, https://jquery.org/
    +
    +This software consists of voluntary contributions made by many
    +individuals. For exact contribution history, see the revision history
    +available at https://github.com/jquery/jquery-ui
    +
    +The following license applies to all parts of this software except as
    +documented below:
    +
    +====
    +
    +Permission is hereby granted, free of charge, to any person obtaining
    +a copy of this software and associated documentation files (the
    +"Software"), to deal in the Software without restriction, including
    +without limitation the rights to use, copy, modify, merge, publish,
    +distribute, sublicense, and/or sell copies of the Software, and to
    +permit persons to whom the Software is furnished to do so, subject to
    +the following conditions:
    +
    +The above copyright notice and this permission notice shall be
    +included in all copies or substantial portions of the Software.
    +
    +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
    +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
    +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
    +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
    +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
    +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    +
    +====
    +
    +Copyright and related rights for sample code are waived via CC0. Sample
    +code is defined as all source code contained within the demos directory.
    +
    +CC0: http://creativecommons.org/publicdomain/zero/1.0/
    +
    +====
    +
    +All files located in the node_modules and external directories are
    +externally maintained libraries used by this software which have their
    +own licenses; we recommend you read them, as their terms may differ from
    +the terms above.
    +
    +```
    diff --git a/deliverables/javadoc/member-search-index.js b/deliverables/javadoc/member-search-index.js
    new file mode 100644
    index 00000000..2cbcc209
    --- /dev/null
    +++ b/deliverables/javadoc/member-search-index.js
    @@ -0,0 +1 @@
    +memberSearchIndex = [{"p":"it.polimi.is23am10.server.model.items.card","c":"AbstractCard","l":"AbstractCard()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.network.messages","c":"AbstractMessage","l":"AbstractMessage()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.controller.interfaces","c":"ControllerConsumer","l":"accept(Logger, AbstractPlayerConnector, C)","u":"accept(org.apache.logging.log4j.Logger,it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,C)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"activePlayerMove(Map<Coordinates, Coordinates>)","u":"activePlayerMove(java.util.Map)"},{"p":"it.polimi.is23am10.server.command","c":"AbstractCommand.Opcode","l":"ADD_PLAYER"},{"p":"it.polimi.is23am10.server.controller","c":"ServerDebugPrefixString","l":"ADD_PLAYER_COMMAND_PREFIX"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"addAssignedPrivatePattern(PrivatePattern<Function<Bookshelf, Integer>>)","u":"addAssignedPrivatePattern(it.polimi.is23am10.server.model.pattern.PrivatePattern)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"addAssignedSharedPattern(SharedPattern<Predicate<Bookshelf>>)","u":"addAssignedSharedPattern(it.polimi.is23am10.server.model.pattern.SharedPattern)"},{"p":"it.polimi.is23am10.server.model.items.card","c":"SharedCard","l":"addCardWinner(Player)","u":"addCardWinner(it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerState","l":"addGameHandler(GameHandler)","u":"addGameHandler(it.polimi.is23am10.server.network.gamehandler.GameHandler)"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"addMsgQueue(String)","u":"addMsgQueue(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"addPlayer(String)","u":"addPlayer(java.lang.String)"},{"p":"it.polimi.is23am10.server.command","c":"AddPlayerCommand","l":"AddPlayerCommand(String, UUID)","u":"%3Cinit%3E(java.lang.String,java.util.UUID)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerState","l":"addPlayerConnector(AbstractPlayerConnector)","u":"addPlayerConnector(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"addPlayerConnector(AbstractPlayerConnector)","u":"addPlayerConnector(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)"},{"p":"it.polimi.is23am10.server.controller.interfaces","c":"IServerControllerAction","l":"addPlayerConsumer"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"addPlayers(List<Player>)","u":"addPlayers(java.util.List)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerState","l":"addRmiProxyConnector(UUID, AbstractPlayerConnector)","u":"addRmiProxyConnector(java.util.UUID,it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"addScoreBlock(ScoreBlock)","u":"addScoreBlock(it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock)"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"allowedNumOfPlayers"},{"p":"it.polimi.is23am10.server.model.items.card.exceptions","c":"AlreadyInitiatedPatternException","l":"AlreadyInitiatedPatternException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"ANSICodes()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10","c":"App","l":"App()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"AppConfigContext()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"AppConfigContext(Integer, Integer, Integer, boolean, boolean, boolean, boolean, String, boolean, long)","u":"%3Cinit%3E(java.lang.Integer,java.lang.Integer,java.lang.Integer,boolean,boolean,boolean,boolean,java.lang.String,boolean,long)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"assignPlayers()"},{"p":"it.polimi.is23am10.server.network.messages","c":"AbstractMessage.MessageType","l":"AVAILABLE_GAMES"},{"p":"it.polimi.is23am10.server.network.messages","c":"AvailableGamesMessage","l":"AvailableGamesMessage(List<VirtualView>, Player...)","u":"%3Cinit%3E(java.util.List,it.polimi.is23am10.server.model.player.Player...)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"availableGameString"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLACK"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLACK_BACKGROUND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLACK_BACKGROUND_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLACK_BOLD"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLACK_BOLD_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLACK_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLACK_UNDERLINED"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"blackLargeSquare"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"blackSquareTab"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLUE"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLUE_BACKGROUND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLUE_BACKGROUND_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLUE_BOLD"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLUE_BOLD_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLUE_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"BLUE_UNDERLINED"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"BOARD_GRID_COLS"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"BOARD_GRID_ROWS"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"Board(Board)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.items.board.Board)"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"Board(Integer)","u":"%3Cinit%3E(java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.items.board.exceptions","c":"BoardGridColIndexOutOfBoundsException","l":"BoardGridColIndexOutOfBoundsException(Integer)","u":"%3Cinit%3E(java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.items.board.exceptions","c":"BoardGridRowIndexOutOfBoundsException","l":"BoardGridRowIndexOutOfBoundsException(Integer)","u":"%3Cinit%3E(java.lang.Integer)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"boardStatus"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile.TileType","l":"BOOK"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"BOOKSHELF_COLS"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"BOOKSHELF_ROWS"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"Bookshelf()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"Bookshelf(Bookshelf)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"Bookshelf(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"bookshelfError"},{"p":"it.polimi.is23am10.server.model.items.bookshelf.exceptions","c":"BookshelfGridColIndexOutOfBoundsException","l":"BookshelfGridColIndexOutOfBoundsException(Integer)","u":"%3Cinit%3E(java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.items.bookshelf.exceptions","c":"BookshelfGridRowIndexOutOfBoundsException","l":"BookshelfGridRowIndexOutOfBoundsException(Integer)","u":"%3Cinit%3E(java.lang.Integer)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"bookshelfPoints"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"bottomPaddingBoard"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"broadcastErrorString"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"broadcastMessageString"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CommandsBuilder","l":"buildCreateGameCmd(String)","u":"buildCreateGameCmd(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CommandsBuilder","l":"buildJoinGameCmd(String)","u":"buildJoinGameCmd(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory.interfaces","c":"BookShelfSelectionCallBack","l":"call(String)","u":"call(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory.interfaces","c":"TextFieldCallBack","l":"call(String)","u":"call(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory.interfaces","c":"ButtonCallBack","l":"call(TextField...)","u":"call(javafx.scene.control.TextField...)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"CallBack","l":"CallBack()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile.TileType","l":"CAT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper.OutputLevel","l":"CHAT"},{"p":"it.polimi.is23am10.server.network.messages","c":"AbstractMessage.MessageType","l":"CHAT_MESSAGE"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"chat(String, boolean)","u":"chat(java.lang.String,boolean)"},{"p":"it.polimi.is23am10.server.network.messages","c":"ChatMessage","l":"ChatMessage(Player, String)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.player.Player,java.lang.String)"},{"p":"it.polimi.is23am10.server.network.messages","c":"ChatMessage","l":"ChatMessage(Player, String, Player)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.player.Player,java.lang.String,it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.network.messages","c":"ChatMessage","l":"ChatMessage(Player, String, String)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.player.Player,java.lang.String,java.lang.String)"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkCornersMatch"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkDiagonalsSameType"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkEightOfSameType"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"checkEndGame()"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkFourAdjacent"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkMaxThreeTypesInColumn"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkMaxThreeTypesInRow"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkOrderedBookshelfColumns"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern1"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern10"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern11"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern12"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern2"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern3"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern4"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern5"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern6"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern7"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern8"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"checkPattern9"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkSquares"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkTilesXShape"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkTwoAdjacent"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkTwoColumnAllDiff"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"checkTwoRowsAllDiff"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"clean()"},{"p":"it.polimi.is23am10.server.controller","c":"ClientConnectionChecker","l":"ClientConnectionChecker(long)","u":"%3Cinit%3E(long)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"CLIStrings()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.utils.exceptions","c":"ColIndexOutOfBoundsException","l":"ColIndexOutOfBoundsException(String, Integer, Integer)","u":"%3Cinit%3E(java.lang.String,java.lang.Integer,java.lang.Integer)"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"CommandLineInterface(boolean)","u":"%3Cinit%3E(boolean)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CommandsBuilder","l":"CommandsBuilder()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"CallBack","l":"confirmJoinGameCallBack"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"CallBack","l":"confirmNameCallBack"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"CallBack","l":"confirmPlayerNumCallBack"},{"p":"it.polimi.is23am10.utils","c":"Coordinates","l":"Coordinates()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.utils","c":"Coordinates","l":"Coordinates(Integer, Integer)","u":"%3Cinit%3E(java.lang.Integer,java.lang.Integer)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.SCENE","l":"CREATE_GAME"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CommandsBuilder","l":"CREATE_GAME"},{"p":"it.polimi.is23am10.utils","c":"ThreadLocalTypeAdapterFactory","l":"create(Gson, TypeToken<T>)","u":"create(com.google.gson.Gson,com.google.gson.reflect.TypeToken)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"createGame"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"CallBack","l":"createNewGameCallBack"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper.OutputLevel","l":"CRITICAL"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage.ErrorSeverity","l":"CRITICAL"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"critical(String, boolean)","u":"critical(java.lang.String,boolean)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"CurrentPlayerHandler","l":"CurrentPlayerHandler()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"currentStateString"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"CYAN"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"CYAN_BACKGROUND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"CYAN_BACKGROUND_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"CYAN_BOLD"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"CYAN_BOLD_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"CYAN_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"CYAN_UNDERLINED"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper.OutputLevel","l":"DEBUG"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"DEBUG_CLI_COMMAND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"debug(String, boolean)","u":"debug(java.lang.String,boolean)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"description"},{"p":"it.polimi.is23am10.utils","c":"MoveTileCommandTypeAdaptor","l":"deserialize(JsonElement, Type, JsonDeserializationContext)","u":"deserialize(com.google.gson.JsonElement,java.lang.reflect.Type,com.google.gson.JsonDeserializationContext)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"disconnectedPlayers"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"displayAvailableGames(List<VirtualView>)","u":"displayAvailableGames(java.util.List)"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"displayAvailableGames(List<VirtualView>)","u":"displayAvailableGames(java.util.List)"},{"p":"it.polimi.is23am10.client.userinterface","c":"UserInterface","l":"displayAvailableGames(List<VirtualView>)","u":"displayAvailableGames(java.util.List)"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"displayChatMessage(ChatMessage)","u":"displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"displayChatMessage(ChatMessage)","u":"displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)"},{"p":"it.polimi.is23am10.client.userinterface","c":"UserInterface","l":"displayChatMessage(ChatMessage)","u":"displayChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"displayError(ErrorMessage)","u":"displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"displayError(ErrorMessage)","u":"displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)"},{"p":"it.polimi.is23am10.client.userinterface","c":"UserInterface","l":"displayError(ErrorMessage)","u":"displayError(it.polimi.is23am10.server.network.messages.ErrorMessage)"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"displayGameJoinGuide()"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"displayGameJoinGuide()"},{"p":"it.polimi.is23am10.client.userinterface","c":"UserInterface","l":"displayGameJoinGuide()"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"displaySplashScreen()"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"displaySplashScreen()"},{"p":"it.polimi.is23am10.client.userinterface","c":"UserInterface","l":"displaySplashScreen()"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"displayVirtualView(VirtualView, VirtualView)","u":"displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"displayVirtualView(VirtualView, VirtualView)","u":"displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)"},{"p":"it.polimi.is23am10.client.userinterface","c":"UserInterface","l":"displayVirtualView(VirtualView, VirtualView)","u":"displayVirtualView(it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"doubleNewLine"},{"p":"it.polimi.is23am10.server.model.factory.exceptions","c":"DuplicatePlayerNameException","l":"DuplicatePlayerNameException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile.TileType","l":"EMPTY"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.SCENE","l":"END_GAME"},{"p":"it.polimi.is23am10.server.model.game","c":"Game.GameStatus","l":"ENDED"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.SCENE","l":"ENTER_GAME_SELECTION"},{"p":"it.polimi.is23am10.server.command","c":"AddPlayerCommand","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.command","c":"GetAvailableGamesCommand","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.command","c":"MoveTilesCommand","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.command","c":"SendChatMessageCommand","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.command","c":"SnoozeGameTimerCommand","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.command","c":"StartGameCommand","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.model.items.scoreblock","c":"ScoreBlock","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.model.pattern","c":"PrivatePattern","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.model.pattern","c":"SharedPattern","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualPlayer","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.utils","c":"Coordinates","l":"equals(Object)","u":"equals(java.lang.Object)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper.OutputLevel","l":"ERROR"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage.ErrorSeverity","l":"ERROR"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_ADDING_CONNECTOR"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_ADDING_HANDLER"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_ADDING_PLAYERS"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_GAME_FULL"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_GAME_STATE"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_INITIALIZING_NEW_GAME"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_INVALID_MOVE"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_JOINING"},{"p":"it.polimi.is23am10.server.network.messages","c":"AbstractMessage.MessageType","l":"ERROR_MESSAGE"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_MESSAGE_DELIVERY"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_RMI_EXPOSURE"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_SERVER_SIDE"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_SNOOZING_TIMER"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_SOCKET_CONNECTOR"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"ERROR_UPDATING_GAME"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"error(String, boolean)","u":"error(java.lang.String,boolean)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"errorMessage"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage","l":"ErrorMessage(String, ErrorMessage.ErrorSeverity)","u":"%3Cinit%3E(java.lang.String,it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity)"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage","l":"ErrorMessage(String, Player, ErrorMessage.ErrorSeverity)","u":"%3Cinit%3E(java.lang.String,it.polimi.is23am10.server.model.player.Player,it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity)"},{"p":"it.polimi.is23am10.server.controller.interfaces","c":"IServerControllerAction","l":"execute(AbstractPlayerConnector, AbstractCommand)","u":"execute(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,it.polimi.is23am10.server.command.AbstractCommand)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerAction","l":"execute(AbstractPlayerConnector, AbstractCommand)","u":"execute(it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector,it.polimi.is23am10.server.command.AbstractCommand)"},{"p":"it.polimi.is23am10.server.controller.interfaces","c":"IServerControllerAction","l":"execute(GetAvailableGamesCommand)","u":"execute(it.polimi.is23am10.server.command.GetAvailableGamesCommand)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerAction","l":"execute(GetAvailableGamesCommand)","u":"execute(it.polimi.is23am10.server.command.GetAvailableGamesCommand)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"executeOnJavaFX(Runnable)","u":"executeOnJavaFX(java.lang.Runnable)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"extraPoints"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"firstPlayer"},{"p":"it.polimi.is23am10.client.exceptions","c":"ForceCloseApplicationException","l":"ForceCloseApplicationException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile.TileType","l":"FRAME"},{"p":"it.polimi.is23am10.utils","c":"MoveCommandHelper","l":"fromColIdxToCoord(String, Bookshelf, Integer)","u":"fromColIdxToCoord(java.lang.String,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.game.exceptions","c":"FullGameException","l":"FullGameException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile.TileType","l":"GAME"},{"p":"it.polimi.is23am10.client","c":"Client.ClientGameStatus","l":"GAME_SELECTION"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.SCENE","l":"GAME_SNAPSHOT"},{"p":"it.polimi.is23am10.server.network.messages","c":"AbstractMessage.MessageType","l":"GAME_SNAPSHOT"},{"p":"it.polimi.is23am10.server.command","c":"AbstractCommand.Opcode","l":"GAME_TIMER"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"Game()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"GameHandler(String, Integer)","u":"%3Cinit%3E(java.lang.String,java.lang.Integer)"},{"p":"it.polimi.is23am10.server.network.messages","c":"GameMessage","l":"GameMessage(VirtualView)","u":"%3Cinit%3E(it.polimi.is23am10.server.network.virtualview.VirtualView)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"gameOverString"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.GameSnapshotFactory","l":"GameSnapshotFactory()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.network.gamehandler.exceptions","c":"GameSnapshotUpdateException","l":"GameSnapshotUpdateException(Game)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.game.Game)"},{"p":"it.polimi.is23am10.server.command","c":"AbstractCommand.Opcode","l":"GET_GAMES"},{"p":"it.polimi.is23am10.client","c":"Client","l":"getActiveGameServers()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getActivePlayer()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"getActivePlayer()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getAssignedPrivatePatterns()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getAssignedSharedPatterns()"},{"p":"it.polimi.is23am10.server.command","c":"GetAvailableGamesCommand","l":"GetAvailableGamesCommand()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.controller.interfaces","c":"IServerControllerAction","l":"getAvailableGamesConsumer"},{"p":"it.polimi.is23am10.server.controller.interfaces","c":"IServerControllerAction","l":"getAvailableGamesConsumerRmi"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"getBlackMapAt(Integer, Integer)","u":"getBlackMapAt(java.lang.Integer,java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"getBoardGrid()"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"getBookshelf()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualPlayer","l":"getBookshelf()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"PrivatePatternsHelper","l":"getBookshelf(Integer)","u":"getBookshelf(java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"getBookshelfGrid()"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"getBookshelfGridAt(Integer, Integer)","u":"getBookshelfGridAt(java.lang.Integer,java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"getBookshelfPoints()"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"getBookshelfString()"},{"p":"it.polimi.is23am10.server.model.items.card","c":"SharedCard","l":"getCardWinners()"},{"p":"it.polimi.is23am10.server.command","c":"SendChatMessageCommand","l":"getChatMessage()"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"PlayerConnectorRmi","l":"getClient()"},{"p":"it.polimi.is23am10.client","c":"Client","l":"getClientStatus()"},{"p":"it.polimi.is23am10.utils","c":"Coordinates","l":"getCol()"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"PlayerConnectorSocket","l":"getConnector()"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"getCreateJoinScene(List<VirtualView>)","u":"getCreateJoinScene(java.util.List)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"getCreateNewGameSelectionScene()"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"getCurrentPlayerHandler()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getDisconnectedPlayersNum()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"getDisconnectedPlayersNum()"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"getEndGameScene(VirtualView)","u":"getEndGameScene(it.polimi.is23am10.server.network.virtualview.VirtualView)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"getEnterGameSelectionScene()"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"getErrorMessage(StackPane, ErrorMessage)","u":"getErrorMessage(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.messages.ErrorMessage)"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage","l":"getErrorSeverity()"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"getExtraPoint()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getFirstPlayer()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"getFirstPlayer()"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"getFormattedChatMessage(ChatMessage)","u":"getFormattedChatMessage(it.polimi.is23am10.server.network.messages.ChatMessage)"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"getFreeRowsInCol(int)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"getGame()"},{"p":"it.polimi.is23am10.server.network.messages","c":"GameMessage","l":"getGame()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getGameBoard()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"getGameBoard()"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerState","l":"getGameHandlerByUUID(UUID)","u":"getGameHandlerByUUID(java.util.UUID)"},{"p":"it.polimi.is23am10.server.command","c":"AddPlayerCommand","l":"getGameId()"},{"p":"it.polimi.is23am10.server.command","c":"MoveTilesCommand","l":"getGameId()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getGameId()"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"getGameId()"},{"p":"it.polimi.is23am10.server.network.playerconnector.interfaces","c":"IPlayerConnector","l":"getGameId()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"getGameId()"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerState","l":"getGamePools()"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"getGameSnapshotScene(VirtualView)","u":"getGameSnapshotScene(it.polimi.is23am10.server.network.virtualview.VirtualView)"},{"p":"it.polimi.is23am10.server.model.pattern","c":"AbstractPattern","l":"getIndex()"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"getIsActivePlayer()"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"getIsConnected()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualPlayer","l":"getIsConnected()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"getIsServer()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"getIsServer()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"getKeepAlive()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"getKeepAlive()"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"getLastSnoozeMs()"},{"p":"it.polimi.is23am10.server.model.items.card","c":"PrivateCard","l":"getMatchedBlocksCount()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"getMaxConnections()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"getMaxConnections()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"getMaxInactivityTime()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"getMaxInactivityTime()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getMaxPlayer()"},{"p":"it.polimi.is23am10.server.command","c":"StartGameCommand","l":"getMaxPlayers()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"getMaxPlayers()"},{"p":"it.polimi.is23am10.server.network.messages","c":"AbstractMessage","l":"getMessage()"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"getMessageFromQueue()"},{"p":"it.polimi.is23am10.server.network.playerconnector.interfaces","c":"IPlayerConnector","l":"getMessageFromQueue()"},{"p":"it.polimi.is23am10.server.network.messages","c":"AbstractMessage","l":"getMessageType()"},{"p":"it.polimi.is23am10.server.command","c":"MoveTilesCommand","l":"getMoves()"},{"p":"it.polimi.is23am10.server.command","c":"MoveTilesCommand","l":"getMovingPlayer()"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"getMsgQueueSize()"},{"p":"it.polimi.is23am10.server.network.playerconnector.interfaces","c":"IPlayerConnector","l":"getMsgQueueSize()"},{"p":"it.polimi.is23am10.server.model.factory","c":"GameFactory","l":"getNewGame(String, Integer)","u":"getNewGame(java.lang.String,java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.factory","c":"PlayerFactory","l":"getNewPlayer(String, Game)","u":"getNewPlayer(java.lang.String,it.polimi.is23am10.server.model.game.Game)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"CurrentPlayerHandler","l":"getNotified()"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"getNotUsedPattern(List<PrivatePattern<Function<Bookshelf, Integer>>>)","u":"getNotUsedPattern(java.util.List)"},{"p":"it.polimi.is23am10.server.model.factory","c":"SharedPatternFactory","l":"getNotUsedPattern(List<SharedPattern<Predicate<Bookshelf>>>)","u":"getNotUsedPattern(java.util.List)"},{"p":"it.polimi.is23am10.server.command","c":"AbstractCommand","l":"getOpcode()"},{"p":"it.polimi.is23am10.server.model.items.card","c":"AbstractCard","l":"getPattern()"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"CurrentPlayerHandler","l":"getPlayer()"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"getPlayer()"},{"p":"it.polimi.is23am10.server.network.playerconnector.interfaces","c":"IPlayerConnector","l":"getPlayer()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getPlayerByName(String)","u":"getPlayerByName(java.lang.String)"},{"p":"it.polimi.is23am10.client","c":"Client","l":"getPlayerConnector()"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"getPlayerConnectorFromPlayer(Player)","u":"getPlayerConnectorFromPlayer(it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"getPlayerConnectors()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualPlayer","l":"getPlayerId()"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"getPlayerID()"},{"p":"it.polimi.is23am10.server.command","c":"AddPlayerCommand","l":"getPlayerName()"},{"p":"it.polimi.is23am10.server.command","c":"SnoozeGameTimerCommand","l":"getPlayerName()"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"getPlayerName()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualPlayer","l":"getPlayerName()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getPlayerNames()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getPlayers()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"getPlayers()"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerState","l":"getPlayersPool()"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"getPrivateCard()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualPlayer","l":"getPrivateCardIndex()"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"getPrivatePoints()"},{"p":"it.polimi.is23am10.server.network.messages","c":"AvailableGamesMessage","l":"getReceiver()"},{"p":"it.polimi.is23am10.server.network.messages","c":"ChatMessage","l":"getReceiver()"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage","l":"getReceiver()"},{"p":"it.polimi.is23am10.server.network.messages","c":"ChatMessage","l":"getReceiverName()"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerState","l":"getRmiProxyConnector(UUID)","u":"getRmiProxyConnector(java.util.UUID)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerRmiBindings","l":"getRmiRegistry()"},{"p":"it.polimi.is23am10.utils","c":"Coordinates","l":"getRow()"},{"p":"it.polimi.is23am10.server.model.pattern","c":"AbstractPattern","l":"getRule()"},{"p":"it.polimi.is23am10.server.model.items.scoreblock","c":"ScoreBlock","l":"getScore()"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"getScore()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualPlayer","l":"getScore()"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"getScoreBlockPoints()"},{"p":"it.polimi.is23am10.server.model.items.card","c":"SharedCard","l":"getScoreBlocks()"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"getScoreBlocks()"},{"p":"it.polimi.is23am10.server.network.messages","c":"ChatMessage","l":"getSender()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"getServerAddress()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"getServerAddress()"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerRmiBindings","l":"getServerControllerActionRmiStub()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"getServerRmiPort()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"getServerRmiPort()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"getServerSocketPort()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"getServerSocketPort()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getSharedCard()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"getSharedCards()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"getShowDebug()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"getShowDebug()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"getShowGUI()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"getShowGUI()"},{"p":"it.polimi.is23am10.server","c":"Server","l":"getSocketClientsConnected()"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"getSplashScreenScene()"},{"p":"it.polimi.is23am10.server.command","c":"StartGameCommand","l":"getStartingPlayerName()"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"CurrentPlayerHandler","l":"getStartPlayingTimeMs()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getStatus()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"getStatus()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"getString(OutputWrapper.OutputLevel, String)","u":"getString(it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel,java.lang.String)"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"getStringTotalScore()"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"getTileAt(Integer, Integer)","u":"getTileAt(java.lang.Integer,java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"getTileFromSack()"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"getTileSackSize()"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"getTotalScore()"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile","l":"getType()"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"getUserInput()"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"getUserInput()"},{"p":"it.polimi.is23am10.client.userinterface","c":"UserInterface","l":"getUserInput()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"getUseRMI()"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfigContext","l":"getUseRMI()"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"getVisibleScore()"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"getWaitGameScene()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"getWinnerPlayer()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"getWinnerPlayer()"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"GraphicUserInterface()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"GREEN"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"GREEN_BACKGROUND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"GREEN_BACKGROUND_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"GREEN_BOLD"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"GREEN_BOLD_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"GREEN_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"GREEN_UNDERLINED"},{"p":"it.polimi.is23am10.server.command","c":"AddPlayerCommand","l":"hashCode()"},{"p":"it.polimi.is23am10.server.command","c":"MoveTilesCommand","l":"hashCode()"},{"p":"it.polimi.is23am10.server.command","c":"SnoozeGameTimerCommand","l":"hashCode()"},{"p":"it.polimi.is23am10.server.command","c":"StartGameCommand","l":"hashCode()"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"hashCode()"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"hashCode()"},{"p":"it.polimi.is23am10.server.model.items.scoreblock","c":"ScoreBlock","l":"hashCode()"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile","l":"hashCode()"},{"p":"it.polimi.is23am10.server.model.pattern","c":"PrivatePattern","l":"hashCode()"},{"p":"it.polimi.is23am10.server.model.pattern","c":"SharedPattern","l":"hashCode()"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"hashCode()"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"hashCode()"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"hashCode()"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"hashCode()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualPlayer","l":"hashCode()"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"hashCode()"},{"p":"it.polimi.is23am10.utils","c":"Coordinates","l":"hashCode()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"HUNDRED_PADDING"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"idx"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"indexBoard"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"indexBookshelf"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper.OutputLevel","l":"INFO"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage.ErrorSeverity","l":"INFO"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"info(String, boolean)","u":"info(java.lang.String,boolean)"},{"p":"it.polimi.is23am10.client","c":"Client.ClientGameStatus","l":"INIT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"inputError"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"insertPlayerNameString"},{"p":"it.polimi.is23am10.utils.exceptions","c":"InvalidArgumentException","l":"InvalidArgumentException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.game.exceptions","c":"InvalidBoardTileSelectionException","l":"InvalidBoardTileSelectionException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.utils.config.exceptions","c":"InvalidMaxConnectionsNumberException","l":"InvalidMaxConnectionsNumberException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.game.exceptions","c":"InvalidMaxPlayerException","l":"InvalidMaxPlayerException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.items.board.exceptions","c":"InvalidNumOfPlayersException","l":"InvalidNumOfPlayersException(Integer)","u":"%3Cinit%3E(java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.game.exceptions","c":"InvalidPlayersNumberException","l":"InvalidPlayersNumberException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.utils.config.exceptions","c":"InvalidPortNumberException","l":"InvalidPortNumberException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"IS_SERVER_CLI_COMMAND"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"isBookshelfFull()"},{"p":"it.polimi.is23am10.server.network.messages","c":"AvailableGamesMessage","l":"isBroadcast()"},{"p":"it.polimi.is23am10.server.network.messages","c":"ChatMessage","l":"isBroadcast()"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage","l":"isBroadcast()"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"isCheckForUserInput()"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile","l":"isEmpty()"},{"p":"it.polimi.is23am10.server.model.factory","c":"PlayerFactory","l":"isPlayerNameDuplicate(String, List<String>)","u":"isPlayerNameDuplicate(java.lang.String,java.util.List)"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"isRefillNeeded()"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.SCENE","l":"JOIN_GAME"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CommandsBuilder","l":"JOIN_GAME"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"joinExisting"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"CallBack","l":"joinGameCallBack"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"joinOrCreateString"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"KEEP_ALIVE_CLI_COMMAND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"L_PADDING"},{"p":"it.polimi.is23am10.server.model.game","c":"Game.GameStatus","l":"LAST_ROUND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"lastRoundString"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"line"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"listGamesString"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"M_PADDING"},{"p":"it.polimi.is23am10","c":"App","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"mainStage"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"MAX_CLIENT_INACTIVITY_TIME"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"MAX_CONNECTIONS_CLI_COMMAND"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"MAX_CONNECTIONS_NUMBER"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"MAX_PORT_NUMBER"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"messageStringReceiver"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"messageStringSender"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"MIN_CONNECTIONS_NUMBER"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"MIN_PADDING_FOR_NAMES"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"MIN_PORT_NUMBER"},{"p":"it.polimi.is23am10.utils.exceptions","c":"MissingParameterException","l":"MissingParameterException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CommandsBuilder","l":"MOVE_TILE"},{"p":"it.polimi.is23am10.server.command","c":"AbstractCommand.Opcode","l":"MOVE_TILES"},{"p":"it.polimi.is23am10.server.controller","c":"ServerDebugPrefixString","l":"MOVE_TILES_COMMAND_PREFIX"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"CallBack","l":"moveTileCallBack"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CommandsBuilder","l":"moveTileCmd(String)","u":"moveTileCmd(java.lang.String)"},{"p":"it.polimi.is23am10.utils","c":"MoveTileCommandTypeAdaptor","l":"MoveTileCommandTypeAdaptor()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.command","c":"MoveTilesCommand","l":"MoveTilesCommand(String, UUID, Map<Coordinates, Coordinates>)","u":"%3Cinit%3E(java.lang.String,java.util.UUID,java.util.Map)"},{"p":"it.polimi.is23am10.server.controller.interfaces","c":"IServerControllerAction","l":"moveTilesConsumer"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"moveTilesExampleString"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"moveTilesInviteString"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"N"},{"p":"it.polimi.is23am10.server.model.items.card.exceptions","c":"NegativeMatchedBlockCountException","l":"NegativeMatchedBlockCountException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"newLine"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"nextTurn()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"noGamesString"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"notify(AbstractMessage)","u":"notify(it.polimi.is23am10.server.network.messages.AbstractMessage)"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"PlayerConnectorRmi","l":"notify(AbstractMessage)","u":"notify(it.polimi.is23am10.server.network.messages.AbstractMessage)"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"PlayerConnectorSocket","l":"notify(AbstractMessage)","u":"notify(it.polimi.is23am10.server.network.messages.AbstractMessage)"},{"p":"it.polimi.is23am10.server.model.items.scoreblock.exceptions","c":"NotValidScoreBlockValueException","l":"NotValidScoreBlockValueException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"nowPlaying"},{"p":"it.polimi.is23am10.server.command","c":"AbstractCommand.Opcode","l":"NULL"},{"p":"it.polimi.is23am10.server.model.game.exceptions","c":"NullAssignedPatternException","l":"NullAssignedPatternException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.network.playerconnector.exceptions","c":"NullBlockingQueueException","l":"NullBlockingQueueException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.controller.exceptions","c":"NullGameHandlerInstance","l":"NullGameHandlerInstance()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.utils.exceptions","c":"NullIndexValueException","l":"NullIndexValueException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.items.card.exceptions","c":"NullMatchedBlockCountException","l":"NullMatchedBlockCountException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.game.exceptions","c":"NullMaxPlayerException","l":"NullMaxPlayerException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.items.board.exceptions","c":"NullNumOfPlayersException","l":"NullNumOfPlayersException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.player.exceptions","c":"NullPlayerBookshelfException","l":"NullPlayerBookshelfException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.network.gamehandler.exceptions","c":"NullPlayerConnector","l":"NullPlayerConnector()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.game.exceptions","c":"NullPlayerException","l":"NullPlayerException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.player.exceptions","c":"NullPlayerIdException","l":"NullPlayerIdException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.player.exceptions","c":"NullPlayerNameException","l":"NullPlayerNameException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.factory.exceptions","c":"NullPlayerNamesException","l":"NullPlayerNamesException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.player.exceptions","c":"NullPlayerPrivateCardException","l":"NullPlayerPrivateCardException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.player.exceptions","c":"NullPlayerScoreBlocksException","l":"NullPlayerScoreBlocksException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.player.exceptions","c":"NullPlayerScoreException","l":"NullPlayerScoreException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.score.exceptions","c":"NullPointsException","l":"NullPointsException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.controller.exceptions","c":"NullRmiServerException","l":"NullRmiServerException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.controller.exceptions","c":"NullRmiStubException","l":"NullRmiStubException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.items.card.exceptions","c":"NullScoreBlockListException","l":"NullScoreBlockListException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.network.playerconnector.exceptions","c":"NullSocketConnectorException","l":"NullSocketConnectorException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.items.bookshelf.exceptions","c":"NullTileException","l":"NullTileException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualPlayer","l":"obfuscatePrivateCard()"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"obfuscatePrivatePoints()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"OutputWrapper(boolean)","u":"%3Cinit%3E(boolean)"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"ow"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"paddingBookshelf"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"parse(String[])","u":"parse(java.lang.String[])"},{"p":"it.polimi.is23am10.server.model.factory","c":"PrivatePatternFactory","l":"patternsArray"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile.TileType","l":"PLANT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"player"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"Player()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"Player(Player)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"PlayerConnectorRmi","l":"PlayerConnectorRmi(LinkedBlockingQueue<AbstractMessage>, IClient)","u":"%3Cinit%3E(java.util.concurrent.LinkedBlockingQueue,it.polimi.is23am10.client.IClient)"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"PlayerConnectorSocket","l":"PlayerConnectorSocket(Socket, LinkedBlockingQueue<AbstractMessage>)","u":"%3Cinit%3E(java.net.Socket,java.util.concurrent.LinkedBlockingQueue)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"playerIdx"},{"p":"it.polimi.is23am10.server.model.game.exceptions","c":"PlayerNotFoundException","l":"PlayerNotFoundException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"playerScoreString"},{"p":"it.polimi.is23am10.client","c":"Client.ClientGameStatus","l":"PLAYING"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"printString(OutputWrapper.OutputLevel, String, boolean)","u":"printString(it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel,java.lang.String,boolean)"},{"p":"it.polimi.is23am10.server.model.items.card","c":"PrivateCard","l":"PrivateCard()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.items.card","c":"PrivateCard","l":"PrivateCard(List<PrivatePattern<Function<Bookshelf, Integer>>>)","u":"%3Cinit%3E(java.util.List)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"privateCardIdx"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"privateCardPointsMap"},{"p":"it.polimi.is23am10.server.model.pattern","c":"PrivatePattern","l":"PrivatePattern(T, Integer)","u":"%3Cinit%3E(T,java.lang.Integer)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"PrivatePatternsHelper","l":"PrivatePatternsHelper()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"privatePoints"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"PURPLE"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"PURPLE_BACKGROUND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"PURPLE_BACKGROUND_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"PURPLE_BOLD"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"PURPLE_BOLD_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"PURPLE_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"PURPLE_UNDERLINED"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"pushGameState()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"putTileAction(Tile, Coordinates)","u":"putTileAction(it.polimi.is23am10.server.model.items.tile.Tile,it.polimi.is23am10.utils.Coordinates)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerRmiBindings","l":"rebindServerControllerAction(IServerControllerAction)","u":"rebindServerControllerAction(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"RECEIVER_NOT_FOUND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"RED"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"RED_BACKGROUND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"RED_BACKGROUND_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"RED_BOLD"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"RED_BOLD_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"RED_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"RED_UNDERLINED"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"refillIfNeeded()"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerState","l":"removeGameHandlerById(UUID)","u":"removeGameHandlerById(java.util.UUID)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerState","l":"removePlayerByGame(UUID, Player)","u":"removePlayerByGame(java.util.UUID,it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"removePlayerByGame(UUID, Player)","u":"removePlayerByGame(java.util.UUID,it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"removeTileAt(Integer, Integer)","u":"removeTileAt(java.lang.Integer,java.lang.Integer)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"RESET"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"RMI_PORT_CLI_COMMAND"},{"p":"it.polimi.is23am10.client","c":"RMIClient","l":"RMIClient(PlayerConnectorRmi, UserInterface, IServerControllerAction, Registry)","u":"%3Cinit%3E(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi,it.polimi.is23am10.client.userinterface.UserInterface,it.polimi.is23am10.server.controller.interfaces.IServerControllerAction,java.rmi.registry.Registry)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"role"},{"p":"it.polimi.is23am10.utils.exceptions","c":"RowIndexOutOfBoundsException","l":"RowIndexOutOfBoundsException(String, Integer, Integer)","u":"%3Cinit%3E(java.lang.String,java.lang.Integer,java.lang.Integer)"},{"p":"it.polimi.is23am10.client","c":"Client","l":"run()"},{"p":"it.polimi.is23am10.client","c":"RMIClient","l":"run()"},{"p":"it.polimi.is23am10.client","c":"SocketClient","l":"run()"},{"p":"it.polimi.is23am10.server.controller","c":"ClientConnectionChecker","l":"run()"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerSocket","l":"run()"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"runInputHandler()"},{"p":"it.polimi.is23am10.client","c":"SocketClient","l":"runInputMessageHandler()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"S_PADDING"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"Score()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"Score(Score)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.score.Score)"},{"p":"it.polimi.is23am10.server.model.items.scoreblock","c":"ScoreBlock","l":"ScoreBlock(Integer)","u":"%3Cinit%3E(java.lang.Integer)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"scoreBlockPoints"},{"p":"it.polimi.is23am10.server.command","c":"AbstractCommand.Opcode","l":"SEND_CHAT_MESSAGE"},{"p":"it.polimi.is23am10.server.controller","c":"ServerDebugPrefixString","l":"SEND_CHAT_MESSAGE_COMMAND_PREFIX"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CommandsBuilder","l":"SEND_MESSAGE"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CommandsBuilder","l":"sendChatMessageCmd(String)","u":"sendChatMessageCmd(java.lang.String)"},{"p":"it.polimi.is23am10.server.command","c":"SendChatMessageCommand","l":"SendChatMessageCommand(ChatMessage)","u":"%3Cinit%3E(it.polimi.is23am10.server.network.messages.ChatMessage)"},{"p":"it.polimi.is23am10.server.controller.interfaces","c":"IServerControllerAction","l":"sendChatMessageConsumer"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"CallBack","l":"sendMessageCallBack"},{"p":"it.polimi.is23am10.utils","c":"MoveTileCommandTypeAdaptor","l":"serialize(Map<Coordinates, Coordinates>, Type, JsonSerializationContext)","u":"serialize(java.util.Map,java.lang.reflect.Type,com.google.gson.JsonSerializationContext)"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"SERVER_ADDRESS_CLI_COMMAND"},{"p":"it.polimi.is23am10.server","c":"Server","l":"Server(ServerSocket, ExecutorService, IServerControllerAction, Registry)","u":"%3Cinit%3E(java.net.ServerSocket,java.util.concurrent.ExecutorService,it.polimi.is23am10.server.controller.interfaces.IServerControllerAction,java.rmi.registry.Registry)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerAction","l":"ServerControllerAction()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerSocket","l":"ServerControllerSocket(PlayerConnectorSocket, ServerControllerAction)","u":"%3Cinit%3E(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket,it.polimi.is23am10.server.controller.ServerControllerAction)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"setActivePlayer(Player)","u":"setActivePlayer(it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"setBookshelf(Bookshelf)","u":"setBookshelf(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","c":"Bookshelf","l":"setBookshelfGridIndex(Integer, Integer, Tile)","u":"setBookshelfGridIndex(java.lang.Integer,java.lang.Integer,it.polimi.is23am10.server.model.items.tile.Tile)"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"setBookshelfPoints(Bookshelf)","u":"setBookshelfPoints(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf)"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"PlayerConnectorRmi","l":"setClient(IClient)","u":"setClient(it.polimi.is23am10.client.IClient)"},{"p":"it.polimi.is23am10.client","c":"Client","l":"setClientStatus(Client.ClientGameStatus)","u":"setClientStatus(it.polimi.is23am10.client.Client.ClientGameStatus)"},{"p":"it.polimi.is23am10.utils","c":"Coordinates","l":"setCol(Integer)","u":"setCol(java.lang.Integer)"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"PlayerConnectorSocket","l":"setConnector(Socket)","u":"setConnector(java.net.Socket)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"setDebug(boolean)"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"setExtraPoint()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"setFirstPlayer(Player)","u":"setFirstPlayer(it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.client","c":"Client","l":"setForceCloseApplication(boolean)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"setGameBoard()"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"setGameId(UUID)","u":"setGameId(java.util.UUID)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"setIsActivePlayer(boolean)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"setIsConnected(boolean)"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"setIsServer(boolean)"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"setKeepAlive(boolean)"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"setLastSnoozeMs(long)"},{"p":"it.polimi.is23am10.server.model.items.card","c":"PrivateCard","l":"setMatchedBlocksCount(Integer)","u":"setMatchedBlocksCount(java.lang.Integer)"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"setMaxConnections(Integer)","u":"setMaxConnections(java.lang.Integer)"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"setMaxInactivityTimeMs(long)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"setMaxPlayers(Integer)","u":"setMaxPlayers(java.lang.Integer)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"CurrentPlayerHandler","l":"setNotified(boolean)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"CurrentPlayerHandler","l":"setPlayer(Player)","u":"setPlayer(it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.network.playerconnector","c":"AbstractPlayerConnector","l":"setPlayer(Player)","u":"setPlayer(it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.network.playerconnector.interfaces","c":"IPlayerConnector","l":"setPlayer(Player)","u":"setPlayer(it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"setPlayerID(UUID)","u":"setPlayerID(java.util.UUID)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"setPlayerName(String)","u":"setPlayerName(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"setPrivateCard(PrivateCard)","u":"setPrivateCard(it.polimi.is23am10.server.model.items.card.PrivateCard)"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"setPrivatePoints(Bookshelf, PrivateCard)","u":"setPrivatePoints(it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,it.polimi.is23am10.server.model.items.card.PrivateCard)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerRmiBindings","l":"setRmiRegistry(Registry)","u":"setRmiRegistry(java.rmi.registry.Registry)"},{"p":"it.polimi.is23am10.utils","c":"Coordinates","l":"setRow(Integer)","u":"setRow(java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"setScore(Score)","u":"setScore(it.polimi.is23am10.server.model.score.Score)"},{"p":"it.polimi.is23am10.server.model.score","c":"Score","l":"setScoreBlockPoints(List<ScoreBlock>)","u":"setScoreBlockPoints(java.util.List)"},{"p":"it.polimi.is23am10.server.model.items.card","c":"SharedCard","l":"setScoreBlocks(List<ScoreBlock>)","u":"setScoreBlocks(java.util.List)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"setScoreBlocks(List<ScoreBlock>)","u":"setScoreBlocks(java.util.List)"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"setServerAddress(String)","u":"setServerAddress(java.lang.String)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerRmiBindings","l":"setServerControllerActionServer(IServerControllerAction)","u":"setServerControllerActionServer(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)"},{"p":"it.polimi.is23am10.server.controller","c":"ServerControllerRmiBindings","l":"setServerControllerActionStub(IServerControllerAction)","u":"setServerControllerActionStub(it.polimi.is23am10.server.controller.interfaces.IServerControllerAction)"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"setServerRmiPort(Integer)","u":"setServerRmiPort(java.lang.Integer)"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"setServerSocketPort(Integer)","u":"setServerSocketPort(java.lang.Integer)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"setSharedCards(List<SharedCard>)","u":"setSharedCards(java.util.List)"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"setShowDebug(boolean)"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"setShowGUI(boolean)"},{"p":"it.polimi.is23am10.server","c":"Server","l":"setSocketClientConnected(int)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"CurrentPlayerHandler","l":"setStartPlayingTimeMs(long)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"setStatus(Game.GameStatus)","u":"setStatus(it.polimi.is23am10.server.model.game.Game.GameStatus)"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile","l":"setTile(Tile.TileType)","u":"setTile(it.polimi.is23am10.server.model.items.tile.Tile.TileType)"},{"p":"it.polimi.is23am10.utils.config","c":"AppConfig","l":"setUseRMI(boolean)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"setWinnerPlayer(Player)","u":"setWinnerPlayer(it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.model.items.card","c":"SharedCard","l":"SharedCard(List<SharedPattern<Predicate<Bookshelf>>>, Integer)","u":"%3Cinit%3E(java.util.List,java.lang.Integer)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"sharedCardHeaderDescription"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"sharedCardsBody"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"sharedCardsBodyDescription"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"sharedCardsHeader"},{"p":"it.polimi.is23am10.server.model.pattern","c":"SharedPattern","l":"SharedPattern(T, Integer)","u":"%3Cinit%3E(T,java.lang.Integer)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"sharedPatternsDesc"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"SHOW_GUI_CLI_COMMAND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"show(VirtualView, boolean)","u":"show(it.polimi.is23am10.server.network.virtualview.VirtualView,boolean)"},{"p":"it.polimi.is23am10.client","c":"Client","l":"showServerMessage(AbstractMessage)","u":"showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)"},{"p":"it.polimi.is23am10.client","c":"IClient","l":"showServerMessage(AbstractMessage)","u":"showServerMessage(it.polimi.is23am10.server.network.messages.AbstractMessage)"},{"p":"it.polimi.is23am10.server.network.messages","c":"AbstractMessage.MessageType","l":"SNOOZE_ACK"},{"p":"it.polimi.is23am10.server.controller","c":"ServerDebugPrefixString","l":"SNOOZE_TIMER_COMMAND_PREFIX"},{"p":"it.polimi.is23am10.server.network.messages","c":"SnoozeACKMessage","l":"SnoozeACKMessage()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.command","c":"SnoozeGameTimerCommand","l":"SnoozeGameTimerCommand(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.controller.interfaces","c":"IServerControllerAction","l":"snoozeTimerConsumer"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"SOCKET_PORT_CLI_COMMAND"},{"p":"it.polimi.is23am10.client","c":"SocketClient","l":"SocketClient(PlayerConnectorSocket, UserInterface)","u":"%3Cinit%3E(it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket,it.polimi.is23am10.client.userinterface.UserInterface)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.SCENE","l":"SPLASH_SCREEN"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory","l":"stages"},{"p":"it.polimi.is23am10.server.command","c":"AbstractCommand.Opcode","l":"START"},{"p":"it.polimi.is23am10.server.controller","c":"ServerDebugPrefixString","l":"START_COMMAND_PREFIX"},{"p":"it.polimi.is23am10.client.interfaces","c":"AlarmConsumer","l":"start()"},{"p":"it.polimi.is23am10.server","c":"Server","l":"start(AppConfigContext)","u":"start(it.polimi.is23am10.utils.config.AppConfigContext)"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"start(Stage)","u":"start(javafx.stage.Stage)"},{"p":"it.polimi.is23am10.server.controller.interfaces","c":"IServerControllerAction","l":"startConsumer"},{"p":"it.polimi.is23am10.server.model.game","c":"Game.GameStatus","l":"STARTED"},{"p":"it.polimi.is23am10.server","c":"Server.ServerStatus","l":"STARTED"},{"p":"it.polimi.is23am10.server.command","c":"StartGameCommand","l":"StartGameCommand(String, Integer)","u":"%3Cinit%3E(java.lang.String,java.lang.Integer)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"status"},{"p":"it.polimi.is23am10.server","c":"Server","l":"status()"},{"p":"it.polimi.is23am10.server","c":"Server","l":"stop()"},{"p":"it.polimi.is23am10.server","c":"Server.ServerStatus","l":"STOPPED"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"CallBack","l":"switchToPlayerBookshelf"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"tab"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"tabBlackSquare"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"tableBody1"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"tableBody2"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"tableHeader1"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"tableHeader2"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"tableLines1"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"tableLines2"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"takeMsgQueue()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game","l":"takeTileAction(Coordinates)","u":"takeTileAction(it.polimi.is23am10.utils.Coordinates)"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"takeTileAt(Integer, Integer)","u":"takeTileAt(java.lang.Integer,java.lang.Integer)"},{"p":"it.polimi.is23am10.client","c":"Client","l":"terminateClient()"},{"p":"it.polimi.is23am10.client.userinterface","c":"CommandLineInterface","l":"terminateUserInterface()"},{"p":"it.polimi.is23am10.client.userinterface","c":"GraphicUserInterface","l":"terminateUserInterface()"},{"p":"it.polimi.is23am10.client.userinterface","c":"UserInterface","l":"terminateUserInterface()"},{"p":"it.polimi.is23am10.utils","c":"ThreadLocalTypeAdapterFactory","l":"ThreadLocalTypeAdapterFactory()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.server.model.items.board","c":"Board","l":"TILE_TYPE_NUM"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile","l":"Tile(Tile)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.items.tile.Tile)"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile","l":"Tile(Tile.TileType)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.items.tile.Tile.TileType)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"topPaddingBoard"},{"p":"it.polimi.is23am10.utils","c":"Coordinates","l":"toString()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"totalScore"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile.TileType","l":"TROPHY"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.GameSnapshotFactory","l":"updateBookshelf(StackPane, Bookshelf, String)","u":"updateBookshelf(javafx.scene.layout.StackPane,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.GameSnapshotFactory","l":"updateChatHistory(StackPane, AbstractMessage)","u":"updateChatHistory(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.messages.AbstractMessage)"},{"p":"it.polimi.is23am10.server.network.gamehandler","c":"GameHandler","l":"updateCurrentPlayerHandler()"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.GameSnapshotFactory","l":"updateGameWidget(StackPane, VirtualView, VirtualView)","u":"updateGameWidget(javafx.scene.layout.StackPane,it.polimi.is23am10.server.network.virtualview.VirtualView,it.polimi.is23am10.server.network.virtualview.VirtualView)"},{"p":"it.polimi.is23am10.server.model.player","c":"Player","l":"updateScore()"},{"p":"it.polimi.is23am10.utils","c":"ArgParser","l":"USE_RMI_CLI_COMMAND"},{"p":"it.polimi.is23am10.client","c":"Client","l":"userInterface"},{"p":"it.polimi.is23am10.utils","c":"CommandSyntaxValidator","l":"validateColIdx(String)","u":"validateColIdx(java.lang.String)"},{"p":"it.polimi.is23am10.utils","c":"CommandSyntaxValidator","l":"validateCoord(String)","u":"validateCoord(java.lang.String)"},{"p":"it.polimi.is23am10.utils","c":"CommandSyntaxValidator","l":"validateGameIdx(String, Integer)","u":"validateGameIdx(java.lang.String,java.lang.Integer)"},{"p":"it.polimi.is23am10.utils","c":"MovesValidator","l":"validateGameMoves(Map<Coordinates, Coordinates>, Bookshelf, Board)","u":"validateGameMoves(java.util.Map,it.polimi.is23am10.server.model.items.bookshelf.Bookshelf,it.polimi.is23am10.server.model.items.board.Board)"},{"p":"it.polimi.is23am10.utils","c":"CommandSyntaxValidator","l":"validateMaxPlayer(String)","u":"validateMaxPlayer(java.lang.String)"},{"p":"it.polimi.is23am10.utils","c":"IndexValidator","l":"validColIndex(Integer, Integer)","u":"validColIndex(java.lang.Integer,java.lang.Integer)"},{"p":"it.polimi.is23am10.utils","c":"IndexValidator","l":"validRowIndex(Integer, Integer)","u":"validRowIndex(java.lang.Integer,java.lang.Integer)"},{"p":"it.polimi.is23am10.client","c":"Client.ClientGameStatus","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.SCENE","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper.OutputLevel","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"it.polimi.is23am10.server.command","c":"AbstractCommand.Opcode","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.game","c":"Game.GameStatus","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile.TileType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"it.polimi.is23am10.server.network.messages","c":"AbstractMessage.MessageType","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage.ErrorSeverity","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"it.polimi.is23am10.server","c":"Server.ServerStatus","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"it.polimi.is23am10.client","c":"Client.ClientGameStatus","l":"values()"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.SCENE","l":"values()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper.OutputLevel","l":"values()"},{"p":"it.polimi.is23am10.server.command","c":"AbstractCommand.Opcode","l":"values()"},{"p":"it.polimi.is23am10.server.model.game","c":"Game.GameStatus","l":"values()"},{"p":"it.polimi.is23am10.server.model.items.tile","c":"Tile.TileType","l":"values()"},{"p":"it.polimi.is23am10.server.network.messages","c":"AbstractMessage.MessageType","l":"values()"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage.ErrorSeverity","l":"values()"},{"p":"it.polimi.is23am10.server","c":"Server.ServerStatus","l":"values()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"verticalBoardIndex"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualPlayer","l":"VirtualPlayer(Player)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.player.Player)"},{"p":"it.polimi.is23am10.server.network.virtualview","c":"VirtualView","l":"VirtualView(Game)","u":"%3Cinit%3E(it.polimi.is23am10.server.model.game.Game)"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","c":"GuiFactory.SCENE","l":"WAIT_GAME"},{"p":"it.polimi.is23am10.server.model.game","c":"Game.GameStatus","l":"WAITING_FOR_PLAYERS"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"waitingForPlayers"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper.OutputLevel","l":"WARNING"},{"p":"it.polimi.is23am10.server.network.messages","c":"ErrorMessage.ErrorSeverity","l":"WARNING"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"WARNING_PLAYER_DISCONNECT"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"WARNING_PLAYER_JOIN"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"WARNING_PLAYER_JOIN_SERVER"},{"p":"it.polimi.is23am10.utils","c":"ErrorTypeString","l":"WARNING_PLAYER_REJOIN"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"warning(String, boolean)","u":"warning(java.lang.String,boolean)"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"welcomeString"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"WHITE"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"WHITE_BACKGROUND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"WHITE_BACKGROUND_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"WHITE_BOLD"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"WHITE_BOLD_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"WHITE_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"WHITE_UNDERLINED"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"winnerString"},{"p":"it.polimi.is23am10.utils.exceptions","c":"WrongBookShelfPicksException","l":"WrongBookShelfPicksException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.items.bookshelf.exceptions","c":"WrongCharBookshelfStringException","l":"WrongCharBookshelfStringException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.utils.exceptions","c":"WrongGameBoardPicksException","l":"WrongGameBoardPicksException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.server.model.items.bookshelf.exceptions","c":"WrongLengthBookshelfStringException","l":"WrongLengthBookshelfStringException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"it.polimi.is23am10.utils.exceptions","c":"WrongMovesNumberException","l":"WrongMovesNumberException()","u":"%3Cinit%3E()"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"XL_PADDING"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"XS_PADDING"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"XXL_PADDING"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"OutputWrapper","l":"XXS_PADDING"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"YELLOW"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"YELLOW_BACKGROUND"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"YELLOW_BACKGROUND_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"YELLOW_BOLD"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"YELLOW_BOLD_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"YELLOW_BRIGHT"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"ANSICodes","l":"YELLOW_UNDERLINED"},{"p":"it.polimi.is23am10.client.userinterface.helpers","c":"CLIStrings","l":"yourTurn"}];updateSearchResults();
    \ No newline at end of file
    diff --git a/deliverables/javadoc/module-search-index.js b/deliverables/javadoc/module-search-index.js
    new file mode 100644
    index 00000000..0d59754f
    --- /dev/null
    +++ b/deliverables/javadoc/module-search-index.js
    @@ -0,0 +1 @@
    +moduleSearchIndex = [];updateSearchResults();
    \ No newline at end of file
    diff --git a/deliverables/javadoc/overview-summary.html b/deliverables/javadoc/overview-summary.html
    new file mode 100644
    index 00000000..7df3c889
    --- /dev/null
    +++ b/deliverables/javadoc/overview-summary.html
    @@ -0,0 +1,26 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Generated Documentation (Untitled)</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="index redirect">
    +<meta name="generator" content="javadoc/IndexRedirectWriter">
    +<link rel="canonical" href="index.html">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<script type="text/javascript">window.location.replace('index.html')</script>
    +<noscript>
    +<meta http-equiv="Refresh" content="0;index.html">
    +</noscript>
    +</head>
    +<body class="index-redirect-page">
    +<main role="main">
    +<noscript>
    +<p>JavaScript is disabled on your browser.</p>
    +</noscript>
    +<p><a href="index.html">index.html</a></p>
    +</main>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/overview-tree.html b/deliverables/javadoc/overview-tree.html
    new file mode 100644
    index 00000000..c27fecef
    --- /dev/null
    +++ b/deliverables/javadoc/overview-tree.html
    @@ -0,0 +1,323 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Class Hierarchy</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="class tree">
    +<meta name="generator" content="javadoc/TreeWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="tree-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li class="nav-bar-cell1-rev">Tree</li>
    +<li><a href="index-files/index-1.html">Index</a></li>
    +<li><a href="help-doc.html#tree">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 class="title">Hierarchy For All Packages</h1>
    +<span class="package-hierarchy-label">Package Hierarchies:</span>
    +<ul class="horizontal">
    +<li><a href="it/polimi/is23am10/package-tree.html">it.polimi.is23am10</a>, </li>
    +<li><a href="it/polimi/is23am10/client/package-tree.html">it.polimi.is23am10.client</a>, </li>
    +<li><a href="it/polimi/is23am10/client/exceptions/package-tree.html">it.polimi.is23am10.client.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/client/interfaces/package-tree.html">it.polimi.is23am10.client.interfaces</a>, </li>
    +<li><a href="it/polimi/is23am10/client/userinterface/package-tree.html">it.polimi.is23am10.client.userinterface</a>, </li>
    +<li><a href="it/polimi/is23am10/client/userinterface/guifactory/package-tree.html">it.polimi.is23am10.client.userinterface.guifactory</a>, </li>
    +<li><a href="it/polimi/is23am10/client/userinterface/guifactory/interfaces/package-tree.html">it.polimi.is23am10.client.userinterface.guifactory.interfaces</a>, </li>
    +<li><a href="it/polimi/is23am10/client/userinterface/helpers/package-tree.html">it.polimi.is23am10.client.userinterface.helpers</a>, </li>
    +<li><a href="it/polimi/is23am10/server/package-tree.html">it.polimi.is23am10.server</a>, </li>
    +<li><a href="it/polimi/is23am10/server/command/package-tree.html">it.polimi.is23am10.server.command</a>, </li>
    +<li><a href="it/polimi/is23am10/server/controller/package-tree.html">it.polimi.is23am10.server.controller</a>, </li>
    +<li><a href="it/polimi/is23am10/server/controller/exceptions/package-tree.html">it.polimi.is23am10.server.controller.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/controller/interfaces/package-tree.html">it.polimi.is23am10.server.controller.interfaces</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/factory/package-tree.html">it.polimi.is23am10.server.model.factory</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/factory/exceptions/package-tree.html">it.polimi.is23am10.server.model.factory.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/game/package-tree.html">it.polimi.is23am10.server.model.game</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/game/exceptions/package-tree.html">it.polimi.is23am10.server.model.game.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/items/board/package-tree.html">it.polimi.is23am10.server.model.items.board</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/items/board/exceptions/package-tree.html">it.polimi.is23am10.server.model.items.board.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/items/bookshelf/package-tree.html">it.polimi.is23am10.server.model.items.bookshelf</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-tree.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/items/card/package-tree.html">it.polimi.is23am10.server.model.items.card</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/items/card/exceptions/package-tree.html">it.polimi.is23am10.server.model.items.card.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/items/scoreblock/package-tree.html">it.polimi.is23am10.server.model.items.scoreblock</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-tree.html">it.polimi.is23am10.server.model.items.scoreblock.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/items/tile/package-tree.html">it.polimi.is23am10.server.model.items.tile</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/pattern/package-tree.html">it.polimi.is23am10.server.model.pattern</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/player/package-tree.html">it.polimi.is23am10.server.model.player</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/player/exceptions/package-tree.html">it.polimi.is23am10.server.model.player.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/score/package-tree.html">it.polimi.is23am10.server.model.score</a>, </li>
    +<li><a href="it/polimi/is23am10/server/model/score/exceptions/package-tree.html">it.polimi.is23am10.server.model.score.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/network/gamehandler/package-tree.html">it.polimi.is23am10.server.network.gamehandler</a>, </li>
    +<li><a href="it/polimi/is23am10/server/network/gamehandler/exceptions/package-tree.html">it.polimi.is23am10.server.network.gamehandler.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/network/messages/package-tree.html">it.polimi.is23am10.server.network.messages</a>, </li>
    +<li><a href="it/polimi/is23am10/server/network/playerconnector/package-tree.html">it.polimi.is23am10.server.network.playerconnector</a>, </li>
    +<li><a href="it/polimi/is23am10/server/network/playerconnector/exceptions/package-tree.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/server/network/playerconnector/interfaces/package-tree.html">it.polimi.is23am10.server.network.playerconnector.interfaces</a>, </li>
    +<li><a href="it/polimi/is23am10/server/network/virtualview/package-tree.html">it.polimi.is23am10.server.network.virtualview</a>, </li>
    +<li><a href="it/polimi/is23am10/utils/package-tree.html">it.polimi.is23am10.utils</a>, </li>
    +<li><a href="it/polimi/is23am10/utils/config/package-tree.html">it.polimi.is23am10.utils.config</a>, </li>
    +<li><a href="it/polimi/is23am10/utils/config/exceptions/package-tree.html">it.polimi.is23am10.utils.config.exceptions</a>, </li>
    +<li><a href="it/polimi/is23am10/utils/exceptions/package-tree.html">it.polimi.is23am10.utils.exceptions</a></li>
    +</ul>
    +</div>
    +<section class="hierarchy">
    +<h2 title="Class Hierarchy">Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.<a href="it/polimi/is23am10/server/model/items/card/AbstractCard.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a>&lt;R,<wbr>T&gt; (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.<a href="it/polimi/is23am10/server/model/items/card/PrivateCard.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.<a href="it/polimi/is23am10/server/model/items/card/SharedCard.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a></li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="it/polimi/is23am10/server/command/AbstractCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">AbstractCommand</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="it/polimi/is23am10/server/command/AddPlayerCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">AddPlayerCommand</a></li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="it/polimi/is23am10/server/command/GetAvailableGamesCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">GetAvailableGamesCommand</a></li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="it/polimi/is23am10/server/command/MoveTilesCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">MoveTilesCommand</a></li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="it/polimi/is23am10/server/command/SendChatMessageCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">SendChatMessageCommand</a></li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">SnoozeGameTimerCommand</a></li>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="it/polimi/is23am10/server/command/StartGameCommand.html" class="type-name-link" title="class in it.polimi.is23am10.server.command">StartGameCommand</a></li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="it/polimi/is23am10/server/network/messages/AbstractMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">AvailableGamesMessage</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="it/polimi/is23am10/server/network/messages/ChatMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="it/polimi/is23am10/server/network/messages/ErrorMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">ErrorMessage</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="it/polimi/is23am10/server/network/messages/GameMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">GameMessage</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="it/polimi/is23am10/server/network/messages/SnoozeACKMessage.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.messages">SnoozeACKMessage</a></li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.server.model.pattern.<a href="it/polimi/is23am10/server/model/pattern/AbstractPattern.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.pattern">AbstractPattern</a>&lt;T&gt;
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.pattern.<a href="it/polimi/is23am10/server/model/pattern/PrivatePattern.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;T&gt;</li>
    +<li class="circle">it.polimi.is23am10.server.model.pattern.<a href="it/polimi/is23am10/server/model/pattern/SharedPattern.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;T&gt;</li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.<a href="it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a> (implements it.polimi.is23am10.server.network.playerconnector.interfaces.<a href="it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.<a href="it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorRmi</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.<a href="it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector">PlayerConnectorSocket</a></li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="it/polimi/is23am10/client/userinterface/helpers/ANSICodes.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">ANSICodes</a></li>
    +<li class="circle">it.polimi.is23am10.<a href="it/polimi/is23am10/App.html" class="type-name-link" title="class in it.polimi.is23am10">App</a></li>
    +<li class="circle">it.polimi.is23am10.utils.config.<a href="it/polimi/is23am10/utils/config/AppConfig.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config">AppConfig</a></li>
    +<li class="circle">it.polimi.is23am10.utils.config.<a href="it/polimi/is23am10/utils/config/AppConfigContext.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config">AppConfigContext</a></li>
    +<li class="circle">javafx.application.Application
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.userinterface.<a href="it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface">GraphicUserInterface</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>, it.polimi.is23am10.client.userinterface.<a href="it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a>)</li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/ArgParser.html" class="type-name-link" title="class in it.polimi.is23am10.utils">ArgParser</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.board.<a href="it/polimi/is23am10/server/model/items/board/Board.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board">Board</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.<a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.<a href="it/polimi/is23am10/client/userinterface/guifactory/CallBack.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.guifactory">CallBack</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="it/polimi/is23am10/server/controller/ClientConnectionChecker.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ClientConnectionChecker</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>)</li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="it/polimi/is23am10/client/userinterface/helpers/CLIStrings.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">CLIStrings</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.<a href="it/polimi/is23am10/client/userinterface/CommandLineInterface.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface">CommandLineInterface</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>, it.polimi.is23am10.client.userinterface.<a href="it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a>)</li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">CommandsBuilder</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/CommandSyntaxValidator.html" class="type-name-link" title="class in it.polimi.is23am10.utils">CommandSyntaxValidator</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/Coordinates.html" class="type-name-link" title="class in it.polimi.is23am10.utils">Coordinates</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.network.gamehandler.<a href="it/polimi/is23am10/server/network/gamehandler/CurrentPlayerHandler.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler">CurrentPlayerHandler</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/ErrorTypeString.html" class="type-name-link" title="class in it.polimi.is23am10.utils">ErrorTypeString</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.<a href="it/polimi/is23am10/server/model/game/Game.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game">Game</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.model.factory.<a href="it/polimi/is23am10/server/model/factory/GameFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">GameFactory</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.gamehandler.<a href="it/polimi/is23am10/server/network/gamehandler/GameHandler.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler">GameHandler</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.<a href="it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.<a href="it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.GameSnapshotFactory.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.GameSnapshotFactory</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/IndexValidator.html" class="type-name-link" title="class in it.polimi.is23am10.utils">IndexValidator</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/MoveCommandHelper.html" class="type-name-link" title="class in it.polimi.is23am10.utils">MoveCommandHelper</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/MovesValidator.html" class="type-name-link" title="class in it.polimi.is23am10.utils">MovesValidator</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/MoveTileCommandTypeAdaptor.html" class="type-name-link" title="class in it.polimi.is23am10.utils">MoveTileCommandTypeAdaptor</a> (implements com.google.gson.JsonDeserializer&lt;T&gt;, com.google.gson.JsonSerializer&lt;T&gt;)</li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.model.player.<a href="it/polimi/is23am10/server/model/player/Player.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player">Player</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.model.factory.<a href="it/polimi/is23am10/server/model/factory/PlayerFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">PlayerFactory</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.factory.<a href="it/polimi/is23am10/server/model/factory/PrivatePatternFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">PrivatePatternFactory</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="it/polimi/is23am10/client/userinterface/helpers/PrivatePatternsHelper.html" class="type-name-link" title="class in it.polimi.is23am10.client.userinterface.helpers">PrivatePatternsHelper</a></li>
    +<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteObject.html" class="type-name-link external-link" title="class or interface in java.rmi.server">RemoteObject</a> (implements java.rmi.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" title="class or interface in java.rmi" class="external-link">Remote</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/RemoteServer.html" class="type-name-link external-link" title="class or interface in java.rmi.server">RemoteServer</a>
    +<ul>
    +<li class="circle">java.rmi.server.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" class="type-name-link external-link" title="class or interface in java.rmi.server">UnicastRemoteObject</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.<a href="it/polimi/is23am10/client/Client.html" class="type-name-link" title="class in it.polimi.is23am10.client">Client</a> (implements it.polimi.is23am10.client.<a href="it/polimi/is23am10/client/IClient.html" title="interface in it.polimi.is23am10.client">IClient</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.<a href="it/polimi/is23am10/client/RMIClient.html" class="type-name-link" title="class in it.polimi.is23am10.client">RMIClient</a></li>
    +<li class="circle">it.polimi.is23am10.client.<a href="it/polimi/is23am10/client/SocketClient.html" class="type-name-link" title="class in it.polimi.is23am10.client">SocketClient</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.server.model.score.<a href="it/polimi/is23am10/server/model/score/Score.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.score">Score</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.model.items.scoreblock.<a href="it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.<a href="it/polimi/is23am10/server/Server.html" class="type-name-link" title="class in it.polimi.is23am10.server">Server</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="it/polimi/is23am10/server/controller/ServerControllerAction.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerAction</a> (implements it.polimi.is23am10.server.controller.interfaces.<a href="it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="it/polimi/is23am10/server/controller/ServerControllerRmiBindings.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerRmiBindings</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="it/polimi/is23am10/server/controller/ServerControllerSocket.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerSocket</a> (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Runnable.html" title="class or interface in java.lang" class="external-link">Runnable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="it/polimi/is23am10/server/controller/ServerControllerState.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerControllerState</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.<a href="it/polimi/is23am10/server/controller/ServerDebugPrefixString.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller">ServerDebugPrefixString</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.factory.<a href="it/polimi/is23am10/server/model/factory/SharedPatternFactory.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory">SharedPatternFactory</a></li>
    +<li class="circle">it.polimi.is23am10.utils.<a href="it/polimi/is23am10/utils/ThreadLocalTypeAdapterFactory.html" class="type-name-link" title="class in it.polimi.is23am10.utils">ThreadLocalTypeAdapterFactory</a> (implements com.google.gson.TypeAdapterFactory)</li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Throwable.html" class="type-name-link external-link" title="class or interface in java.lang">Throwable</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" class="type-name-link external-link" title="class or interface in java.lang">Exception</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.exceptions.<a href="it/polimi/is23am10/server/model/items/card/exceptions/AlreadyInitiatedPatternException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">AlreadyInitiatedPatternException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.board.exceptions.<a href="it/polimi/is23am10/server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridColIndexOutOfBoundsException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridColIndexOutOfBoundsException</a></li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.server.model.factory.exceptions.<a href="it/polimi/is23am10/server/model/factory/exceptions/DuplicatePlayerNameException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory.exceptions">DuplicatePlayerNameException</a></li>
    +<li class="circle">it.polimi.is23am10.client.exceptions.<a href="it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.html" class="type-name-link" title="class in it.polimi.is23am10.client.exceptions">ForceCloseApplicationException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="it/polimi/is23am10/server/model/game/exceptions/FullGameException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">FullGameException</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.gamehandler.exceptions.<a href="it/polimi/is23am10/server/network/gamehandler/exceptions/GameSnapshotUpdateException.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">GameSnapshotUpdateException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="it/polimi/is23am10/utils/exceptions/InvalidArgumentException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">InvalidArgumentException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="it/polimi/is23am10/server/model/game/exceptions/InvalidBoardTileSelectionException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidBoardTileSelectionException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.config.exceptions.<a href="it/polimi/is23am10/utils/config/exceptions/InvalidMaxConnectionsNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidMaxConnectionsNumberException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="it/polimi/is23am10/server/model/game/exceptions/InvalidMaxPlayerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidMaxPlayerException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.board.exceptions.<a href="it/polimi/is23am10/server/model/items/board/exceptions/InvalidNumOfPlayersException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">InvalidNumOfPlayersException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="it/polimi/is23am10/server/model/game/exceptions/InvalidPlayersNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">InvalidPlayersNumberException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.config.exceptions.<a href="it/polimi/is23am10/utils/config/exceptions/InvalidPortNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.config.exceptions">InvalidPortNumberException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="it/polimi/is23am10/utils/exceptions/MissingParameterException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">MissingParameterException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.exceptions.<a href="it/polimi/is23am10/server/model/items/card/exceptions/NegativeMatchedBlockCountException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NegativeMatchedBlockCountException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.scoreblock.exceptions.<a href="it/polimi/is23am10/server/model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">NotValidScoreBlockValueException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="it/polimi/is23am10/server/model/game/exceptions/NullAssignedPatternException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">NullAssignedPatternException</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.exceptions.<a href="it/polimi/is23am10/server/network/playerconnector/exceptions/NullBlockingQueueException.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullBlockingQueueException</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.exceptions.<a href="it/polimi/is23am10/server/controller/exceptions/NullGameHandlerInstance.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">NullGameHandlerInstance</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="it/polimi/is23am10/utils/exceptions/NullIndexValueException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">NullIndexValueException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.exceptions.<a href="it/polimi/is23am10/server/model/items/card/exceptions/NullMatchedBlockCountException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullMatchedBlockCountException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="it/polimi/is23am10/server/model/game/exceptions/NullMaxPlayerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">NullMaxPlayerException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.board.exceptions.<a href="it/polimi/is23am10/server/model/items/board/exceptions/NullNumOfPlayersException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">NullNumOfPlayersException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerBookshelfException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerBookshelfException</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.gamehandler.exceptions.<a href="it/polimi/is23am10/server/network/gamehandler/exceptions/NullPlayerConnector.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">NullPlayerConnector</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="it/polimi/is23am10/server/model/game/exceptions/NullPlayerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">NullPlayerException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerIdException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerIdException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerNameException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerNameException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.factory.exceptions.<a href="it/polimi/is23am10/server/model/factory/exceptions/NullPlayerNamesException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.factory.exceptions">NullPlayerNamesException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerPrivateCardException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerPrivateCardException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreBlocksException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreBlocksException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.player.exceptions.<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.player.exceptions">NullPlayerScoreException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.score.exceptions.<a href="it/polimi/is23am10/server/model/score/exceptions/NullPointsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.score.exceptions">NullPointsException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.card.exceptions.<a href="it/polimi/is23am10/server/model/items/card/exceptions/NullScoreBlockListException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.card.exceptions">NullScoreBlockListException</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.exceptions.<a href="it/polimi/is23am10/server/network/playerconnector/exceptions/NullSocketConnectorException.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">NullSocketConnectorException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/NullTileException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">NullTileException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.exceptions.<a href="it/polimi/is23am10/server/model/game/exceptions/PlayerNotFoundException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.game.exceptions">PlayerNotFoundException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.model.items.board.exceptions.<a href="it/polimi/is23am10/server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.board.exceptions">BoardGridRowIndexOutOfBoundsException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">BookshelfGridRowIndexOutOfBoundsException</a></li>
    +</ul>
    +</li>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" class="type-name-link external-link" title="class or interface in java.lang">RuntimeException</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.controller.exceptions.<a href="it/polimi/is23am10/server/controller/exceptions/CommandSerializationErrorException.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">CommandSerializationErrorException</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.exceptions.<a href="it/polimi/is23am10/server/controller/exceptions/NullRmiServerException.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiServerException</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.exceptions.<a href="it/polimi/is23am10/server/controller/exceptions/NullRmiStubException.html" class="type-name-link" title="class in it.polimi.is23am10.server.controller.exceptions">NullRmiStubException</a></li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="it/polimi/is23am10/utils/exceptions/WrongBookShelfPicksException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">WrongBookShelfPicksException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongCharBookshelfStringException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongCharBookshelfStringException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="it/polimi/is23am10/utils/exceptions/WrongGameBoardPicksException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">WrongGameBoardPicksException</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.bookshelf.exceptions.<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongLengthBookshelfStringException.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">WrongLengthBookshelfStringException</a></li>
    +<li class="circle">it.polimi.is23am10.utils.exceptions.<a href="it/polimi/is23am10/utils/exceptions/WrongMovesNumberException.html" class="type-name-link" title="class in it.polimi.is23am10.utils.exceptions">WrongMovesNumberException</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.server.model.items.tile.<a href="it/polimi/is23am10/server/model/items/tile/Tile.html" class="type-name-link" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.network.virtualview.<a href="it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +<li class="circle">it.polimi.is23am10.server.network.virtualview.<a href="it/polimi/is23am10/server/network/virtualview/VirtualView.html" class="type-name-link" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a> (implements java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Interface Hierarchy">Interface Hierarchy</h2>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.interfaces.<a href="it/polimi/is23am10/client/interfaces/AlarmConsumer.html" class="type-name-link" title="interface in it.polimi.is23am10.client.interfaces">AlarmConsumer</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.interfaces.<a href="it/polimi/is23am10/client/userinterface/guifactory/interfaces/BookShelfSelectionCallBack.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">BookShelfSelectionCallBack</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.interfaces.<a href="it/polimi/is23am10/client/userinterface/guifactory/interfaces/ButtonCallBack.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">ButtonCallBack</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.interfaces.<a href="it/polimi/is23am10/server/controller/interfaces/ControllerConsumer.html" class="type-name-link" title="interface in it.polimi.is23am10.server.controller.interfaces">ControllerConsumer</a>&lt;R,<wbr>C&gt;</li>
    +<li class="circle">java.rmi.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/Remote.html" class="type-name-link external-link" title="class or interface in java.rmi">Remote</a>
    +<ul>
    +<li class="circle">it.polimi.is23am10.client.<a href="it/polimi/is23am10/client/IClient.html" class="type-name-link" title="interface in it.polimi.is23am10.client">IClient</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.playerconnector.interfaces.<a href="it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.html" class="type-name-link" title="interface in it.polimi.is23am10.server.network.playerconnector.interfaces">IPlayerConnector</a></li>
    +<li class="circle">it.polimi.is23am10.server.controller.interfaces.<a href="it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.html" class="type-name-link" title="interface in it.polimi.is23am10.server.controller.interfaces">IServerControllerAction</a></li>
    +</ul>
    +</li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.interfaces.<a href="it/polimi/is23am10/client/userinterface/guifactory/interfaces/TextFieldCallBack.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface.guifactory.interfaces">TextFieldCallBack</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.<a href="it/polimi/is23am10/client/userinterface/UserInterface.html" class="type-name-link" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a></li>
    +</ul>
    +</section>
    +<section class="hierarchy">
    +<h2 title="Enum Class Hierarchy">Enum Class Hierarchy</h2>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" class="type-name-link external-link" title="class or interface in java.lang">Object</a>
    +<ul>
    +<li class="circle">java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Enum.html" class="type-name-link external-link" title="class or interface in java.lang">Enum</a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Comparable.html" title="class or interface in java.lang" class="external-link">Comparable</a>&lt;T&gt;, java.lang.constant.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/constant/Constable.html" title="class or interface in java.lang.constant" class="external-link">Constable</a>, java.io.<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a>)
    +<ul>
    +<li class="circle">it.polimi.is23am10.server.command.<a href="it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a></li>
    +<li class="circle">it.polimi.is23am10.client.<a href="it/polimi/is23am10/client/Client.ClientGameStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a></li>
    +<li class="circle">it.polimi.is23am10.server.network.messages.<a href="it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.game.<a href="it/polimi/is23am10/server/model/game/Game.GameStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.guifactory.<a href="it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.SCENE.html" class="type-name-link" title="enum class in it.polimi.is23am10.client.userinterface.guifactory">GuiFactory.SCENE</a></li>
    +<li class="circle">it.polimi.is23am10.client.userinterface.helpers.<a href="it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" class="type-name-link" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a></li>
    +<li class="circle">it.polimi.is23am10.server.<a href="it/polimi/is23am10/server/Server.ServerStatus.html" class="type-name-link" title="enum class in it.polimi.is23am10.server">Server.ServerStatus</a></li>
    +<li class="circle">it.polimi.is23am10.server.model.items.tile.<a href="it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" class="type-name-link" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a></li>
    +</ul>
    +</li>
    +</ul>
    +</li>
    +</ul>
    +</section>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/package-search-index.js b/deliverables/javadoc/package-search-index.js
    new file mode 100644
    index 00000000..46958202
    --- /dev/null
    +++ b/deliverables/javadoc/package-search-index.js
    @@ -0,0 +1 @@
    +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"it.polimi.is23am10"},{"l":"it.polimi.is23am10.client"},{"l":"it.polimi.is23am10.client.exceptions"},{"l":"it.polimi.is23am10.client.interfaces"},{"l":"it.polimi.is23am10.client.userinterface"},{"l":"it.polimi.is23am10.client.userinterface.guifactory"},{"l":"it.polimi.is23am10.client.userinterface.guifactory.interfaces"},{"l":"it.polimi.is23am10.client.userinterface.helpers"},{"l":"it.polimi.is23am10.server"},{"l":"it.polimi.is23am10.server.command"},{"l":"it.polimi.is23am10.server.controller"},{"l":"it.polimi.is23am10.server.controller.exceptions"},{"l":"it.polimi.is23am10.server.controller.interfaces"},{"l":"it.polimi.is23am10.server.model.factory"},{"l":"it.polimi.is23am10.server.model.factory.exceptions"},{"l":"it.polimi.is23am10.server.model.game"},{"l":"it.polimi.is23am10.server.model.game.exceptions"},{"l":"it.polimi.is23am10.server.model.items.board"},{"l":"it.polimi.is23am10.server.model.items.board.exceptions"},{"l":"it.polimi.is23am10.server.model.items.bookshelf"},{"l":"it.polimi.is23am10.server.model.items.bookshelf.exceptions"},{"l":"it.polimi.is23am10.server.model.items.card"},{"l":"it.polimi.is23am10.server.model.items.card.exceptions"},{"l":"it.polimi.is23am10.server.model.items.scoreblock"},{"l":"it.polimi.is23am10.server.model.items.scoreblock.exceptions"},{"l":"it.polimi.is23am10.server.model.items.tile"},{"l":"it.polimi.is23am10.server.model.pattern"},{"l":"it.polimi.is23am10.server.model.player"},{"l":"it.polimi.is23am10.server.model.player.exceptions"},{"l":"it.polimi.is23am10.server.model.score"},{"l":"it.polimi.is23am10.server.model.score.exceptions"},{"l":"it.polimi.is23am10.server.network.gamehandler"},{"l":"it.polimi.is23am10.server.network.gamehandler.exceptions"},{"l":"it.polimi.is23am10.server.network.messages"},{"l":"it.polimi.is23am10.server.network.playerconnector"},{"l":"it.polimi.is23am10.server.network.playerconnector.exceptions"},{"l":"it.polimi.is23am10.server.network.playerconnector.interfaces"},{"l":"it.polimi.is23am10.server.network.virtualview"},{"l":"it.polimi.is23am10.utils"},{"l":"it.polimi.is23am10.utils.config"},{"l":"it.polimi.is23am10.utils.config.exceptions"},{"l":"it.polimi.is23am10.utils.exceptions"}];updateSearchResults();
    \ No newline at end of file
    diff --git a/deliverables/javadoc/resources/glass.png b/deliverables/javadoc/resources/glass.png
    new file mode 100644
    index 00000000..a7f591f4
    Binary files /dev/null and b/deliverables/javadoc/resources/glass.png differ
    diff --git a/deliverables/javadoc/resources/x.png b/deliverables/javadoc/resources/x.png
    new file mode 100644
    index 00000000..30548a75
    Binary files /dev/null and b/deliverables/javadoc/resources/x.png differ
    diff --git a/deliverables/javadoc/script-dir/jquery-3.6.0.min.js b/deliverables/javadoc/script-dir/jquery-3.6.0.min.js
    new file mode 100644
    index 00000000..c4c6022f
    --- /dev/null
    +++ b/deliverables/javadoc/script-dir/jquery-3.6.0.min.js
    @@ -0,0 +1,2 @@
    +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */
    +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}S.fn=S.prototype={jquery:f,constructor:S,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=S.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return S.each(this,e)},map:function(n){return this.pushStack(S.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},even:function(){return this.pushStack(S.grep(this,function(e,t){return(t+1)%2}))},odd:function(){return this.pushStack(S.grep(this,function(e,t){return t%2}))},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},S.extend=S.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(S.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||S.isPlainObject(n)?n:{},i=!1,a[t]=S.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},S.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t,n){b(e,{nonce:t&&t.nonce},n)},each:function(e,t){var n,r=0;if(p(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},makeArray:function(e,t){var n=t||[];return null!=e&&(p(Object(e))?S.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(p(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g(a)},guid:1,support:y}),"function"==typeof Symbol&&(S.fn[Symbol.iterator]=t[Symbol.iterator]),S.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var d=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,S="sizzle"+1*new Date,p=n.document,k=0,r=0,m=ue(),x=ue(),A=ue(),N=ue(),j=function(e,t){return e===t&&(l=!0),0},D={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",F=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",B=new RegExp(M+"+","g"),$=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="<a id='"+S+"'></a><select id='"+S+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!=C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!=C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&D.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(j),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(B," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[k,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===k&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[S]||(a[S]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[k,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[S]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace($,"$1"));return s[S]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[k,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[S]||(e[S]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===k&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[S]&&(v=Ce(v)),y&&!y[S]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[S]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace($,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace($," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=A[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[S]?i.push(a):o.push(a);(a=A(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=k+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t==C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument==C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(k=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(k=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=S.split("").sort(j).join("")===S,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);S.find=d,S.expr=d.selectors,S.expr[":"]=S.expr.pseudos,S.uniqueSort=S.unique=d.uniqueSort,S.text=d.getText,S.isXMLDoc=d.isXML,S.contains=d.contains,S.escapeSelector=d.escape;var h=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&S(e).is(n))break;r.push(e)}return r},T=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},k=S.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var N=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1<i.call(n,e)!==r}):S.filter(n,e,r)}S.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?S.find.matchesSelector(r,e)?[r]:[]:S.find.matches(e,S.grep(t,function(e){return 1===e.nodeType}))},S.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(S(e).filter(function(){for(t=0;t<r;t++)if(S.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)S.find(e,i[t],n);return 1<r?S.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&k.test(e)?S(e):e||[],!1).length}});var D,q=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(S.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&S(e);if(!k.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&S.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?S.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(S(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(S.uniqueSort(S.merge(this.get(),S(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),S.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return h(e,"parentNode")},parentsUntil:function(e,t,n){return h(e,"parentNode",n)},next:function(e){return O(e,"nextSibling")},prev:function(e){return O(e,"previousSibling")},nextAll:function(e){return h(e,"nextSibling")},prevAll:function(e){return h(e,"previousSibling")},nextUntil:function(e,t,n){return h(e,"nextSibling",n)},prevUntil:function(e,t,n){return h(e,"previousSibling",n)},siblings:function(e){return T((e.parentNode||{}).firstChild,e)},children:function(e){return T(e.firstChild)},contents:function(e){return null!=e.contentDocument&&r(e.contentDocument)?e.contentDocument:(A(e,"template")&&(e=e.content||e),S.merge([],e.childNodes))}},function(r,i){S.fn[r]=function(e,t){var n=S.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=S.filter(t,n)),1<this.length&&(H[r]||S.uniqueSort(n),L.test(r)&&n.reverse()),this.pushStack(n)}});var P=/[^\x20\t\r\n\f]+/g;function R(e){return e}function M(e){throw e}function I(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}S.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},S.each(e.match(P)||[],function(e,t){n[t]=!0}),n):S.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){S.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return S.each(arguments,function(e,t){var n;while(-1<(n=S.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<S.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},S.extend({Deferred:function(e){var o=[["notify","progress",S.Callbacks("memory"),S.Callbacks("memory"),2],["resolve","done",S.Callbacks("once memory"),S.Callbacks("once memory"),0,"resolved"],["reject","fail",S.Callbacks("once memory"),S.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return S.Deferred(function(r){S.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,R,s),l(u,o,M,s)):(u++,t.call(e,l(u,o,R,s),l(u,o,M,s),l(u,o,R,o.notifyWith))):(a!==R&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){S.Deferred.exceptionHook&&S.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==M&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(S.Deferred.getStackHook&&(t.stackTrace=S.Deferred.getStackHook()),C.setTimeout(t))}}return S.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:R,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:R)),o[2][3].add(l(0,e,m(n)?n:M))}).promise()},promise:function(e){return null!=e?S.extend(e,a):a}},s={};return S.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=S.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(I(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)I(i[t],a(t),o.reject);return o.promise()}});var W=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;S.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&W.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},S.readyException=function(e){C.setTimeout(function(){throw e})};var F=S.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),S.ready()}S.fn.ready=function(e){return F.then(e)["catch"](function(e){S.readyException(e)}),this},S.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--S.readyWait:S.isReady)||(S.isReady=!0)!==e&&0<--S.readyWait||F.resolveWith(E,[S])}}),S.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(S.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var $=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)$(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(S(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},_=/^-ms-/,z=/-([a-z])/g;function U(e,t){return t.toUpperCase()}function X(e){return e.replace(_,"ms-").replace(z,U)}var V=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function G(){this.expando=S.expando+G.uid++}G.uid=1,G.prototype={cache:function(e){var t=e[this.expando];return t||(t={},V(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[X(t)]=n;else for(r in t)i[X(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][X(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(X):(t=X(t))in r?[t]:t.match(P)||[]).length;while(n--)delete r[t[n]]}(void 0===t||S.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!S.isEmptyObject(t)}};var Y=new G,Q=new G,J=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,K=/[A-Z]/g;function Z(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(K,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:J.test(i)?JSON.parse(i):i)}catch(e){}Q.set(e,t,n)}else n=void 0;return n}S.extend({hasData:function(e){return Q.hasData(e)||Y.hasData(e)},data:function(e,t,n){return Q.access(e,t,n)},removeData:function(e,t){Q.remove(e,t)},_data:function(e,t,n){return Y.access(e,t,n)},_removeData:function(e,t){Y.remove(e,t)}}),S.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=Q.get(o),1===o.nodeType&&!Y.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=X(r.slice(5)),Z(o,r,i[r]));Y.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){Q.set(this,n)}):$(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=Q.get(o,n))?t:void 0!==(t=Z(o,n))?t:void 0;this.each(function(){Q.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){Q.remove(this,e)})}}),S.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Y.get(e,t),n&&(!r||Array.isArray(n)?r=Y.access(e,t,S.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=S.queue(e,t),r=n.length,i=n.shift(),o=S._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){S.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Y.get(e,n)||Y.access(e,n,{empty:S.Callbacks("once memory").add(function(){Y.remove(e,[t+"queue",n])})})}}),S.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?S.queue(this[0],t):void 0===n?this:this.each(function(){var e=S.queue(this,t,n);S._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&S.dequeue(this,t)})},dequeue:function(e){return this.each(function(){S.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=S.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Y.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var ee=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,te=new RegExp("^(?:([+-])=|)("+ee+")([a-z%]*)$","i"),ne=["Top","Right","Bottom","Left"],re=E.documentElement,ie=function(e){return S.contains(e.ownerDocument,e)},oe={composed:!0};re.getRootNode&&(ie=function(e){return S.contains(e.ownerDocument,e)||e.getRootNode(oe)===e.ownerDocument});var ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&ie(e)&&"none"===S.css(e,"display")};function se(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return S.css(e,t,"")},u=s(),l=n&&n[3]||(S.cssNumber[t]?"":"px"),c=e.nodeType&&(S.cssNumber[t]||"px"!==l&&+u)&&te.exec(S.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)S.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,S.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ue={};function le(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Y.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&ae(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ue[s])||(o=a.body.appendChild(a.createElement(s)),u=S.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ue[s]=u)))):"none"!==n&&(l[c]="none",Y.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}S.fn.extend({show:function(){return le(this,!0)},hide:function(){return le(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?S(this).show():S(this).hide()})}});var ce,fe,pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="<option></option>",y.option=!!ce.lastChild;var ge={thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Y.set(e[n],"globalEval",!t||Y.get(t[n],"globalEval"))}ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td,y.option||(ge.optgroup=ge.option=[1,"<select multiple='multiple'>","</select>"]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))S.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+S.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;S.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<S.inArray(o,r))i&&i.push(o);else if(l=ie(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}var be=/^([^.]*)(?:\.(.+)|)/;function we(){return!0}function Te(){return!1}function Ce(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ee(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ee(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Te;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return S().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=S.guid++)),e.each(function(){S.event.add(this,t,i,r,n)})}function Se(e,i,o){o?(Y.set(e,i,!1),S.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Y.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(S.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Y.set(this,i,r),t=o(this,i),this[i](),r!==(n=Y.get(this,i))||t?Y.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n&&n.value}else r.length&&(Y.set(this,i,{value:S.event.trigger(S.extend(r[0],S.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Y.get(e,i)&&S.event.add(e,i,we)}S.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.get(t);if(V(t)){n.handler&&(n=(o=n).handler,i=o.selector),i&&S.find.matchesSelector(re,i),n.guid||(n.guid=S.guid++),(u=v.events)||(u=v.events=Object.create(null)),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof S&&S.event.triggered!==e.type?S.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(P)||[""]).length;while(l--)d=g=(s=be.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=S.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=S.event.special[d]||{},c=S.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&S.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),S.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Y.hasData(e)&&Y.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(P)||[""]).length;while(l--)if(d=g=(s=be.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=S.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||S.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)S.event.remove(e,d+t[l],n,r,!0);S.isEmptyObject(u)&&Y.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=new Array(arguments.length),u=S.event.fix(e),l=(Y.get(this,"events")||Object.create(null))[u.type]||[],c=S.event.special[u.type]||{};for(s[0]=u,t=1;t<arguments.length;t++)s[t]=arguments[t];if(u.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,u)){a=S.event.handlers.call(this,u,l),t=0;while((i=a[t++])&&!u.isPropagationStopped()){u.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!u.isImmediatePropagationStopped())u.rnamespace&&!1!==o.namespace&&!u.rnamespace.test(o.namespace)||(u.handleObj=o,u.data=o.data,void 0!==(r=((S.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s))&&!1===(u.result=r)&&(u.preventDefault(),u.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,u),u.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<S(i,this).index(l):S.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(S.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[S.expando]?e:new S.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click",we),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&Se(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Y.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},S.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},S.Event=function(e,t){if(!(this instanceof S.Event))return new S.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?we:Te,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&S.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[S.expando]=!0},S.Event.prototype={constructor:S.Event,isDefaultPrevented:Te,isPropagationStopped:Te,isImmediatePropagationStopped:Te,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=we,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=we,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=we,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},S.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:!0},S.event.addProp),S.each({focus:"focusin",blur:"focusout"},function(e,t){S.event.special[e]={setup:function(){return Se(this,e,Ce),!1},trigger:function(){return Se(this,e),!0},_default:function(){return!0},delegateType:t}}),S.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){S.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||S.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),S.fn.extend({on:function(e,t,n,r){return Ee(this,e,t,n,r)},one:function(e,t,n,r){return Ee(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,S(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Te),this.each(function(){S.event.remove(this,e,n,t)})}});var ke=/<script|<style|<link/i,Ae=/checked\s*(?:[^=]|=\s*.checked.)/i,Ne=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n<r;n++)S.event.add(t,i,s[i][n]);Q.hasData(e)&&(o=Q.access(e),a=S.extend({},o),Q.set(t,a))}}function He(n,r,i,o){r=g(r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Ae.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),He(t,r,i,o)});if(f&&(t=(e=xe(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=S.map(ve(e,"script"),De)).length;c<f;c++)u=e,c!==p&&(u=S.clone(u,!0,!0),s&&S.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,S.map(a,qe),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Y.access(u,"globalEval")&&S.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?S._evalUrl&&!u.noModule&&S._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")},l):b(u.textContent.replace(Ne,""),u,l))}return n}function Oe(e,t,n){for(var r,i=t?S.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||S.cleanData(ve(r)),r.parentNode&&(n&&ie(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}S.extend({htmlPrefilter:function(e){return e},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=ie(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||S.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Le(o[r],a[r]);else Le(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=S.event.special,o=0;void 0!==(n=e[o]);o++)if(V(n)){if(t=n[Y.expando]){if(t.events)for(r in t.events)i[r]?S.event.remove(n,r):S.removeEvent(n,r,t.handle);n[Y.expando]=void 0}n[Q.expando]&&(n[Q.expando]=void 0)}}}),S.fn.extend({detach:function(e){return Oe(this,e,!0)},remove:function(e){return Oe(this,e)},text:function(e){return $(this,function(e){return void 0===e?S.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return He(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||je(this,e).appendChild(e)})},prepend:function(){return He(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=je(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return He(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(S.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return S.clone(this,e,t)})},html:function(e){return $(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!ke.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=S.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(S.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return He(this,arguments,function(e){var t=this.parentNode;S.inArray(this,n)<0&&(S.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),S.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){S.fn[e]=function(e){for(var t,n=[],r=S(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),S(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var Pe=new RegExp("^("+ee+")(?!px)[a-z%]+$","i"),Re=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Me=function(e,t,n){var r,i,o={};for(i in t)o[i]=e.style[i],e.style[i]=t[i];for(i in r=n.call(e),t)e.style[i]=o[i];return r},Ie=new RegExp(ne.join("|"),"i");function We(e,t,n){var r,i,o,a,s=e.style;return(n=n||Re(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||ie(e)||(a=S.style(e,t)),!y.pixelBoxStyles()&&Pe.test(a)&&Ie.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function Fe(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(l){u.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",l.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",re.appendChild(u).appendChild(l);var e=C.getComputedStyle(l);n="1%"!==e.top,s=12===t(e.marginLeft),l.style.right="60%",o=36===t(e.right),r=36===t(e.width),l.style.position="absolute",i=12===t(l.offsetWidth/3),re.removeChild(u),l=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s,u=E.createElement("div"),l=E.createElement("div");l.style&&(l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===l.style.backgroundClip,S.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),s},scrollboxSize:function(){return e(),i},reliableTrDimensions:function(){var e,t,n,r;return null==a&&(e=E.createElement("table"),t=E.createElement("tr"),n=E.createElement("div"),e.style.cssText="position:absolute;left:-11111px;border-collapse:separate",t.style.cssText="border:1px solid",t.style.height="1px",n.style.height="9px",n.style.display="block",re.appendChild(e).appendChild(t).appendChild(n),r=C.getComputedStyle(t),a=parseInt(r.height,10)+parseInt(r.borderTopWidth,10)+parseInt(r.borderBottomWidth,10)===t.offsetHeight,re.removeChild(e)),a}}))}();var Be=["Webkit","Moz","ms"],$e=E.createElement("div").style,_e={};function ze(e){var t=S.cssProps[e]||_e[e];return t||(e in $e?e:_e[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Be.length;while(n--)if((e=Be[n]+t)in $e)return e}(e)||e)}var Ue=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ve={position:"absolute",visibility:"hidden",display:"block"},Ge={letterSpacing:"0",fontWeight:"400"};function Ye(e,t,n){var r=te.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Qe(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=S.css(e,n+ne[a],!0,i)),r?("content"===n&&(u-=S.css(e,"padding"+ne[a],!0,i)),"margin"!==n&&(u-=S.css(e,"border"+ne[a]+"Width",!0,i))):(u+=S.css(e,"padding"+ne[a],!0,i),"padding"!==n?u+=S.css(e,"border"+ne[a]+"Width",!0,i):s+=S.css(e,"border"+ne[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function Je(e,t,n){var r=Re(e),i=(!y.boxSizingReliable()||n)&&"border-box"===S.css(e,"boxSizing",!1,r),o=i,a=We(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if(Pe.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||!y.reliableTrDimensions()&&A(e,"tr")||"auto"===a||!parseFloat(a)&&"inline"===S.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===S.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+Qe(e,t,n||(i?"border":"content"),o,r,a)+"px"}function Ke(e,t,n,r,i){return new Ke.prototype.init(e,t,n,r,i)}S.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=We(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=X(t),u=Xe.test(t),l=e.style;if(u||(t=ze(s)),a=S.cssHooks[t]||S.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=te.exec(n))&&i[1]&&(n=se(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(S.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=X(t);return Xe.test(t)||(t=ze(s)),(a=S.cssHooks[t]||S.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=We(e,t,r)),"normal"===i&&t in Ge&&(i=Ge[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),S.each(["height","width"],function(e,u){S.cssHooks[u]={get:function(e,t,n){if(t)return!Ue.test(S.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?Je(e,u,n):Me(e,Ve,function(){return Je(e,u,n)})},set:function(e,t,n){var r,i=Re(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===S.css(e,"boxSizing",!1,i),s=n?Qe(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-Qe(e,u,"border",!1,i)-.5)),s&&(r=te.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=S.css(e,u)),Ye(0,t,s)}}}),S.cssHooks.marginLeft=Fe(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(We(e,"marginLeft"))||e.getBoundingClientRect().left-Me(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),S.each({margin:"",padding:"",border:"Width"},function(i,o){S.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+ne[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(S.cssHooks[i+o].set=Ye)}),S.fn.extend({css:function(e,t){return $(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Re(e),i=t.length;a<i;a++)o[t[a]]=S.css(e,t[a],!1,r);return o}return void 0!==n?S.style(e,t,n):S.css(e,t)},e,t,1<arguments.length)}}),((S.Tween=Ke).prototype={constructor:Ke,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||S.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(S.cssNumber[n]?"":"px")},cur:function(){var e=Ke.propHooks[this.prop];return e&&e.get?e.get(this):Ke.propHooks._default.get(this)},run:function(e){var t,n=Ke.propHooks[this.prop];return this.options.duration?this.pos=t=S.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ke.propHooks._default.set(this),this}}).init.prototype=Ke.prototype,(Ke.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=S.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){S.fx.step[e.prop]?S.fx.step[e.prop](e):1!==e.elem.nodeType||!S.cssHooks[e.prop]&&null==e.elem.style[ze(e.prop)]?e.elem[e.prop]=e.now:S.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=Ke.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},S.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},S.fx=Ke.prototype.init,S.fx.step={};var Ze,et,tt,nt,rt=/^(?:toggle|show|hide)$/,it=/queueHooks$/;function ot(){et&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(ot):C.setTimeout(ot,S.fx.interval),S.fx.tick())}function at(){return C.setTimeout(function(){Ze=void 0}),Ze=Date.now()}function st(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=ne[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function ut(e,t,n){for(var r,i=(lt.tweeners[t]||[]).concat(lt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function lt(o,e,t){var n,a,r=0,i=lt.prefilters.length,s=S.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=Ze||at(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:S.extend({},e),opts:S.extend(!0,{specialEasing:{},easing:S.easing._default},t),originalProperties:e,originalOptions:t,startTime:Ze||at(),duration:t.duration,tweens:[],createTween:function(e,t){var n=S.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=X(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=S.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=lt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(S._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return S.map(c,ut,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),S.fx.timer(S.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}S.Animation=S.extend(lt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return se(n.elem,e,te.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(P);for(var n,r=0,i=e.length;r<i;r++)n=e[r],lt.tweeners[n]=lt.tweeners[n]||[],lt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),v=Y.get(e,"fxshow");for(r in n.queue||(null==(a=S._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,S.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],rt.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||S.style(e,r)}if((u=!S.isEmptyObject(t))||!S.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Y.get(e,"display")),"none"===(c=S.css(e,"display"))&&(l?c=l:(le([e],!0),l=e.style.display||l,c=S.css(e,"display"),le([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===S.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Y.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&le([e],!0),p.done(function(){for(r in g||le([e]),Y.remove(e,"fxshow"),d)S.style(e,r,d[r])})),u=ut(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?lt.prefilters.unshift(e):lt.prefilters.push(e)}}),S.speed=function(e,t,n){var r=e&&"object"==typeof e?S.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return S.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in S.fx.speeds?r.duration=S.fx.speeds[r.duration]:r.duration=S.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&S.dequeue(this,r.queue)},r},S.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=S.isEmptyObject(t),o=S.speed(e,n,r),a=function(){var e=lt(this,S.extend({},t),o);(i||Y.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=S.timers,r=Y.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&it.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||S.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Y.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=S.timers,o=n?n.length:0;for(t.finish=!0,S.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),S.each(["toggle","show","hide"],function(e,r){var i=S.fn[r];S.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(st(r,!0),e,t,n)}}),S.each({slideDown:st("show"),slideUp:st("hide"),slideToggle:st("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){S.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),S.timers=[],S.fx.tick=function(){var e,t=0,n=S.timers;for(Ze=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||S.fx.stop(),Ze=void 0},S.fx.timer=function(e){S.timers.push(e),S.fx.start()},S.fx.interval=13,S.fx.start=function(){et||(et=!0,ot())},S.fx.stop=function(){et=null},S.fx.speeds={slow:600,fast:200,_default:400},S.fn.delay=function(r,e){return r=S.fx&&S.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},tt=E.createElement("input"),nt=E.createElement("select").appendChild(E.createElement("option")),tt.type="checkbox",y.checkOn=""!==tt.value,y.optSelected=nt.selected,(tt=E.createElement("input")).value="t",tt.type="radio",y.radioValue="t"===tt.value;var ct,ft=S.expr.attrHandle;S.fn.extend({attr:function(e,t){return $(this,S.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){S.removeAttr(this,e)})}}),S.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?S.prop(e,t,n):(1===o&&S.isXMLDoc(e)||(i=S.attrHooks[t.toLowerCase()]||(S.expr.match.bool.test(t)?ct:void 0)),void 0!==n?null===n?void S.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=S.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(P);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ct={set:function(e,t,n){return!1===t?S.removeAttr(e,n):e.setAttribute(n,n),n}},S.each(S.expr.match.bool.source.match(/\w+/g),function(e,t){var a=ft[t]||S.find.attr;ft[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=ft[o],ft[o]=r,r=null!=a(e,t,n)?o:null,ft[o]=i),r}});var pt=/^(?:input|select|textarea|button)$/i,dt=/^(?:a|area)$/i;function ht(e){return(e.match(P)||[]).join(" ")}function gt(e){return e.getAttribute&&e.getAttribute("class")||""}function vt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(P)||[]}S.fn.extend({prop:function(e,t){return $(this,S.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[S.propFix[e]||e]})}}),S.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&S.isXMLDoc(e)||(t=S.propFix[t]||t,i=S.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=S.find.attr(e,"tabindex");return t?parseInt(t,10):pt.test(e.nodeName)||dt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(S.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),S.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){S.propFix[this.toLowerCase()]=this}),S.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).addClass(t.call(this,e,gt(this)))});if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){S(this).removeClass(t.call(this,e,gt(this)))});if(!arguments.length)return this.attr("class","");if((e=vt(t)).length)while(n=this[u++])if(i=gt(n),r=1===n.nodeType&&" "+ht(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=ht(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){S(this).toggleClass(i.call(this,e,gt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=S(this),r=vt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=gt(this))&&Y.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Y.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+ht(gt(n))+" ").indexOf(t))return!0;return!1}});var yt=/\r/g;S.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,S(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=S.map(t,function(e){return null==e?"":e+""})),(r=S.valHooks[this.type]||S.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=S.valHooks[t.type]||S.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(yt,""):null==e?"":e:void 0}}),S.extend({valHooks:{option:{get:function(e){var t=S.find.attr(e,"value");return null!=t?t:ht(S.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=S(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=S.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<S.inArray(S.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),S.each(["radio","checkbox"],function(){S.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<S.inArray(S(e).val(),t)}},y.checkOn||(S.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var mt=/^(?:focusinfocus|focusoutblur)$/,xt=function(e){e.stopPropagation()};S.extend(S.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!mt.test(d+S.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[S.expando]?e:new S.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:S.makeArray(t,[e]),c=S.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,mt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Y.get(o,"events")||Object.create(null))[e.type]&&Y.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&V(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!V(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),S.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,xt),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,xt),S.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=S.extend(new S.Event,n,{type:e,isSimulated:!0});S.event.trigger(r,null,t)}}),S.fn.extend({trigger:function(e,t){return this.each(function(){S.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return S.event.trigger(e,t,n,!0)}}),y.focusin||S.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){S.event.simulate(r,e.target,S.event.fix(e))};S.event.special[r]={setup:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r);t||e.addEventListener(n,i,!0),Y.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this.document||this,t=Y.access(e,r)-1;t?Y.access(e,r,t):(e.removeEventListener(n,i,!0),Y.remove(e,r))}}});var bt=C.location,wt={guid:Date.now()},Tt=/\?/;S.parseXML=function(e){var t,n;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){}return n=t&&t.getElementsByTagName("parsererror")[0],t&&!n||S.error("Invalid XML: "+(n?S.map(n.childNodes,function(e){return e.textContent}).join("\n"):e)),t};var Ct=/\[\]$/,Et=/\r?\n/g,St=/^(?:submit|button|image|reset|file)$/i,kt=/^(?:input|select|textarea|keygen)/i;function At(n,e,r,i){var t;if(Array.isArray(e))S.each(e,function(e,t){r||Ct.test(n)?i(n,t):At(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)At(n+"["+t+"]",e[t],r,i)}S.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!S.isPlainObject(e))S.each(e,function(){i(this.name,this.value)});else for(n in e)At(n,e[n],t,i);return r.join("&")},S.fn.extend({serialize:function(){return S.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=S.prop(this,"elements");return e?S.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!S(this).is(":disabled")&&kt.test(this.nodeName)&&!St.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=S(this).val();return null==n?null:Array.isArray(n)?S.map(n,function(e){return{name:t.name,value:e.replace(Et,"\r\n")}}):{name:t.name,value:n.replace(Et,"\r\n")}}).get()}});var Nt=/%20/g,jt=/#.*$/,Dt=/([?&])_=[^&]*/,qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Lt=/^(?:GET|HEAD)$/,Ht=/^\/\//,Ot={},Pt={},Rt="*/".concat("*"),Mt=E.createElement("a");function It(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(P)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function Wt(t,i,o,a){var s={},u=t===Pt;function l(e){var r;return s[e]=!0,S.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function Ft(e,t){var n,r,i=S.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&S.extend(!0,e,r),e}Mt.href=bt.href,S.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:bt.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(bt.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Rt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":S.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?Ft(Ft(e,S.ajaxSettings),t):Ft(S.ajaxSettings,e)},ajaxPrefilter:It(Ot),ajaxTransport:It(Pt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=S.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?S(y):S.event,x=S.Deferred(),b=S.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=qt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||bt.href)+"").replace(Ht,bt.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(P)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Mt.protocol+"//"+Mt.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=S.param(v.data,v.traditional)),Wt(Ot,v,t,T),h)return T;for(i in(g=S.event&&v.global)&&0==S.active++&&S.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Lt.test(v.type),f=v.url.replace(jt,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Nt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(Tt.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Dt,"$1"),o=(Tt.test(f)?"&":"?")+"_="+wt.guid+++o),v.url=f+o),v.ifModified&&(S.lastModified[f]&&T.setRequestHeader("If-Modified-Since",S.lastModified[f]),S.etag[f]&&T.setRequestHeader("If-None-Match",S.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+Rt+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=Wt(Pt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),!i&&-1<S.inArray("script",v.dataTypes)&&S.inArray("json",v.dataTypes)<0&&(v.converters["text script"]=function(){}),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(S.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(S.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--S.active||S.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return S.get(e,t,n,"json")},getScript:function(e,t){return S.get(e,void 0,t,"script")}}),S.each(["get","post"],function(e,i){S[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),S.ajax(S.extend({url:e,type:i,dataType:r,data:t,success:n},S.isPlainObject(e)&&e))}}),S.ajaxPrefilter(function(e){var t;for(t in e.headers)"content-type"===t.toLowerCase()&&(e.contentType=e.headers[t]||"")}),S._evalUrl=function(e,t,n){return S.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){S.globalEval(e,t,n)}})},S.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=S(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){S(this).wrapInner(n.call(this,e))}):this.each(function(){var e=S(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){S(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){S(this).replaceWith(this.childNodes)}),this}}),S.expr.pseudos.hidden=function(e){return!S.expr.pseudos.visible(e)},S.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},S.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Bt={0:200,1223:204},$t=S.ajaxSettings.xhr();y.cors=!!$t&&"withCredentials"in $t,y.ajax=$t=!!$t,S.ajaxTransport(function(i){var o,a;if(y.cors||$t&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Bt[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),S.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),S.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return S.globalEval(e),e}}}),S.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),S.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=S("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=ht(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&S.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?S("<div>").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}});var Xt=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;S.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||S.guid++,i},S.holdReady=function(e){e?S.readyWait++:S.ready(!0)},S.isArray=Array.isArray,S.parseJSON=JSON.parse,S.nodeName=A,S.isFunction=m,S.isWindow=x,S.camelCase=X,S.type=w,S.now=Date.now,S.isNumeric=function(e){var t=S.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},S.trim=function(e){return null==e?"":(e+"").replace(Xt,"")},"function"==typeof define&&define.amd&&define("jquery",[],function(){return S});var Vt=C.jQuery,Gt=C.$;return S.noConflict=function(e){return C.$===S&&(C.$=Gt),e&&C.jQuery===S&&(C.jQuery=Vt),S},"undefined"==typeof e&&(C.jQuery=C.$=S),S});
    diff --git a/deliverables/javadoc/script-dir/jquery-ui.min.css b/deliverables/javadoc/script-dir/jquery-ui.min.css
    new file mode 100644
    index 00000000..d64539cb
    --- /dev/null
    +++ b/deliverables/javadoc/script-dir/jquery-ui.min.css
    @@ -0,0 +1,6 @@
    +/*! jQuery UI - v1.13.1 - 2022-05-12
    +* http://jqueryui.com
    +* Includes: core.css, autocomplete.css, menu.css
    +* Copyright jQuery Foundation and other contributors; Licensed MIT */
    +
    +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;-ms-filter:"alpha(opacity=0)"}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}
    \ No newline at end of file
    diff --git a/deliverables/javadoc/script-dir/jquery-ui.min.js b/deliverables/javadoc/script-dir/jquery-ui.min.js
    new file mode 100644
    index 00000000..55c28329
    --- /dev/null
    +++ b/deliverables/javadoc/script-dir/jquery-ui.min.js
    @@ -0,0 +1,6 @@
    +/*! jQuery UI - v1.13.1 - 2022-05-12
    +* http://jqueryui.com
    +* Includes: widget.js, position.js, keycode.js, unique-id.js, widgets/autocomplete.js, widgets/menu.js
    +* Copyright jQuery Foundation and other contributors; Licensed MIT */
    +
    +!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(x){"use strict";x.ui=x.ui||{};x.ui.version="1.13.1";var n,i=0,l=Array.prototype.hasOwnProperty,a=Array.prototype.slice;x.cleanData=(n=x.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=x._data(i,"events"))&&e.remove&&x(i).triggerHandler("remove");n(t)}),x.widget=function(t,i,e){var s,n,o,l={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=x.Widget),Array.isArray(e)&&(e=x.extend.apply(null,[{}].concat(e))),x.expr.pseudos[r.toLowerCase()]=function(t){return!!x.data(t,r)},x[a]=x[a]||{},s=x[a][t],n=x[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},x.extend(n,s,{version:e.version,_proto:x.extend({},e),_childConstructors:[]}),(o=new i).options=x.widget.extend({},o.options),x.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)}function o(t){return i.prototype[e].apply(this,t)}l[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=x.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},l,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(x.each(s._childConstructors,function(t,e){var i=e.prototype;x.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),x.widget.bridge(t,n),n},x.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n<o;n++)for(e in s[n])i=s[n][e],l.call(s[n],e)&&void 0!==i&&(x.isPlainObject(i)?t[e]=x.isPlainObject(t[e])?x.widget.extend({},t[e],i):x.widget.extend({},i):t[e]=i);return t},x.widget.bridge=function(o,e){var l=e.prototype.widgetFullName||o;x.fn[o]=function(i){var t="string"==typeof i,s=a.call(arguments,1),n=this;return t?this.length||"instance"!==i?this.each(function(){var t,e=x.data(this,l);return"instance"===i?(n=e,!1):e?"function"!=typeof e[i]||"_"===i.charAt(0)?x.error("no such method '"+i+"' for "+o+" widget instance"):(t=e[i].apply(e,s))!==e&&void 0!==t?(n=t&&t.jquery?n.pushStack(t.get()):t,!1):void 0:x.error("cannot call methods on "+o+" prior to initialization; attempted to call method '"+i+"'")}):n=void 0:(s.length&&(i=x.widget.extend.apply(null,[i].concat(s))),this.each(function(){var t=x.data(this,l);t?(t.option(i||{}),t._init&&t._init()):x.data(this,l,new e(i,this))})),n}},x.Widget=function(){},x.Widget._childConstructors=[],x.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=x(e||this.defaultElement||this)[0],this.element=x(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=x(),this.hoverable=x(),this.focusable=x(),this.classesElementLookup={},e!==this&&(x.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===e&&this.destroy()}}),this.document=x(e.style?e.ownerDocument:e.document||e),this.window=x(this.document[0].defaultView||this.document[0].parentWindow)),this.options=x.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:x.noop,_create:x.noop,_init:x.noop,destroy:function(){var i=this;this._destroy(),x.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:x.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return x.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t]=x.widget.extend({},this.options[t]),n=0;n<i.length-1;n++)s[i[n]]=s[i[n]]||{},s=s[i[n]];if(t=i.pop(),1===arguments.length)return void 0===s[t]?null:s[t];s[t]=e}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=e}return this._setOptions(o),this},_setOptions:function(t){for(var e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(t){var e,i,s;for(e in t)s=this.classesElementLookup[e],t[e]!==this.options.classes[e]&&s&&s.length&&(i=x(s.get()),this._removeClass(s,e),i.addClass(this._classes({element:i,keys:e,classes:t,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(n){var o=[],l=this;function t(t,e){for(var i,s=0;s<t.length;s++)i=l.classesElementLookup[t[s]]||x(),i=n.add?(function(){var i=[];n.element.each(function(t,e){x.map(l.classesElementLookup,function(t){return t}).some(function(t){return t.is(e)})||i.push(e)}),l._on(x(i),{remove:"_untrackClassesElement"})}(),x(x.uniqueSort(i.get().concat(n.element.get())))):x(i.not(n.element).get()),l.classesElementLookup[t[s]]=i,o.push(t[s]),e&&n.classes[t[s]]&&o.push(n.classes[t[s]])}return(n=x.extend({element:this.element,classes:this.options.classes||{}},n)).keys&&t(n.keys.match(/\S+/g)||[],!0),n.extra&&t(n.extra.match(/\S+/g)||[]),o.join(" ")},_untrackClassesElement:function(i){var s=this;x.each(s.classesElementLookup,function(t,e){-1!==x.inArray(i.target,e)&&(s.classesElementLookup[t]=x(e.not(i.target).get()))}),this._off(x(i.target))},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){var n="string"==typeof t||null===t,i={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s="boolean"==typeof s?s:i};return i.element.toggleClass(this._classes(i),s),this},_on:function(n,o,t){var l,a=this;"boolean"!=typeof n&&(t=o,o=n,n=!1),t?(o=l=x(o),this.bindings=this.bindings.add(o)):(t=o,o=this.element,l=this.widget()),x.each(t,function(t,e){function i(){if(n||!0!==a.options.disabled&&!x(this).hasClass("ui-state-disabled"))return("string"==typeof e?a[e]:e).apply(a,arguments)}"string"!=typeof e&&(i.guid=e.guid=e.guid||i.guid||x.guid++);var s=t.match(/^([\w:-]*)\s*(.*)$/),t=s[1]+a.eventNamespace,s=s[2];s?l.on(t,s,i):o.on(t,i)})},_off:function(t,e){e=(e||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.off(e),this.bindings=x(this.bindings.not(t).get()),this.focusable=x(this.focusable.not(t).get()),this.hoverable=x(this.hoverable.not(t).get())},_delay:function(t,e){var i=this;return setTimeout(function(){return("string"==typeof t?i[t]:t).apply(i,arguments)},e||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){this._addClass(x(t.currentTarget),null,"ui-state-hover")},mouseleave:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){this._addClass(x(t.currentTarget),null,"ui-state-focus")},focusout:function(t){this._removeClass(x(t.currentTarget),null,"ui-state-focus")}})},_trigger:function(t,e,i){var s,n,o=this.options[t];if(i=i||{},(e=x.Event(e)).type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),e.target=this.element[0],n=e.originalEvent)for(s in n)s in e||(e[s]=n[s]);return this.element.trigger(e,i),!("function"==typeof o&&!1===o.apply(this.element[0],[e].concat(i))||e.isDefaultPrevented())}},x.each({show:"fadeIn",hide:"fadeOut"},function(o,l){x.Widget.prototype["_"+o]=function(e,t,i){var s,n=(t="string"==typeof t?{effect:t}:t)?!0!==t&&"number"!=typeof t&&t.effect||l:o;"number"==typeof(t=t||{})?t={duration:t}:!0===t&&(t={}),s=!x.isEmptyObject(t),t.complete=i,t.delay&&e.delay(t.delay),s&&x.effects&&x.effects.effect[n]?e[o](t):n!==o&&e[n]?e[n](t.duration,t.easing,i):e.queue(function(t){x(this)[o](),i&&i.call(e[0]),t()})}});var s,C,E,o,r,u,h,c,k;x.widget;function T(t,e,i){return[parseFloat(t[0])*(c.test(t[0])?e/100:1),parseFloat(t[1])*(c.test(t[1])?i/100:1)]}function A(t,e){return parseInt(x.css(t,e),10)||0}function W(t){return null!=t&&t===t.window}C=Math.max,E=Math.abs,o=/left|center|right/,r=/top|center|bottom/,u=/[\+\-]\d+(\.[\d]+)?%?/,h=/^\w+/,c=/%$/,k=x.fn.position,x.position={scrollbarWidth:function(){if(void 0!==s)return s;var t,e=x("<div style='display:block;position:absolute;width:200px;height:200px;overflow:hidden;'><div style='height:300px;width:auto;'></div></div>"),i=e.children()[0];return x("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i},getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.width<t.element[0].scrollWidth;return{width:"scroll"===i||"auto"===i&&t.height<t.element[0].scrollHeight?x.position.scrollbarWidth():0,height:e?x.position.scrollbarWidth():0}},getWithinInfo:function(t){var e=x(t||window),i=W(e[0]),s=!!e[0]&&9===e[0].nodeType;return{element:e,isWindow:i,isDocument:s,offset:!i&&!s?x(t).offset():{left:0,top:0},scrollLeft:e.scrollLeft(),scrollTop:e.scrollTop(),width:e.outerWidth(),height:e.outerHeight()}}},x.fn.position=function(c){if(!c||!c.of)return k.apply(this,arguments);var d,f,m,p,v,t,g="string"==typeof(c=x.extend({},c)).of?x(document).find(c.of):x(c.of),_=x.position.getWithinInfo(c.within),y=x.position.getScrollInfo(_),b=(c.collision||"flip").split(" "),w={},e=9===(t=(e=g)[0]).nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:W(t)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:t.preventDefault?{width:0,height:0,offset:{top:t.pageY,left:t.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()};return g[0].preventDefault&&(c.at="left top"),f=e.width,m=e.height,v=x.extend({},p=e.offset),x.each(["my","at"],function(){var t,e,i=(c[this]||"").split(" ");(i=1===i.length?o.test(i[0])?i.concat(["center"]):r.test(i[0])?["center"].concat(i):["center","center"]:i)[0]=o.test(i[0])?i[0]:"center",i[1]=r.test(i[1])?i[1]:"center",t=u.exec(i[0]),e=u.exec(i[1]),w[this]=[t?t[0]:0,e?e[0]:0],c[this]=[h.exec(i[0])[0],h.exec(i[1])[0]]}),1===b.length&&(b[1]=b[0]),"right"===c.at[0]?v.left+=f:"center"===c.at[0]&&(v.left+=f/2),"bottom"===c.at[1]?v.top+=m:"center"===c.at[1]&&(v.top+=m/2),d=T(w.at,f,m),v.left+=d[0],v.top+=d[1],this.each(function(){var i,t,l=x(this),a=l.outerWidth(),r=l.outerHeight(),e=A(this,"marginLeft"),s=A(this,"marginTop"),n=a+e+A(this,"marginRight")+y.width,o=r+s+A(this,"marginBottom")+y.height,u=x.extend({},v),h=T(w.my,l.outerWidth(),l.outerHeight());"right"===c.my[0]?u.left-=a:"center"===c.my[0]&&(u.left-=a/2),"bottom"===c.my[1]?u.top-=r:"center"===c.my[1]&&(u.top-=r/2),u.left+=h[0],u.top+=h[1],i={marginLeft:e,marginTop:s},x.each(["left","top"],function(t,e){x.ui.position[b[t]]&&x.ui.position[b[t]][e](u,{targetWidth:f,targetHeight:m,elemWidth:a,elemHeight:r,collisionPosition:i,collisionWidth:n,collisionHeight:o,offset:[d[0]+h[0],d[1]+h[1]],my:c.my,at:c.at,within:_,elem:l})}),c.using&&(t=function(t){var e=p.left-u.left,i=e+f-a,s=p.top-u.top,n=s+m-r,o={target:{element:g,left:p.left,top:p.top,width:f,height:m},element:{element:l,left:u.left,top:u.top,width:a,height:r},horizontal:i<0?"left":0<e?"right":"center",vertical:n<0?"top":0<s?"bottom":"middle"};f<a&&E(e+i)<f&&(o.horizontal="center"),m<r&&E(s+n)<m&&(o.vertical="middle"),C(E(e),E(i))>C(E(s),E(n))?o.important="horizontal":o.important="vertical",c.using.call(this,t,o)}),l.offset(x.extend(u,{using:t}))})},x.ui.position={fit:{left:function(t,e){var i=e.within,s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,l=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0<l&&a<=0?(i=t.left+l+e.collisionWidth-n-s,t.left+=l-i):t.left=!(0<a&&l<=0)&&a<l?s+n-e.collisionWidth:s:0<l?t.left+=l:0<a?t.left-=a:t.left=C(t.left-o,t.left)},top:function(t,e){var i=e.within,s=i.isWindow?i.scrollTop:i.offset.top,n=e.within.height,o=t.top-e.collisionPosition.marginTop,l=s-o,a=o+e.collisionHeight-n-s;e.collisionHeight>n?0<l&&a<=0?(i=t.top+l+e.collisionHeight-n-s,t.top+=l-i):t.top=!(0<a&&l<=0)&&a<l?s+n-e.collisionHeight:s:0<l?t.top+=l:0<a?t.top-=a:t.top=C(t.top-o,t.top)}},flip:{left:function(t,e){var i=e.within,s=i.offset.left+i.scrollLeft,n=i.width,o=i.isWindow?i.scrollLeft:i.offset.left,l=t.left-e.collisionPosition.marginLeft,a=l-o,r=l+e.collisionWidth-n-o,u="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,i="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,l=-2*e.offset[0];a<0?((s=t.left+u+i+l+e.collisionWidth-n-s)<0||s<E(a))&&(t.left+=u+i+l):0<r&&(0<(o=t.left-e.collisionPosition.marginLeft+u+i+l-o)||E(o)<r)&&(t.left+=u+i+l)},top:function(t,e){var i=e.within,s=i.offset.top+i.scrollTop,n=i.height,o=i.isWindow?i.scrollTop:i.offset.top,l=t.top-e.collisionPosition.marginTop,a=l-o,r=l+e.collisionHeight-n-o,u="top"===e.my[1]?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,i="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,l=-2*e.offset[1];a<0?((s=t.top+u+i+l+e.collisionHeight-n-s)<0||s<E(a))&&(t.top+=u+i+l):0<r&&(0<(o=t.top-e.collisionPosition.marginTop+u+i+l-o)||E(o)<r)&&(t.top+=u+i+l)}},flipfit:{left:function(){x.ui.position.flip.left.apply(this,arguments),x.ui.position.fit.left.apply(this,arguments)},top:function(){x.ui.position.flip.top.apply(this,arguments),x.ui.position.fit.top.apply(this,arguments)}}};var t;x.ui.position,x.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},x.fn.extend({uniqueId:(t=0,function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&x(this).removeAttr("id")})}}),x.ui.safeActiveElement=function(e){var i;try{i=e.activeElement}catch(t){i=e.body}return i=!(i=i||e.body).nodeName?e.body:i},x.widget("ui.menu",{version:"1.13.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.lastMousePosition={x:null,y:null},this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault(),this._activateItem(t)},"click .ui-menu-item":function(t){var e=x(t.target),i=x(x.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&e.not(".ui-state-disabled").length&&(this.select(t),t.isPropagationStopped()||(this.mouseHandled=!0),e.has(".ui-menu").length?this.expand(t):!this.element.is(":focus")&&i.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":"_activateItem","mousemove .ui-menu-item":"_activateItem",mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this._menuItems().first();e||this.focus(t,i)},blur:function(t){this._delay(function(){x.contains(this.element[0],x.ui.safeActiveElement(this.document[0]))||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t,!0),this.mouseHandled=!1}})},_activateItem:function(t){var e,i;this.previousFilter||t.clientX===this.lastMousePosition.x&&t.clientY===this.lastMousePosition.y||(this.lastMousePosition={x:t.clientX,y:t.clientY},e=x(t.target).closest(".ui-menu-item"),i=x(t.currentTarget),e[0]===i[0]&&(i.is(".ui-state-active")||(this._removeClass(i.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(t,i))))},_destroy:function(){var t=this.element.find(".ui-menu-item").removeAttr("role aria-disabled").children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),t.children().each(function(){var t=x(this);t.data("ui-menu-submenu-caret")&&t.remove()})},_keydown:function(t){var e,i,s,n=!0;switch(t.keyCode){case x.ui.keyCode.PAGE_UP:this.previousPage(t);break;case x.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case x.ui.keyCode.HOME:this._move("first","first",t);break;case x.ui.keyCode.END:this._move("last","last",t);break;case x.ui.keyCode.UP:this.previous(t);break;case x.ui.keyCode.DOWN:this.next(t);break;case x.ui.keyCode.LEFT:this.collapse(t);break;case x.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case x.ui.keyCode.ENTER:case x.ui.keyCode.SPACE:this._activate(t);break;case x.ui.keyCode.ESCAPE:this.collapse(t);break;default:e=this.previousFilter||"",s=n=!1,i=96<=t.keyCode&&t.keyCode<=105?(t.keyCode-96).toString():String.fromCharCode(t.keyCode),clearTimeout(this.filterTimer),i===e?s=!0:i=e+i,e=this._filterMenuItems(i),(e=s&&-1!==e.index(this.active.next())?this.active.nextAll(".ui-menu-item"):e).length||(i=String.fromCharCode(t.keyCode),e=this._filterMenuItems(i)),e.length?(this.focus(t,e),this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}n&&t.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var t,e,s=this,n=this.options.icons.submenu,i=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),e=i.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=x(this),e=t.prev(),i=x("<span>").data("ui-menu-submenu-caret",!0);s._addClass(i,"ui-menu-icon","ui-icon "+n),e.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",e.attr("id"))}),this._addClass(e,"ui-menu","ui-widget ui-widget-content ui-front"),(t=i.add(this.element).find(this.options.items)).not(".ui-menu-item").each(function(){var t=x(this);s._isDivider(t)&&s._addClass(t,"ui-menu-divider","ui-widget-content")}),i=(e=t.not(".ui-menu-item, .ui-menu-divider")).children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(e,"ui-menu-item")._addClass(i,"ui-menu-item-wrapper"),t.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!x.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){var i;"icons"===t&&(i=this.element.find(".ui-menu-icon"),this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",String(t)),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),i=this.active.children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",i.attr("id")),i=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(i,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),(i=e.children(".ui-menu")).length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(t){var e,i,s;this._hasScroll()&&(i=parseFloat(x.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(x.css(this.activeMenu[0],"paddingTop"))||0,e=t.offset().top-this.activeMenu.offset().top-i-s,i=this.activeMenu.scrollTop(),s=this.activeMenu.height(),t=t.outerHeight(),e<0?this.activeMenu.scrollTop(i+e):s<e+t&&this.activeMenu.scrollTop(i+e-s+t))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(t){var e=x.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(e)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var t=i?this.element:x(e&&e.target).closest(this.element.find(".ui-menu"));t.length||(t=this.element),this._close(t),this.blur(e),this._removeClass(t.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=t},i?0:this.delay)},_close:function(t){(t=t||(this.active?this.active.parent():this.element)).find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(t){return!x(t.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this._menuItems(this.active.children(".ui-menu")).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_menuItems:function(t){return(t||this.element).find(this.options.items).filter(".ui-menu-item")},_move:function(t,e,i){var s;(s=this.active?"first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").last():this.active[t+"All"](".ui-menu-item").first():s)&&s.length&&this.active||(s=this._menuItems(this.activeMenu)[e]()),this.focus(i,s)},nextPage:function(t){var e,i,s;this.active?this.isLastItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===x.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.nextAll(".ui-menu-item").each(function(){return(e=x(this)).offset().top-i-s<0}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu)[this.active?"last":"first"]())):this.next(t)},previousPage:function(t){var e,i,s;this.active?this.isFirstItem()||(this._hasScroll()?(i=this.active.offset().top,s=this.element.innerHeight(),0===x.fn.jquery.indexOf("3.2.")&&(s+=this.element[0].offsetHeight-this.element.outerHeight()),this.active.prevAll(".ui-menu-item").each(function(){return 0<(e=x(this)).offset().top-i+s}),this.focus(t,e)):this.focus(t,this._menuItems(this.activeMenu).first())):this.next(t)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||x(t.target).closest(".ui-menu-item");var e={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,e)},_filterMenuItems:function(t){var t=t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),e=new RegExp("^"+t,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return e.test(String.prototype.trim.call(x(this).children(".ui-menu-item-wrapper").text()))})}});x.widget("ui.autocomplete",{version:"1.13.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,liveRegionTimer:null,_create:function(){var i,s,n,t=this.element[0].nodeName.toLowerCase(),e="textarea"===t,t="input"===t;this.isMultiLine=e||!t&&this._isContentEditable(this.element),this.valueMethod=this.element[e||t?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(t){if(this.element.prop("readOnly"))s=n=i=!0;else{s=n=i=!1;var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:i=!0,this._move("previousPage",t);break;case e.PAGE_DOWN:i=!0,this._move("nextPage",t);break;case e.UP:i=!0,this._keyEvent("previous",t);break;case e.DOWN:i=!0,this._keyEvent("next",t);break;case e.ENTER:this.menu.active&&(i=!0,t.preventDefault(),this.menu.select(t));break;case e.TAB:this.menu.active&&this.menu.select(t);break;case e.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(t),t.preventDefault());break;default:s=!0,this._searchTimeout(t)}}},keypress:function(t){if(i)return i=!1,void(this.isMultiLine&&!this.menu.element.is(":visible")||t.preventDefault());if(!s){var e=x.ui.keyCode;switch(t.keyCode){case e.PAGE_UP:this._move("previousPage",t);break;case e.PAGE_DOWN:this._move("nextPage",t);break;case e.UP:this._keyEvent("previous",t);break;case e.DOWN:this._keyEvent("next",t)}}},input:function(t){if(n)return n=!1,void t.preventDefault();this._searchTimeout(t)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){clearTimeout(this.searching),this.close(t),this._change(t)}}),this._initSource(),this.menu=x("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().attr({unselectable:"on"}).menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault()},menufocus:function(t,e){var i,s;if(this.isNewMenu&&(this.isNewMenu=!1,t.originalEvent&&/^mouse/.test(t.originalEvent.type)))return this.menu.blur(),void this.document.one("mousemove",function(){x(t.target).trigger(t.originalEvent)});s=e.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",t,{item:s})&&t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(s.value),(i=e.item.attr("aria-label")||s.value)&&String.prototype.trim.call(i).length&&(clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("<div>").text(i))},100))},menuselect:function(t,e){var i=e.item.data("ui-autocomplete-item"),s=this.previous;this.element[0]!==x.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s,this.selectedItem=i})),!1!==this._trigger("select",t,{item:i})&&this._value(i.value),this.term=this._value(),this.close(t),this.selectedItem=i}}),this.liveRegion=x("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(t){var e=this.menu.element[0];return t.target===this.element[0]||t.target===e||x.contains(e,t.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var t=this.options.appendTo;return t=!(t=!(t=t&&(t.jquery||t.nodeType?x(t):this.document.find(t).eq(0)))||!t[0]?this.element.closest(".ui-front, dialog"):t).length?this.document[0].body:t},_initSource:function(){var i,s,n=this;Array.isArray(this.options.source)?(i=this.options.source,this.source=function(t,e){e(x.ui.autocomplete.filter(i,t.term))}):"string"==typeof this.options.source?(s=this.options.source,this.source=function(t,e){n.xhr&&n.xhr.abort(),n.xhr=x.ajax({url:s,data:t,dataType:"json",success:function(t){e(t)},error:function(){e([])}})}):this.source=this.options.source},_searchTimeout:function(s){clearTimeout(this.searching),this.searching=this._delay(function(){var t=this.term===this._value(),e=this.menu.element.is(":visible"),i=s.altKey||s.ctrlKey||s.metaKey||s.shiftKey;t&&(e||i)||(this.selectedItem=null,this.search(null,s))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):!1!==this._trigger("search",e)?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")}.bind(this)},__response:function(t){t=t&&this._normalize(t),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:x.map(t,function(t){return"string"==typeof t?{label:t,value:t}:x.extend({},t,{label:t.label||t.value,value:t.value||t.label})})},_suggest:function(t){var e=this.menu.element.empty();this._renderMenu(e,t),this.isNewMenu=!0,this.menu.refresh(),e.show(),this._resizeMenu(),e.position(x.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(i,t){var s=this;x.each(t,function(t,e){s._renderItemData(i,e)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(t,e){return x("<li>").append(x("<div>").text(e.label)).appendTo(t)},_move:function(t,e){if(this.menu.element.is(":visible"))return this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),void this.menu.blur()):void this.menu[t](e);this.search(null,e)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){this.isMultiLine&&!this.menu.element.is(":visible")||(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),x.extend(x.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,e){var i=new RegExp(x.ui.autocomplete.escapeRegex(e),"i");return x.grep(t,function(t){return i.test(t.label||t.value||t)})}}),x.widget("ui.autocomplete",x.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(1<t?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(t){var e;this._superApply(arguments),this.options.disabled||this.cancelSearch||(e=t&&t.length?this.options.messages.results(t.length):this.options.messages.noResults,clearTimeout(this.liveRegionTimer),this.liveRegionTimer=this._delay(function(){this.liveRegion.html(x("<div>").text(e))},100))}});x.ui.autocomplete});
    \ No newline at end of file
    diff --git a/deliverables/javadoc/script.js b/deliverables/javadoc/script.js
    new file mode 100644
    index 00000000..62953632
    --- /dev/null
    +++ b/deliverables/javadoc/script.js
    @@ -0,0 +1,266 @@
    +/*
    + * Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved.
    + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    + *
    + * This code is free software; you can redistribute it and/or modify it
    + * under the terms of the GNU General Public License version 2 only, as
    + * published by the Free Software Foundation.  Oracle designates this
    + * particular file as subject to the "Classpath" exception as provided
    + * by Oracle in the LICENSE file that accompanied this code.
    + *
    + * This code is distributed in the hope that it will be useful, but WITHOUT
    + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    + * version 2 for more details (a copy is included in the LICENSE file that
    + * accompanied this code).
    + *
    + * You should have received a copy of the GNU General Public License version
    + * 2 along with this work; if not, write to the Free Software Foundation,
    + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    + *
    + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    + * or visit www.oracle.com if you need additional information or have any
    + * questions.
    + */
    +
    +var moduleSearchIndex;
    +var packageSearchIndex;
    +var typeSearchIndex;
    +var memberSearchIndex;
    +var tagSearchIndex;
    +
    +var oddRowColor = "odd-row-color";
    +var evenRowColor = "even-row-color";
    +var sortAsc = "sort-asc";
    +var sortDesc = "sort-desc";
    +var tableTab = "table-tab";
    +var activeTableTab = "active-table-tab";
    +
    +function loadScripts(doc, tag) {
    +    createElem(doc, tag, 'search.js');
    +
    +    createElem(doc, tag, 'module-search-index.js');
    +    createElem(doc, tag, 'package-search-index.js');
    +    createElem(doc, tag, 'type-search-index.js');
    +    createElem(doc, tag, 'member-search-index.js');
    +    createElem(doc, tag, 'tag-search-index.js');
    +}
    +
    +function createElem(doc, tag, path) {
    +    var script = doc.createElement(tag);
    +    var scriptElement = doc.getElementsByTagName(tag)[0];
    +    script.src = pathtoroot + path;
    +    scriptElement.parentNode.insertBefore(script, scriptElement);
    +}
    +
    +// Helper for  making content containing release names comparable lexicographically
    +function makeComparable(s) {
    +    return s.toLowerCase().replace(/(\d+)/g,
    +        function(n, m) {
    +            return ("000" + m).slice(-4);
    +        });
    +}
    +
    +// Switches between two styles depending on a condition
    +function toggleStyle(classList, condition, trueStyle, falseStyle) {
    +    if (condition) {
    +        classList.remove(falseStyle);
    +        classList.add(trueStyle);
    +    } else {
    +        classList.remove(trueStyle);
    +        classList.add(falseStyle);
    +    }
    +}
    +
    +// Sorts the rows in a table lexicographically by the content of a specific column
    +function sortTable(header, columnIndex, columns) {
    +    var container = header.parentElement;
    +    var descending = header.classList.contains(sortAsc);
    +    container.querySelectorAll("div.table-header").forEach(
    +        function(header) {
    +            header.classList.remove(sortAsc);
    +            header.classList.remove(sortDesc);
    +        }
    +    )
    +    var cells = container.children;
    +    var rows = [];
    +    for (var i = columns; i < cells.length; i += columns) {
    +        rows.push(Array.prototype.slice.call(cells, i, i + columns));
    +    }
    +    var comparator = function(a, b) {
    +        var ka = makeComparable(a[columnIndex].textContent);
    +        var kb = makeComparable(b[columnIndex].textContent);
    +        if (ka < kb)
    +            return descending ? 1 : -1;
    +        if (ka > kb)
    +            return descending ? -1 : 1;
    +        return 0;
    +    };
    +    var sorted = rows.sort(comparator);
    +    var visible = 0;
    +    sorted.forEach(function(row) {
    +        if (row[0].style.display !== 'none') {
    +            var isEvenRow = visible++ % 2 === 0;
    +        }
    +        row.forEach(function(cell) {
    +            toggleStyle(cell.classList, isEvenRow, evenRowColor, oddRowColor);
    +            container.appendChild(cell);
    +        })
    +    });
    +    toggleStyle(header.classList, descending, sortDesc, sortAsc);
    +}
    +
    +// Toggles the visibility of a table category in all tables in a page
    +function toggleGlobal(checkbox, selected, columns) {
    +    var display = checkbox.checked ? '' : 'none';
    +    document.querySelectorAll("div.table-tabs").forEach(function(t) {
    +        var id = t.parentElement.getAttribute("id");
    +        var selectedClass = id + "-tab" + selected;
    +        // if selected is empty string it selects all uncategorized entries
    +        var selectUncategorized = !Boolean(selected);
    +        var visible = 0;
    +        document.querySelectorAll('div.' + id)
    +            .forEach(function(elem) {
    +                if (selectUncategorized) {
    +                    if (elem.className.indexOf(selectedClass) === -1) {
    +                        elem.style.display = display;
    +                    }
    +                } else if (elem.classList.contains(selectedClass)) {
    +                    elem.style.display = display;
    +                }
    +                if (elem.style.display === '') {
    +                    var isEvenRow = visible++ % (columns * 2) < columns;
    +                    toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
    +                }
    +            });
    +        t.parentElement.style.display = visible === 0 ? 'none' : '';
    +    })
    +}
    +
    +// Shows the elements of a table belonging to a specific category
    +function show(tableId, selected, columns) {
    +    if (tableId !== selected) {
    +        document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')')
    +            .forEach(function(elem) {
    +                elem.style.display = 'none';
    +            });
    +    }
    +    document.querySelectorAll('div.' + selected)
    +        .forEach(function(elem, index) {
    +            elem.style.display = '';
    +            var isEvenRow = index % (columns * 2) < columns;
    +            toggleStyle(elem.classList, isEvenRow, evenRowColor, oddRowColor);
    +        });
    +    updateTabs(tableId, selected);
    +}
    +
    +function updateTabs(tableId, selected) {
    +    document.querySelector('div#' + tableId +' .summary-table')
    +        .setAttribute('aria-labelledby', selected);
    +    document.querySelectorAll('button[id^="' + tableId + '"]')
    +        .forEach(function(tab, index) {
    +            if (selected === tab.id || (tableId === selected && index === 0)) {
    +                tab.className = activeTableTab;
    +                tab.setAttribute('aria-selected', true);
    +                tab.setAttribute('tabindex',0);
    +            } else {
    +                tab.className = tableTab;
    +                tab.setAttribute('aria-selected', false);
    +                tab.setAttribute('tabindex',-1);
    +            }
    +        });
    +}
    +
    +function switchTab(e) {
    +    var selected = document.querySelector('[aria-selected=true]');
    +    if (selected) {
    +        if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) {
    +            // left or up arrow key pressed: move focus to previous tab
    +            selected.previousSibling.click();
    +            selected.previousSibling.focus();
    +            e.preventDefault();
    +        } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) {
    +            // right or down arrow key pressed: move focus to next tab
    +            selected.nextSibling.click();
    +            selected.nextSibling.focus();
    +            e.preventDefault();
    +        }
    +    }
    +}
    +
    +var updateSearchResults = function() {};
    +
    +function indexFilesLoaded() {
    +    return moduleSearchIndex
    +        && packageSearchIndex
    +        && typeSearchIndex
    +        && memberSearchIndex
    +        && tagSearchIndex;
    +}
    +// Copy the contents of the local snippet to the clipboard
    +function copySnippet(button) {
    +    copyToClipboard(button.nextElementSibling.innerText);
    +    switchCopyLabel(button.firstElementChild, button.parentElement);
    +}
    +// Copy the link to the adjacent header to the clipboard
    +function copyUrl(button) {
    +    var id;
    +    var header = button.parentElement;
    +    if (header.hasAttribute("id")) {
    +        id = header.getAttribute("id");
    +    } else if (header.parentElement.tagName === 'SECTION' && header.parentElement.hasAttribute("id")) {
    +        id = header.parentElement.getAttribute("id");
    +    } else if (header.firstElementChild && header.firstElementChild.tagName === "A"
    +                                        && header.firstElementChild.hasAttribute("id")) {
    +        id = header.firstElementChild.getAttribute("id");
    +    }
    +    var url = document.location.href;
    +    if (url.indexOf("#") > -1) {
    +        url = url.substring(0, url.indexOf("#"));
    +    }
    +    copyToClipboard(url + "#" + id);
    +    switchCopyLabel(button.lastElementChild, button.parentElement);
    +}
    +function copyToClipboard(content) {
    +    var textarea = document.createElement("textarea");
    +    textarea.style.height = 0;
    +    document.body.appendChild(textarea);
    +    textarea.value = content;
    +    textarea.select();
    +    document.execCommand("copy");
    +    document.body.removeChild(textarea);
    +}
    +function switchCopyLabel(span, parent) {
    +    var copied = span.getAttribute("data-copied");
    +    if (span.innerHTML !== copied) {
    +        var initialLabel = span.innerHTML;
    +        span.innerHTML = copied;
    +        parent.onmouseleave = parent.ontouchend = function() {
    +            span.innerHTML = initialLabel;
    +        };
    +    }
    +}
    +// Workaround for scroll position not being included in browser history (8249133)
    +document.addEventListener("DOMContentLoaded", function(e) {
    +    var contentDiv = document.querySelector("div.flex-content");
    +    window.addEventListener("popstate", function(e) {
    +        if (e.state !== null) {
    +            contentDiv.scrollTop = e.state;
    +        }
    +    });
    +    window.addEventListener("hashchange", function(e) {
    +        history.replaceState(contentDiv.scrollTop, document.title);
    +    });
    +    var timeoutId;
    +    contentDiv.addEventListener("scroll", function(e) {
    +        if (timeoutId) {
    +            clearTimeout(timeoutId);
    +        }
    +        timeoutId = setTimeout(function() {
    +            history.replaceState(contentDiv.scrollTop, document.title);
    +        }, 100);
    +    });
    +    if (!location.hash) {
    +        history.replaceState(contentDiv.scrollTop, document.title);
    +    }
    +});
    diff --git a/deliverables/javadoc/search-page.js b/deliverables/javadoc/search-page.js
    new file mode 100644
    index 00000000..d55f29e5
    --- /dev/null
    +++ b/deliverables/javadoc/search-page.js
    @@ -0,0 +1,299 @@
    +/*
    + * Copyright (c) 2022, Oracle and/or its affiliates. All rights reserved.
    + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    + *
    + * This code is free software; you can redistribute it and/or modify it
    + * under the terms of the GNU General Public License version 2 only, as
    + * published by the Free Software Foundation.  Oracle designates this
    + * particular file as subject to the "Classpath" exception as provided
    + * by Oracle in the LICENSE file that accompanied this code.
    + *
    + * This code is distributed in the hope that it will be useful, but WITHOUT
    + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    + * version 2 for more details (a copy is included in the LICENSE file that
    + * accompanied this code).
    + *
    + * You should have received a copy of the GNU General Public License version
    + * 2 along with this work; if not, write to the Free Software Foundation,
    + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    + *
    + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    + * or visit www.oracle.com if you need additional information or have any
    + * questions.
    + */
    +
    +"use strict";
    +$(function() {
    +    var copy = $("#page-search-copy");
    +    var expand = $("#page-search-expand");
    +    var searchLink = $("span#page-search-link");
    +    var redirect = $("input#search-redirect");
    +    function setSearchUrlTemplate() {
    +        var href = document.location.href.split(/[#?]/)[0];
    +        href += "?q=" + "%s";
    +        if (redirect.is(":checked")) {
    +            href += "&r=1";
    +        }
    +        searchLink.html(href);
    +        copy[0].onmouseenter();
    +    }
    +    function copyLink(e) {
    +        var textarea = document.createElement("textarea");
    +        textarea.style.height = 0;
    +        document.body.appendChild(textarea);
    +        textarea.value = this.previousSibling.innerText;
    +        textarea.select();
    +        document.execCommand("copy");
    +        document.body.removeChild(textarea);
    +        var span = this.lastElementChild;
    +        var copied = span.getAttribute("data-copied");
    +        if (span.innerHTML !== copied) {
    +            var initialLabel = span.innerHTML;
    +            span.innerHTML = copied;
    +            var parent = this.parentElement.parentElement;
    +            parent.onmouseleave = parent.ontouchend = copy[0].onmouseenter = function() {
    +                span.innerHTML = initialLabel;
    +            };
    +        }
    +    }
    +    copy.click(copyLink);
    +    copy[0].onmouseenter = function() {};
    +    redirect.click(setSearchUrlTemplate);
    +    setSearchUrlTemplate();
    +    copy.prop("disabled", false);
    +    redirect.prop("disabled", false);
    +    expand.click(function (e) {
    +        var searchInfo = $("div.page-search-info");
    +        if(this.parentElement.hasAttribute("open")) {
    +            searchInfo.attr("style", "border-width: 0;");
    +        } else {
    +            searchInfo.attr("style", "border-width: 1px;").height(searchInfo.prop("scrollHeight"));
    +        }
    +    });
    +});
    +$(window).on("load", function() {
    +    var input = $("#page-search-input");
    +    var reset = $("#page-search-reset");
    +    var notify = $("#page-search-notify");
    +    var resultSection = $("div#result-section");
    +    var resultContainer = $("div#result-container");
    +    var searchTerm = "";
    +    var activeTab = "";
    +    var fixedTab = false;
    +    var visibleTabs = [];
    +    var feelingLucky = false;
    +    function renderResults(result) {
    +        if (!result.length) {
    +            notify.html(messages.noResult);
    +        } else if (result.length === 1) {
    +            notify.html(messages.oneResult);
    +        } else {
    +            notify.html(messages.manyResults.replace("{0}", result.length));
    +        }
    +        resultContainer.empty();
    +        var r = {
    +            "types": [],
    +            "members": [],
    +            "packages": [],
    +            "modules": [],
    +            "searchTags": []
    +        };
    +        for (var i in result) {
    +            var item = result[i];
    +            var arr = r[item.category];
    +            arr.push(item);
    +        }
    +        if (!activeTab || r[activeTab].length === 0 || !fixedTab) {
    +            Object.keys(r).reduce(function(prev, curr) {
    +                if (r[curr].length > 0 && r[curr][0].score > prev) {
    +                    activeTab = curr;
    +                    return r[curr][0].score;
    +                }
    +                return prev;
    +            }, 0);
    +        }
    +        if (feelingLucky && activeTab) {
    +            notify.html(messages.redirecting)
    +            var firstItem = r[activeTab][0];
    +            window.location = getURL(firstItem.indexItem, firstItem.category);
    +            return;
    +        }
    +        if (result.length > 20) {
    +            if (searchTerm[searchTerm.length - 1] === ".") {
    +                if (activeTab === "types" && r["members"].length > r["types"].length) {
    +                    activeTab = "members";
    +                } else if (activeTab === "packages" && r["types"].length > r["packages"].length) {
    +                    activeTab = "types";
    +                }
    +            }
    +        }
    +        var categoryCount = Object.keys(r).reduce(function(prev, curr) {
    +            return prev + (r[curr].length > 0 ? 1 : 0);
    +        }, 0);
    +        visibleTabs = [];
    +        var tabContainer = $("<div class='table-tabs'></div>").appendTo(resultContainer);
    +        for (var key in r) {
    +            var id = "#result-tab-" + key.replace("searchTags", "search_tags");
    +            if (r[key].length) {
    +                var count = r[key].length >= 1000 ? "999+" : r[key].length;
    +                if (result.length > 20 && categoryCount > 1) {
    +                    var button = $("<button id='result-tab-" + key
    +                        + "' class='page-search-header'><span>" + categories[key] + "</span>"
    +                        + "<span style='font-weight: normal'> (" + count + ")</span></button>").appendTo(tabContainer);
    +                    button.click(key, function(e) {
    +                        fixedTab = true;
    +                        renderResult(e.data, $(this));
    +                    });
    +                    visibleTabs.push(key);
    +                } else {
    +                    $("<span class='page-search-header active-table-tab'>" + categories[key]
    +                        + "<span style='font-weight: normal'> (" + count + ")</span></span>").appendTo(tabContainer);
    +                    renderTable(key, r[key]).appendTo(resultContainer);
    +                    tabContainer = $("<div class='table-tabs'></div>").appendTo(resultContainer);
    +
    +                }
    +            }
    +        }
    +        if (activeTab && result.length > 20 && categoryCount > 1) {
    +            $("button#result-tab-" + activeTab).addClass("active-table-tab");
    +            renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
    +        }
    +        resultSection.show();
    +        function renderResult(category, button) {
    +            activeTab = category;
    +            setSearchUrl();
    +            resultContainer.find("div.summary-table").remove();
    +            renderTable(activeTab, r[activeTab]).appendTo(resultContainer);
    +            button.siblings().removeClass("active-table-tab");
    +            button.addClass("active-table-tab");
    +        }
    +    }
    +    function selectTab(category) {
    +        $("button#result-tab-" + category).click();
    +    }
    +    function renderTable(category, items) {
    +        var table = $("<div class='summary-table'>")
    +            .addClass(category === "modules"
    +                ? "one-column-search-results"
    +                : "two-column-search-results");
    +        var col1, col2;
    +        if (category === "modules") {
    +            col1 = "Module";
    +        } else if (category === "packages") {
    +            col1 = "Module";
    +            col2 = "Package";
    +        } else if (category === "types") {
    +            col1 = "Package";
    +            col2 = "Class"
    +        } else if (category === "members") {
    +            col1 = "Class";
    +            col2 = "Member";
    +        } else if (category === "searchTags") {
    +            col1 = "Location";
    +            col2 = "Name";
    +        }
    +        $("<div class='table-header col-plain'>" + col1 + "</div>").appendTo(table);
    +        if (category !== "modules") {
    +            $("<div class='table-header col-plain'>" + col2 + "</div>").appendTo(table);
    +        }
    +        $.each(items, function(index, item) {
    +            var rowColor = index % 2 ? "odd-row-color" : "even-row-color";
    +            renderItem(item, table, rowColor);
    +        });
    +        return table;
    +    }
    +    function renderItem(item, table, rowColor) {
    +        var label = getHighlightedText(item.input, item.boundaries, item.prefix.length, item.input.length);
    +        var link = $("<a/>")
    +            .attr("href",  getURL(item.indexItem, item.category))
    +            .attr("tabindex", "0")
    +            .addClass("search-result-link")
    +            .html(label);
    +        var container = getHighlightedText(item.input, item.boundaries, 0, item.prefix.length - 1);
    +        if (item.category === "searchTags") {
    +            container = item.indexItem.h || "";
    +        }
    +        if (item.category !== "modules") {
    +            $("<div/>").html(container).addClass("col-plain").addClass(rowColor).appendTo(table);
    +        }
    +        $("<div/>").html(link).addClass("col-last").addClass(rowColor).appendTo(table);
    +    }
    +    var timeout;
    +    function schedulePageSearch() {
    +        if (timeout) {
    +            clearTimeout(timeout);
    +        }
    +        timeout = setTimeout(function () {
    +            doPageSearch()
    +        }, 100);
    +    }
    +    function doPageSearch() {
    +        setSearchUrl();
    +        var term = searchTerm = input.val().trim();
    +        if (term === "") {
    +            notify.html(messages.enterTerm);
    +            activeTab = "";
    +            fixedTab = false;
    +            resultContainer.empty();
    +            resultSection.hide();
    +        } else {
    +            notify.html(messages.searching);
    +            doSearch({ term: term, maxResults: 1200 }, renderResults);
    +        }
    +    }
    +    function setSearchUrl() {
    +        var query = input.val().trim();
    +        var url = document.location.pathname;
    +        if (query) {
    +            url += "?q=" + encodeURI(query);
    +            if (activeTab && fixedTab) {
    +                url += "&c=" + activeTab;
    +            }
    +        }
    +        history.replaceState({query: query}, "", url);
    +    }
    +    input.on("input", function(e) {
    +        feelingLucky = false;
    +        schedulePageSearch();
    +    });
    +    $(document).keydown(function(e) {
    +        if ((e.ctrlKey || e.metaKey) && (e.key === "ArrowLeft" || e.key === "ArrowRight")) {
    +            if (activeTab && visibleTabs.length > 1) {
    +                var idx = visibleTabs.indexOf(activeTab);
    +                idx += e.key === "ArrowLeft" ? visibleTabs.length - 1 : 1;
    +                selectTab(visibleTabs[idx % visibleTabs.length]);
    +                return false;
    +            }
    +        }
    +    });
    +    reset.click(function() {
    +        notify.html(messages.enterTerm);
    +        resultSection.hide();
    +        activeTab = "";
    +        fixedTab = false;
    +        resultContainer.empty();
    +        input.val('').focus();
    +        setSearchUrl();
    +    });
    +    input.prop("disabled", false);
    +    reset.prop("disabled", false);
    +
    +    var urlParams = new URLSearchParams(window.location.search);
    +    if (urlParams.has("q")) {
    +        input.val(urlParams.get("q"))
    +    }
    +    if (urlParams.has("c")) {
    +        activeTab = urlParams.get("c");
    +        fixedTab = true;
    +    }
    +    if (urlParams.get("r")) {
    +        feelingLucky = true;
    +    }
    +    if (input.val()) {
    +        doPageSearch();
    +    } else {
    +        notify.html(messages.enterTerm);
    +    }
    +    input.select().focus();
    +});
    diff --git a/deliverables/javadoc/search.html b/deliverables/javadoc/search.html
    new file mode 100644
    index 00000000..ce5a2aa9
    --- /dev/null
    +++ b/deliverables/javadoc/search.html
    @@ -0,0 +1,73 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Search</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="search">
    +<meta name="generator" content="javadoc/SearchWriter">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="search-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="index-files/index-1.html">Index</a></li>
    +<li><a href="help-doc.html#search">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<h1 class="title">Search</h1>
    +<div>
    +<input type="text" id="page-search-input" disabled placeholder="Search">
    +<input type="reset" id="page-search-reset" disabled value="Reset" style="margin: 6px;">
    +<details class="page-search-details">
    +<summary id="page-search-expand">Additional resources</summary>
    +</details>
    +</div>
    +<div class="page-search-info">
    +<p>The <a href="help-doc.html#search">help page</a> provides an introduction to the scope and syntax of JavaDoc search.</p>
    +<p>You can use the &lt;ctrl&gt; or &lt;cmd&gt; keys in combination with the left and right arrow keys to switch between result tabs in this page.</p>
    +<p>The URL template below may be used to configure this page as a search engine in browsers that support this feature. It has been tested to work in Google Chrome and Mozilla Firefox. Note that other browsers may not support this feature or require a different URL format.</p>
    +<span id="page-search-link">link</span><button class="copy" id="page-search-copy"><img src="copy.svg" alt="Copy URL"><span data-copied="Copied!">Copy URL</span></button>
    +<p>
    +<input type="checkbox" id="search-redirect" disabled>
    +<label for="search-redirect">Redirect to first result</label></p>
    +</div>
    +<p id="page-search-notify">Loading search index...</p>
    +<div id="result-section" style="display: none;">
    +<div id="result-container"></div>
    +<script type="text/javascript" src="search-page.js"></script>
    +</div>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/search.js b/deliverables/javadoc/search.js
    new file mode 100644
    index 00000000..b2b3c9a1
    --- /dev/null
    +++ b/deliverables/javadoc/search.js
    @@ -0,0 +1,465 @@
    +/*
    + * Copyright (c) 2015, 2022, Oracle and/or its affiliates. All rights reserved.
    + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
    + *
    + * This code is free software; you can redistribute it and/or modify it
    + * under the terms of the GNU General Public License version 2 only, as
    + * published by the Free Software Foundation.  Oracle designates this
    + * particular file as subject to the "Classpath" exception as provided
    + * by Oracle in the LICENSE file that accompanied this code.
    + *
    + * This code is distributed in the hope that it will be useful, but WITHOUT
    + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    + * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    + * version 2 for more details (a copy is included in the LICENSE file that
    + * accompanied this code).
    + *
    + * You should have received a copy of the GNU General Public License version
    + * 2 along with this work; if not, write to the Free Software Foundation,
    + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    + *
    + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    + * or visit www.oracle.com if you need additional information or have any
    + * questions.
    + */
    +"use strict";
    +const messages = {
    +    enterTerm: "Enter a search term",
    +    noResult: "No results found",
    +    oneResult: "Found one result",
    +    manyResults: "Found {0} results",
    +    loading: "Loading search index...",
    +    searching: "Searching...",
    +    redirecting: "Redirecting to first result...",
    +    copyUrl: "Copy URL",
    +    urlCopied: "Copied!"
    +}
    +const categories = {
    +    modules: "Modules",
    +    packages: "Packages",
    +    types: "Classes and Interfaces",
    +    members: "Members",
    +    searchTags: "Search Tags"
    +};
    +const highlight = "<span class='result-highlight'>$&</span>";
    +const NO_MATCH = {};
    +const MAX_RESULTS = 500;
    +function checkUnnamed(name, separator) {
    +    return name === "<Unnamed>" || !name ? "" : name + separator;
    +}
    +function escapeHtml(str) {
    +    return str.replace(/</g, "&lt;").replace(/>/g, "&gt;");
    +}
    +function getHighlightedText(str, boundaries, from, to) {
    +    var start = from;
    +    var text = "";
    +    for (var i = 0; i < boundaries.length; i += 2) {
    +        var b0 = boundaries[i];
    +        var b1 = boundaries[i + 1];
    +        if (b0 >= to || b1 <= from) {
    +            continue;
    +        }
    +        text += escapeHtml(str.slice(start, Math.max(start, b0)));
    +        text += "<span class='result-highlight'>";
    +        text += escapeHtml(str.slice(Math.max(start, b0), Math.min(to, b1)));
    +        text += "</span>";
    +        start = Math.min(to, b1);
    +    }
    +    text += escapeHtml(str.slice(start, to));
    +    return text;
    +}
    +function getURLPrefix(item, category) {
    +    var urlPrefix = "";
    +    var slash = "/";
    +    if (category === "modules") {
    +        return item.l + slash;
    +    } else if (category === "packages" && item.m) {
    +        return item.m + slash;
    +    } else if (category === "types" || category === "members") {
    +        if (item.m) {
    +            urlPrefix = item.m + slash;
    +        } else {
    +            $.each(packageSearchIndex, function(index, it) {
    +                if (it.m && item.p === it.l) {
    +                    urlPrefix = it.m + slash;
    +                }
    +            });
    +        }
    +    }
    +    return urlPrefix;
    +}
    +function getURL(item, category) {
    +    if (item.url) {
    +        return item.url;
    +    }
    +    var url = getURLPrefix(item, category);
    +    if (category === "modules") {
    +        url += "module-summary.html";
    +    } else if (category === "packages") {
    +        if (item.u) {
    +            url = item.u;
    +        } else {
    +            url += item.l.replace(/\./g, '/') + "/package-summary.html";
    +        }
    +    } else if (category === "types") {
    +        if (item.u) {
    +            url = item.u;
    +        } else {
    +            url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.l + ".html";
    +        }
    +    } else if (category === "members") {
    +        url += checkUnnamed(item.p, "/").replace(/\./g, '/') + item.c + ".html" + "#";
    +        if (item.u) {
    +            url += item.u;
    +        } else {
    +            url += item.l;
    +        }
    +    } else if (category === "searchTags") {
    +        url += item.u;
    +    }
    +    item.url = url;
    +    return url;
    +}
    +function createMatcher(term, camelCase) {
    +    if (camelCase && !isUpperCase(term)) {
    +        return null;  // no need for camel-case matcher for lower case query
    +    }
    +    var pattern = "";
    +    var upperCase = [];
    +    term.trim().split(/\s+/).forEach(function(w, index, array) {
    +        var tokens = w.split(/(?=[A-Z,.()<>?[\/])/);
    +        for (var i = 0; i < tokens.length; i++) {
    +            var s = tokens[i];
    +            // ',' and '?' are the only delimiters commonly followed by space in java signatures
    +            pattern += "(" + $.ui.autocomplete.escapeRegex(s).replace(/[,?]/g, "$&\\s*?") + ")";
    +            upperCase.push(false);
    +            var isWordToken =  /\w$/.test(s);
    +            if (isWordToken) {
    +                if (i === tokens.length - 1 && index < array.length - 1) {
    +                    // space in query string matches all delimiters
    +                    pattern += "(.*?)";
    +                    upperCase.push(isUpperCase(s[0]));
    +                } else {
    +                    if (!camelCase && isUpperCase(s) && s.length === 1) {
    +                        pattern += "()";
    +                    } else {
    +                        pattern += "([a-z0-9$<>?[\\]]*?)";
    +                    }
    +                    upperCase.push(isUpperCase(s[0]));
    +                }
    +            } else {
    +                pattern += "()";
    +                upperCase.push(false);
    +            }
    +        }
    +    });
    +    var re = new RegExp(pattern, "gi");
    +    re.upperCase = upperCase;
    +    return re;
    +}
    +function analyzeMatch(matcher, input, startOfName, category) {
    +    var from = startOfName;
    +    matcher.lastIndex = from;
    +    var match = matcher.exec(input);
    +    while (!match && from > 1) {
    +        from = input.lastIndexOf(".", from - 2) + 1;
    +        matcher.lastIndex = from;
    +        match = matcher.exec(input);
    +    }
    +    if (!match) {
    +        return NO_MATCH;
    +    }
    +    var boundaries = [];
    +    var matchEnd = match.index + match[0].length;
    +    var leftParen = input.indexOf("(");
    +    // exclude peripheral matches
    +    if (category !== "modules" && category !== "searchTags") {
    +        if (leftParen > -1 && leftParen < match.index) {
    +            return NO_MATCH;
    +        } else if (startOfName - 1 >= matchEnd) {
    +            return NO_MATCH;
    +        }
    +    }
    +    var endOfName = leftParen > -1 ? leftParen : input.length;
    +    var score = 5;
    +    var start = match.index;
    +    var prevEnd = -1;
    +    for (var i = 1; i < match.length; i += 2) {
    +        var isUpper = isUpperCase(input[start]);
    +        var isMatcherUpper = matcher.upperCase[i];
    +        // capturing groups come in pairs, match and non-match
    +        boundaries.push(start, start + match[i].length);
    +        // make sure groups are anchored on a left word boundary
    +        var prevChar = input[start - 1] || "";
    +        var nextChar = input[start + 1] || "";
    +        if (start !== 0 && !/[\W_]/.test(prevChar) && !/[\W_]/.test(input[start])) {
    +            if (isUpper && (isLowerCase(prevChar) || isLowerCase(nextChar))) {
    +                score -= 0.1;
    +            } else if (isMatcherUpper && start === prevEnd) {
    +                score -= isUpper ? 0.1 : 1.0;
    +            } else {
    +                return NO_MATCH;
    +            }
    +        }
    +        prevEnd = start + match[i].length;
    +        start += match[i].length + match[i + 1].length;
    +
    +        // lower score for parts of the name that are missing
    +        if (match[i + 1] && prevEnd < endOfName) {
    +            score -= rateNoise(match[i + 1]);
    +        }
    +    }
    +    // lower score if a type name contains unmatched camel-case parts
    +    if (input[matchEnd - 1] !== "." && endOfName > matchEnd)
    +        score -= rateNoise(input.slice(matchEnd, endOfName));
    +    score -= rateNoise(input.slice(0, Math.max(startOfName, match.index)));
    +
    +    if (score <= 0) {
    +        return NO_MATCH;
    +    }
    +    return {
    +        input: input,
    +        score: score,
    +        category: category,
    +        boundaries: boundaries
    +    };
    +}
    +function isUpperCase(s) {
    +    return s !== s.toLowerCase();
    +}
    +function isLowerCase(s) {
    +    return s !== s.toUpperCase();
    +}
    +function rateNoise(str) {
    +    return (str.match(/([.(])/g) || []).length / 5
    +         + (str.match(/([A-Z]+)/g) || []).length / 10
    +         +  str.length / 20;
    +}
    +function doSearch(request, response) {
    +    var term = request.term.trim();
    +    var maxResults = request.maxResults || MAX_RESULTS;
    +    if (term.length === 0) {
    +        return this.close();
    +    }
    +    var matcher = {
    +        plainMatcher: createMatcher(term, false),
    +        camelCaseMatcher: createMatcher(term, true)
    +    }
    +    var indexLoaded = indexFilesLoaded();
    +
    +    function getPrefix(item, category) {
    +        switch (category) {
    +            case "packages":
    +                return checkUnnamed(item.m, "/");
    +            case "types":
    +                return checkUnnamed(item.p, ".");
    +            case "members":
    +                return checkUnnamed(item.p, ".") + item.c + ".";
    +            default:
    +                return "";
    +        }
    +    }
    +    function useQualifiedName(category) {
    +        switch (category) {
    +            case "packages":
    +                return /[\s/]/.test(term);
    +            case "types":
    +            case "members":
    +                return /[\s.]/.test(term);
    +            default:
    +                return false;
    +        }
    +    }
    +    function searchIndex(indexArray, category) {
    +        var matches = [];
    +        if (!indexArray) {
    +            if (!indexLoaded) {
    +                matches.push({ l: messages.loading, category: category });
    +            }
    +            return matches;
    +        }
    +        $.each(indexArray, function (i, item) {
    +            var prefix = getPrefix(item, category);
    +            var simpleName = item.l;
    +            var qualifiedName = prefix + simpleName;
    +            var useQualified = useQualifiedName(category);
    +            var input = useQualified ? qualifiedName : simpleName;
    +            var startOfName = useQualified ? prefix.length : 0;
    +            var m = analyzeMatch(matcher.plainMatcher, input, startOfName, category);
    +            if (m === NO_MATCH && matcher.camelCaseMatcher) {
    +                m = analyzeMatch(matcher.camelCaseMatcher, input, startOfName, category);
    +            }
    +            if (m !== NO_MATCH) {
    +                m.indexItem = item;
    +                m.prefix = prefix;
    +                if (!useQualified) {
    +                    m.input = qualifiedName;
    +                    m.boundaries = m.boundaries.map(function(b) {
    +                        return b + prefix.length;
    +                    });
    +                }
    +                matches.push(m);
    +            }
    +            return matches.length < maxResults;
    +        });
    +        return matches.sort(function(e1, e2) {
    +            return e2.score - e1.score;
    +        });
    +    }
    +
    +    var result = searchIndex(moduleSearchIndex, "modules")
    +         .concat(searchIndex(packageSearchIndex, "packages"))
    +         .concat(searchIndex(typeSearchIndex, "types"))
    +         .concat(searchIndex(memberSearchIndex, "members"))
    +         .concat(searchIndex(tagSearchIndex, "searchTags"));
    +
    +    if (!indexLoaded) {
    +        updateSearchResults = function() {
    +            doSearch(request, response);
    +        }
    +    } else {
    +        updateSearchResults = function() {};
    +    }
    +    response(result);
    +}
    +// JQuery search menu implementation
    +$.widget("custom.catcomplete", $.ui.autocomplete, {
    +    _create: function() {
    +        this._super();
    +        this.widget().menu("option", "items", "> .result-item");
    +        // workaround for search result scrolling
    +        this.menu._scrollIntoView = function _scrollIntoView( item ) {
    +            var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
    +            if ( this._hasScroll() ) {
    +                borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
    +                paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
    +                offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
    +                scroll = this.activeMenu.scrollTop();
    +                elementHeight = this.activeMenu.height() - 26;
    +                itemHeight = item.outerHeight();
    +
    +                if ( offset < 0 ) {
    +                    this.activeMenu.scrollTop( scroll + offset );
    +                } else if ( offset + itemHeight > elementHeight ) {
    +                    this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
    +                }
    +            }
    +        };
    +    },
    +    _renderMenu: function(ul, items) {
    +        var currentCategory = "";
    +        var widget = this;
    +        widget.menu.bindings = $();
    +        $.each(items, function(index, item) {
    +            if (item.category && item.category !== currentCategory) {
    +                ul.append("<li class='ui-autocomplete-category'>" + categories[item.category] + "</li>");
    +                currentCategory = item.category;
    +            }
    +            var li = widget._renderItemData(ul, item);
    +            if (item.category) {
    +                li.attr("aria-label", categories[item.category] + " : " + item.l);
    +            } else {
    +                li.attr("aria-label", item.l);
    +            }
    +            li.attr("class", "result-item");
    +        });
    +        ul.append("<li class='ui-static-link'><a href='" + pathtoroot + "search.html?q="
    +            + encodeURI(widget.term) + "'>Go to search page</a></li>");
    +    },
    +    _renderItem: function(ul, item) {
    +        var li = $("<li/>").appendTo(ul);
    +        var div = $("<div/>").appendTo(li);
    +        var label = item.l
    +            ? item.l
    +            : getHighlightedText(item.input, item.boundaries, 0, item.input.length);
    +        var idx = item.indexItem;
    +        if (item.category === "searchTags" && idx.h) {
    +            if (idx.d) {
    +                div.html(label + "<span class='search-tag-holder-result'> (" + idx.h + ")</span><br><span class='search-tag-desc-result'>"
    +                    + idx.d + "</span><br>");
    +            } else {
    +                div.html(label + "<span class='search-tag-holder-result'> (" + idx.h + ")</span>");
    +            }
    +        } else {
    +            div.html(label);
    +        }
    +        return li;
    +    }
    +});
    +$(function() {
    +    var expanded = false;
    +    var windowWidth;
    +    function collapse() {
    +        if (expanded) {
    +            $("div#navbar-top").removeAttr("style");
    +            $("button#navbar-toggle-button")
    +                .removeClass("expanded")
    +                .attr("aria-expanded", "false");
    +            expanded = false;
    +        }
    +    }
    +    $("button#navbar-toggle-button").click(function (e) {
    +        if (expanded) {
    +            collapse();
    +        } else {
    +            var navbar = $("div#navbar-top");
    +            navbar.height(navbar.prop("scrollHeight"));
    +            $("button#navbar-toggle-button")
    +                .addClass("expanded")
    +                .attr("aria-expanded", "true");
    +            expanded = true;
    +            windowWidth = window.innerWidth;
    +        }
    +    });
    +    $("ul.sub-nav-list-small li a").click(collapse);
    +    $("input#search-input").focus(collapse);
    +    $("main").click(collapse);
    +    $("section[id] > :header, :header[id], :header:has(a[id])").hover(
    +        function () {
    +            $(this).append($("<button class='copy copy-header' onclick='copyUrl(this)'> " +
    +                "<img src='" + pathtoroot + "copy.svg' alt='" + messages.copyUrl + "'> " +
    +                "<span data-copied='" + messages.urlCopied + "'></span></button>"));
    +        },
    +        function () {
    +            $(this).find("button:last").remove();
    +        }
    +    );
    +    $(window).on("orientationchange", collapse).on("resize", function(e) {
    +        if (expanded && windowWidth !== window.innerWidth) collapse();
    +    });
    +    var search = $("#search-input");
    +    var reset = $("#reset-button");
    +    search.catcomplete({
    +        minLength: 1,
    +        delay: 200,
    +        source: doSearch,
    +        response: function(event, ui) {
    +            if (!ui.content.length) {
    +                ui.content.push({ l: messages.noResult });
    +            } else {
    +                $("#search-input").empty();
    +            }
    +        },
    +        autoFocus: true,
    +        focus: function(event, ui) {
    +            return false;
    +        },
    +        position: {
    +            collision: "flip"
    +        },
    +        select: function(event, ui) {
    +            if (ui.item.indexItem) {
    +                var url = getURL(ui.item.indexItem, ui.item.category);
    +                window.location.href = pathtoroot + url;
    +                $("#search-input").focus();
    +            }
    +        }
    +    });
    +    search.val('');
    +    search.prop("disabled", false);
    +    reset.prop("disabled", false);
    +    reset.click(function() {
    +        search.val('').focus();
    +    });
    +    search.focus();
    +});
    diff --git a/deliverables/javadoc/serialized-form.html b/deliverables/javadoc/serialized-form.html
    new file mode 100644
    index 00000000..8db88587
    --- /dev/null
    +++ b/deliverables/javadoc/serialized-form.html
    @@ -0,0 +1,1633 @@
    +<!DOCTYPE HTML>
    +<html lang="it">
    +<head>
    +<!-- Generated by javadoc (19) on Fri Jun 30 10:06:56 CEST 2023 -->
    +<title>Serialized Form</title>
    +<meta name="viewport" content="width=device-width, initial-scale=1">
    +<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    +<meta name="dc.created" content="2023-06-30">
    +<meta name="description" content="serialized forms">
    +<meta name="generator" content="javadoc/SerializedFormWriterImpl">
    +<link rel="stylesheet" type="text/css" href="stylesheet.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="script-dir/jquery-ui.min.css" title="Style">
    +<link rel="stylesheet" type="text/css" href="jquery-ui.overrides.css" title="Style">
    +<script type="text/javascript" src="script.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-3.6.0.min.js"></script>
    +<script type="text/javascript" src="script-dir/jquery-ui.min.js"></script>
    +</head>
    +<body class="serialized-form-page">
    +<script type="text/javascript">var pathtoroot = "./";
    +loadScripts(document, 'script');</script>
    +<noscript>
    +<div>JavaScript is disabled on your browser.</div>
    +</noscript>
    +<div class="flex-box">
    +<header role="banner" class="flex-header">
    +<nav role="navigation">
    +<!-- ========= START OF TOP NAVBAR ======= -->
    +<div class="top-nav" id="navbar-top"><button id="navbar-toggle-button" aria-controls="navbar-top" aria-expanded="false" aria-label="Toggle navigation links"><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span><span class="nav-bar-toggle-icon">&nbsp;</span></button>
    +<div class="skip-nav"><a href="#skip-navbar-top" title="Skip navigation links">Skip navigation links</a></div>
    +<ul id="navbar-top-firstrow" class="nav-list" title="Navigation">
    +<li><a href="index.html">Overview</a></li>
    +<li>Package</li>
    +<li>Class</li>
    +<li><a href="overview-tree.html">Tree</a></li>
    +<li><a href="index-files/index-1.html">Index</a></li>
    +<li><a href="help-doc.html#serialized-form">Help</a></li>
    +</ul>
    +</div>
    +<div class="sub-nav">
    +<div id="navbar-sub-list"></div>
    +<div class="nav-list-search"><a href="search.html">SEARCH</a>
    +<input type="text" id="search-input" disabled placeholder="Search">
    +<input type="reset" id="reset-button" disabled value="reset">
    +</div>
    +</div>
    +<!-- ========= END OF TOP NAVBAR ========= -->
    +<span class="skip-nav" id="skip-navbar-top"></span></nav>
    +</header>
    +<div class="flex-content">
    +<main role="main">
    +<div class="header">
    +<h1 title="Serialized Form" class="title">Serialized Form</h1>
    +</div>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/client/package-summary.html">it.polimi.is23am10.client</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.client.Client">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">it.polimi.is23am10.client.Client</a></h3>
    +<div class="type-signature">class Client extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/server/UnicastRemoteObject.html" title="class or interface in java.rmi.server" class="external-link">UnicastRemoteObject</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>ALARM_INITIAL_DELAY_MS</h5>
    +<pre>int ALARM_INITIAL_DELAY_MS</pre>
    +<div class="block">Client alarm initial delay in milliseconds.</div>
    +</li>
    +<li class="block-list">
    +<h5>ALARM_INTERVAL_MS</h5>
    +<pre>int ALARM_INTERVAL_MS</pre>
    +<div class="block">Client alarm interval in milliseconds.</div>
    +</li>
    +<li class="block-list">
    +<h5>clientStatus</h5>
    +<pre><a href="it/polimi/is23am10/client/Client.ClientGameStatus.html" title="enum class in it.polimi.is23am10.client">Client.ClientGameStatus</a> clientStatus</pre>
    +<div class="block">Current status of the client.</div>
    +</li>
    +<li class="block-list">
    +<h5>gameIdRef</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a> gameIdRef</pre>
    +<div class="block">Game id reference.</div>
    +</li>
    +<li class="block-list">
    +<h5>gameRefLock</h5>
    +<pre>it.polimi.is23am10.client.LockObject gameRefLock</pre>
    +<div class="block">Custom lock object.</div>
    +</li>
    +<li class="block-list">
    +<h5>hasDuplicateLock</h5>
    +<pre>it.polimi.is23am10.client.LockObject hasDuplicateLock</pre>
    +<div class="block">Custom lock object.</div>
    +</li>
    +<li class="block-list">
    +<h5>hasDuplicateName</h5>
    +<pre>boolean hasDuplicateName</pre>
    +<div class="block">Duplicate name error flag.</div>
    +</li>
    +<li class="block-list">
    +<h5>MAX_PLAYER_NAME_LENGTH</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> MAX_PLAYER_NAME_LENGTH</pre>
    +<div class="block">Maximum player name length.</div>
    +</li>
    +<li class="block-list">
    +<h5>requestedDisconnection</h5>
    +<pre>boolean requestedDisconnection</pre>
    +<div class="block">Clean disconnection request.</div>
    +</li>
    +<li class="block-list">
    +<h5>userInterface</h5>
    +<pre><a href="it/polimi/is23am10/client/userinterface/UserInterface.html" title="interface in it.polimi.is23am10.client.userinterface">UserInterface</a> userInterface</pre>
    +<div class="block">Interface used for communicating with the user. Can be either graphical or textual. Only output
    + methods are exposed by interface.</div>
    +</li>
    +<li class="block-list">
    +<h5>virtualView</h5>
    +<pre><a href="it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualView</a> virtualView</pre>
    +<div class="block">Instance of the game currently played on client. Initially null, filled when joining games,
    + updated constantly at each turn with the updated instance arriving in playerConnector's queue
    + Completely replaced when starting new games.</div>
    +</li>
    +<li class="block-list">
    +<h5>virtualViewLock</h5>
    +<pre>it.polimi.is23am10.client.LockObject virtualViewLock</pre>
    +<div class="block">Custom lock object.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.client.RMIClient">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/client/RMIClient.html" title="class in it.polimi.is23am10.client">it.polimi.is23am10.client.RMIClient</a></h3>
    +<div class="type-signature">class RMIClient extends <a href="it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>rmiRegistry</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.rmi/java/rmi/registry/Registry.html" title="class or interface in java.rmi.registry" class="external-link">Registry</a> rmiRegistry</pre>
    +<div class="block">The rmi registry.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.client.SocketClient">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/client/SocketClient.html" title="class in it.polimi.is23am10.client">it.polimi.is23am10.client.SocketClient</a></h3>
    +<div class="type-signature">class SocketClient extends <a href="it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client">Client</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>ackWaitLock</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> ackWaitLock</pre>
    +<div class="block">Lock for waitingForACK flag.</div>
    +</li>
    +<li class="block-list">
    +<h5>br</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/BufferedReader.html" title="class or interface in java.io" class="external-link">BufferedReader</a> br</pre>
    +<div class="block">The buffer reader instance to be linked with the <code>SocketClient.dis</code>.</div>
    +</li>
    +<li class="block-list">
    +<h5>BUFFER_LENGHT</h5>
    +<pre>int BUFFER_LENGHT</pre>
    +<div class="block">The <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/BufferedReader.html" title="class or interface in java.io" class="external-link"><code>BufferedReader</code></a> buffer size.</div>
    +</li>
    +<li class="block-list">
    +<h5>dis</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/DataInputStream.html" title="class or interface in java.io" class="external-link">DataInputStream</a> dis</pre>
    +<div class="block">The input stream instance to be linked with
    + <a href="it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html#getConnector()"><code>PlayerConnectorSocket.getConnector()</code></a>.</div>
    +</li>
    +<li class="block-list">
    +<h5>snoozer</h5>
    +<pre><a href="it/polimi/is23am10/client/interfaces/AlarmConsumer.html" title="interface in it.polimi.is23am10.client.interfaces">AlarmConsumer</a> snoozer</pre>
    +<div class="block">Socket alarm snoozer.</div>
    +</li>
    +<li class="block-list">
    +<h5>waitingForACK</h5>
    +<pre>boolean waitingForACK</pre>
    +<div class="block">Flag used to signal the client sent a snooze command and
    + is waiting for the ACK reply.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/client/exceptions/package-summary.html">it.polimi.is23am10.client.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.client.exceptions.ForceCloseApplicationException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.html" title="class in it.polimi.is23am10.client.exceptions">it.polimi.is23am10.client.exceptions.ForceCloseApplicationException</a></h3>
    +<div class="type-signature">class ForceCloseApplicationException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/client/userinterface/package-summary.html">it.polimi.is23am10.client.userinterface</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.client.userinterface.CommandLineInterface">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/client/userinterface/CommandLineInterface.html" title="class in it.polimi.is23am10.client.userinterface">it.polimi.is23am10.client.userinterface.CommandLineInterface</a></h3>
    +<div class="type-signature">class CommandLineInterface extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>checkForUserInput</h5>
    +<pre>boolean checkForUserInput</pre>
    +<div class="block">Control flag used to enable or disable user polling.</div>
    +</li>
    +<li class="block-list">
    +<h5>ow</h5>
    +<pre><a href="it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper</a> ow</pre>
    +<div class="block">Output Wrapper, entrypoint for all UI output functions.</div>
    +</li>
    +<li class="block-list">
    +<h5>userInputList</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt; userInputList</pre>
    +<div class="block">Queue containing all the inputs the user sent trough readline.
    + Content to be consumed by client controller on premise.</div>
    +</li>
    +<li class="block-list">
    +<h5>userInputLock</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> userInputLock</pre>
    +<div class="block">Lock object for checkForUserInput flag.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.client.userinterface.GraphicUserInterface">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/client/userinterface/GraphicUserInterface.html" title="class in it.polimi.is23am10.client.userinterface">it.polimi.is23am10.client.userinterface.GraphicUserInterface</a></h3>
    +<div class="type-signature">class GraphicUserInterface extends javafx.application.Application implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/client/userinterface/helpers/package-summary.html">it.polimi.is23am10.client.userinterface.helpers</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.client.userinterface.helpers.OutputWrapper">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers">it.polimi.is23am10.client.userinterface.helpers.OutputWrapper</a></h3>
    +<div class="type-signature">class OutputWrapper extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>CLEAN_SCREEN_REPS</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> CLEAN_SCREEN_REPS</pre>
    +</li>
    +<li class="block-list">
    +<h5>debugTemplates</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.OutputLevel.html" title="enum class in it.polimi.is23am10.client.userinterface.helpers">OutputWrapper.OutputLevel</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a>&gt; debugTemplates</pre>
    +<div class="block">A map that associates output levels to their string
    + template. A template uses ANSI codes to display colors.</div>
    +</li>
    +<li class="block-list">
    +<h5>showDebug</h5>
    +<pre>boolean showDebug</pre>
    +<div class="block">A flag relative to the instance of <a href="it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.html" title="class in it.polimi.is23am10.client.userinterface.helpers"><code>OutputWrapper</code></a>
    + set with constructor, used for showing or hiding debug lines.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/command/package-summary.html">it.polimi.is23am10.server.command</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.command.AbstractCommand">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.AbstractCommand</a></h3>
    +<div class="type-signature">class AbstractCommand extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>opcode</h5>
    +<pre><a href="it/polimi/is23am10/server/command/AbstractCommand.Opcode.html" title="enum class in it.polimi.is23am10.server.command">AbstractCommand.Opcode</a> opcode</pre>
    +<div class="block">The opcode instance for the current command instance.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.command.AddPlayerCommand">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/command/AddPlayerCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.AddPlayerCommand</a></h3>
    +<div class="type-signature">class AddPlayerCommand extends <a href="it/polimi/is23am10/server/command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +<li class="block-list">
    +<h5>gameId</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a> gameId</pre>
    +<div class="block">The game id reference.</div>
    +</li>
    +<li class="block-list">
    +<h5>playerName</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> playerName</pre>
    +<div class="block">The player name to add.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.command.GetAvailableGamesCommand">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/command/GetAvailableGamesCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.GetAvailableGamesCommand</a></h3>
    +<div class="type-signature">class GetAvailableGamesCommand extends <a href="it/polimi/is23am10/server/command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.command.MoveTilesCommand">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/command/MoveTilesCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.MoveTilesCommand</a></h3>
    +<div class="type-signature">class MoveTilesCommand extends <a href="it/polimi/is23am10/server/command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +<li class="block-list">
    +<h5>gameId</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a> gameId</pre>
    +<div class="block">Game id to specify in which match this command
    + is executed. Must match with game currently playing.</div>
    +</li>
    +<li class="block-list">
    +<h5>moves</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>,<wbr><a href="it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">Coordinates</a>&gt; moves</pre>
    +<div class="block">Map that associates the position of a picked tile
    + on the <a href="it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board"><code>Board</code></a> to the destination position to move
    + that same tile inside user's <a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf"><code>Bookshelf</code></a>.</div>
    +</li>
    +<li class="block-list">
    +<h5>movingPlayer</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> movingPlayer</pre>
    +<div class="block">The player who calls the operation.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.command.SendChatMessageCommand">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/command/SendChatMessageCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.SendChatMessageCommand</a></h3>
    +<div class="type-signature">class SendChatMessageCommand extends <a href="it/polimi/is23am10/server/command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +<li class="block-list">
    +<h5>msg</h5>
    +<pre><a href="it/polimi/is23am10/server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">ChatMessage</a> msg</pre>
    +<div class="block">Chat message to be sent</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.command.SnoozeGameTimerCommand">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/command/SnoozeGameTimerCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.SnoozeGameTimerCommand</a></h3>
    +<div class="type-signature">class SnoozeGameTimerCommand extends <a href="it/polimi/is23am10/server/command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +<li class="block-list">
    +<h5>playerName</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> playerName</pre>
    +<div class="block">The player name who has snoozed the game timer.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.command.StartGameCommand">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/command/StartGameCommand.html" title="class in it.polimi.is23am10.server.command">it.polimi.is23am10.server.command.StartGameCommand</a></h3>
    +<div class="type-signature">class StartGameCommand extends <a href="it/polimi/is23am10/server/command/AbstractCommand.html" title="class in it.polimi.is23am10.server.command">AbstractCommand</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +<li class="block-list">
    +<h5>maxPlayers</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> maxPlayers</pre>
    +<div class="block">The chosen max player value.</div>
    +</li>
    +<li class="block-list">
    +<h5>startingPlayerName</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> startingPlayerName</pre>
    +<div class="block">The player name who has started a game.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/controller/exceptions/package-summary.html">it.polimi.is23am10.server.controller.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.controller.exceptions.CommandSerializationErrorException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/controller/exceptions/CommandSerializationErrorException.html" title="class in it.polimi.is23am10.server.controller.exceptions">it.polimi.is23am10.server.controller.exceptions.CommandSerializationErrorException</a></h3>
    +<div class="type-signature">class CommandSerializationErrorException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/controller/exceptions/NullGameHandlerInstance.html" title="class in it.polimi.is23am10.server.controller.exceptions">it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance</a></h3>
    +<div class="type-signature">class NullGameHandlerInstance extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.controller.exceptions.NullRmiServerException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/controller/exceptions/NullRmiServerException.html" title="class in it.polimi.is23am10.server.controller.exceptions">it.polimi.is23am10.server.controller.exceptions.NullRmiServerException</a></h3>
    +<div class="type-signature">class NullRmiServerException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.controller.exceptions.NullRmiStubException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/controller/exceptions/NullRmiStubException.html" title="class in it.polimi.is23am10.server.controller.exceptions">it.polimi.is23am10.server.controller.exceptions.NullRmiStubException</a></h3>
    +<div class="type-signature">class NullRmiStubException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/RuntimeException.html" title="class or interface in java.lang" class="external-link">RuntimeException</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/factory/exceptions/package-summary.html">it.polimi.is23am10.server.model.factory.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/factory/exceptions/DuplicatePlayerNameException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException</a></h3>
    +<div class="type-signature">class DuplicatePlayerNameException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/factory/exceptions/NullPlayerNamesException.html" title="class in it.polimi.is23am10.server.model.factory.exceptions">it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException</a></h3>
    +<div class="type-signature">class NullPlayerNamesException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/game/package-summary.html">it.polimi.is23am10.server.model.game</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.game.Game">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game">it.polimi.is23am10.server.model.game.Game</a></h3>
    +<div class="type-signature">class Game extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>activePlayer</h5>
    +<pre><a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a> activePlayer</pre>
    +<div class="block">Player currently playing.</div>
    +</li>
    +<li class="block-list">
    +<h5>firstPlayer</h5>
    +<pre><a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a> firstPlayer</pre>
    +<div class="block">A randomly chosen first player of the game.</div>
    +</li>
    +<li class="block-list">
    +<h5>gameBoard</h5>
    +<pre><a href="it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a> gameBoard</pre>
    +<div class="block">The instance <a href="it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board"><code>Board</code></a> type.</div>
    +</li>
    +<li class="block-list">
    +<h5>gameId</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a> gameId</pre>
    +<div class="block">A randomly generated <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link"><code>UUID</code></a> id.</div>
    +</li>
    +<li class="block-list">
    +<h5>maxPlayers</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> maxPlayers</pre>
    +<div class="block">The max number of players.
    + Setting a default value to avoid undefined behaviors.</div>
    +</li>
    +<li class="block-list">
    +<h5>players</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&gt; players</pre>
    +<div class="block">List of <a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player"><code>Player</code></a> type.
    + This instance must never be null.</div>
    +</li>
    +<li class="block-list">
    +<h5>sharedCards</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="it/polimi/is23am10/server/model/items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">SharedCard</a>&gt; sharedCards</pre>
    +<div class="block">List of <a href="it/polimi/is23am10/server/model/items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card"><code>SharedCard</code></a> type containing two randomly selected
    + shared cards for this game.</div>
    +</li>
    +<li class="block-list">
    +<h5>status</h5>
    +<pre><a href="it/polimi/is23am10/server/model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a> status</pre>
    +<div class="block">The current status of the game.</div>
    +</li>
    +<li class="block-list">
    +<h5>winnerPlayer</h5>
    +<pre><a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a> winnerPlayer</pre>
    +<div class="block">Winner player.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/game/exceptions/package-summary.html">it.polimi.is23am10.server.model.game.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.game.exceptions.FullGameException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/game/exceptions/FullGameException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">it.polimi.is23am10.server.model.game.exceptions.FullGameException</a></h3>
    +<div class="type-signature">class FullGameException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.game.exceptions.InvalidBoardTileSelectionException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/game/exceptions/InvalidBoardTileSelectionException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">it.polimi.is23am10.server.model.game.exceptions.InvalidBoardTileSelectionException</a></h3>
    +<div class="type-signature">class InvalidBoardTileSelectionException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.game.exceptions.InvalidMaxPlayerException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/game/exceptions/InvalidMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">it.polimi.is23am10.server.model.game.exceptions.InvalidMaxPlayerException</a></h3>
    +<div class="type-signature">class InvalidMaxPlayerException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.game.exceptions.InvalidPlayersNumberException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/game/exceptions/InvalidPlayersNumberException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">it.polimi.is23am10.server.model.game.exceptions.InvalidPlayersNumberException</a></h3>
    +<div class="type-signature">class InvalidPlayersNumberException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/game/exceptions/NullAssignedPatternException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException</a></h3>
    +<div class="type-signature">class NullAssignedPatternException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.game.exceptions.NullMaxPlayerException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/game/exceptions/NullMaxPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">it.polimi.is23am10.server.model.game.exceptions.NullMaxPlayerException</a></h3>
    +<div class="type-signature">class NullMaxPlayerException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.game.exceptions.NullPlayerException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/game/exceptions/NullPlayerException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">it.polimi.is23am10.server.model.game.exceptions.NullPlayerException</a></h3>
    +<div class="type-signature">class NullPlayerException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.game.exceptions.PlayerNotFoundException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/game/exceptions/PlayerNotFoundException.html" title="class in it.polimi.is23am10.server.model.game.exceptions">it.polimi.is23am10.server.model.game.exceptions.PlayerNotFoundException</a></h3>
    +<div class="type-signature">class PlayerNotFoundException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/items/board/package-summary.html">it.polimi.is23am10.server.model.items.board</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.board.Board">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">it.polimi.is23am10.server.model.items.board.Board</a></h3>
    +<div class="type-signature">class Board extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>boardGrid</h5>
    +<pre><a href="it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>[][] boardGrid</pre>
    +<div class="block">A fixed 2d array referencing the physical grid instance.</div>
    +</li>
    +<li class="block-list">
    +<h5>numOfPlayers</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> numOfPlayers</pre>
    +<div class="block">The number of players of the current grid.</div>
    +</li>
    +<li class="block-list">
    +<h5>tileSack</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>&gt; tileSack</pre>
    +<div class="block">A list containing the available tiles.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/items/board/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.board.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.board.exceptions.BoardGridColIndexOutOfBoundsException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/board/exceptions/BoardGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">it.polimi.is23am10.server.model.items.board.exceptions.BoardGridColIndexOutOfBoundsException</a></h3>
    +<div class="type-signature">class BoardGridColIndexOutOfBoundsException extends <a href="it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.board.exceptions.BoardGridRowIndexOutOfBoundsException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/board/exceptions/BoardGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">it.polimi.is23am10.server.model.items.board.exceptions.BoardGridRowIndexOutOfBoundsException</a></h3>
    +<div class="type-signature">class BoardGridRowIndexOutOfBoundsException extends <a href="it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.board.exceptions.InvalidNumOfPlayersException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/board/exceptions/InvalidNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">it.polimi.is23am10.server.model.items.board.exceptions.InvalidNumOfPlayersException</a></h3>
    +<div class="type-signature">class InvalidNumOfPlayersException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.board.exceptions.NullNumOfPlayersException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/board/exceptions/NullNumOfPlayersException.html" title="class in it.polimi.is23am10.server.model.items.board.exceptions">it.polimi.is23am10.server.model.items.board.exceptions.NullNumOfPlayersException</a></h3>
    +<div class="type-signature">class NullNumOfPlayersException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/items/bookshelf/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">it.polimi.is23am10.server.model.items.bookshelf.Bookshelf</a></h3>
    +<div class="type-signature">class Bookshelf extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>bookshelfGrid</h5>
    +<pre><a href="it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">Tile</a>[][] bookshelfGrid</pre>
    +<div class="block">A fixed 2d array referencing the physical bookshelf instance.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.bookshelf.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException</a></h3>
    +<div class="type-signature">class BookshelfGridColIndexOutOfBoundsException extends <a href="it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">ColIndexOutOfBoundsException</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/BookshelfGridRowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException</a></h3>
    +<div class="type-signature">class BookshelfGridRowIndexOutOfBoundsException extends <a href="it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">RowIndexOutOfBoundsException</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.bookshelf.exceptions.NullTileException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/NullTileException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">it.polimi.is23am10.server.model.items.bookshelf.exceptions.NullTileException</a></h3>
    +<div class="type-signature">class NullTileException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongCharBookshelfStringException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongCharBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongCharBookshelfStringException</a></h3>
    +<div class="type-signature">class WrongCharBookshelfStringException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongLengthBookshelfStringException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/bookshelf/exceptions/WrongLengthBookshelfStringException.html" title="class in it.polimi.is23am10.server.model.items.bookshelf.exceptions">it.polimi.is23am10.server.model.items.bookshelf.exceptions.WrongLengthBookshelfStringException</a></h3>
    +<div class="type-signature">class WrongLengthBookshelfStringException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/items/card/package-summary.html">it.polimi.is23am10.server.model.items.card</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.card.AbstractCard">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">it.polimi.is23am10.server.model.items.card.AbstractCard</a></h3>
    +<div class="type-signature">class AbstractCard extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.card.PrivateCard">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/model/items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">it.polimi.is23am10.server.model.items.card.PrivateCard</a></h3>
    +<div class="type-signature">class PrivateCard extends <a href="it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;,<wbr><a href="it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern">PrivatePattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Function.html" title="class or interface in java.util.function" class="external-link">Function</a>&lt;<a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt;&gt; implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>matchedBlocksCount</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> matchedBlocksCount</pre>
    +<div class="block">A counter for the number of matched blocks in the <a href="it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a>.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.card.SharedCard">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/model/items/card/SharedCard.html" title="class in it.polimi.is23am10.server.model.items.card">it.polimi.is23am10.server.model.items.card.SharedCard</a></h3>
    +<div class="type-signature">class SharedCard extends <a href="it/polimi/is23am10/server/model/items/card/AbstractCard.html" title="class in it.polimi.is23am10.server.model.items.card">AbstractCard</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;,<wbr><a href="it/polimi/is23am10/server/model/pattern/SharedPattern.html" title="class in it.polimi.is23am10.server.model.pattern">SharedPattern</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/function/Predicate.html" title="class or interface in java.util.function" class="external-link">Predicate</a>&lt;<a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a>&gt;&gt;&gt; implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>cardWinners</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a>&gt; cardWinners</pre>
    +<div class="block">List of players who satisfied the pattern and won the SB.
    + Used to prevent one player from taking two SBs.</div>
    +</li>
    +<li class="block-list">
    +<h5>scoreBlocks</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt; scoreBlocks</pre>
    +<div class="block">A list of <a href="it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock"><code>ScoreBlock</code></a> instances.
    + They are used to track the score points that the current shared card instance
    + can assign to the players.</div>
    +</li>
    +<li class="block-list">
    +<h5>scoreBlocksMap</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/Map.html" title="class or interface in java.util" class="external-link">Map</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>,<wbr><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt;&gt; scoreBlocksMap</pre>
    +<div class="block">A map to get the correct list of scoreblocks
    + by number of players playing. Order is reversed as first
    + to pick gets the highest valued SB.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/items/card/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.card.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/card/exceptions/AlreadyInitiatedPatternException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException</a></h3>
    +<div class="type-signature">class AlreadyInitiatedPatternException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.card.exceptions.NegativeMatchedBlockCountException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/card/exceptions/NegativeMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">it.polimi.is23am10.server.model.items.card.exceptions.NegativeMatchedBlockCountException</a></h3>
    +<div class="type-signature">class NegativeMatchedBlockCountException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.card.exceptions.NullMatchedBlockCountException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/card/exceptions/NullMatchedBlockCountException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">it.polimi.is23am10.server.model.items.card.exceptions.NullMatchedBlockCountException</a></h3>
    +<div class="type-signature">class NullMatchedBlockCountException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.card.exceptions.NullScoreBlockListException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/card/exceptions/NullScoreBlockListException.html" title="class in it.polimi.is23am10.server.model.items.card.exceptions">it.polimi.is23am10.server.model.items.card.exceptions.NullScoreBlockListException</a></h3>
    +<div class="type-signature">class NullScoreBlockListException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/items/scoreblock/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock</a></h3>
    +<div class="type-signature">class ScoreBlock extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>score</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> score</pre>
    +<div class="block">The value assigned to the current instance of the score block.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/items/scoreblock/exceptions/package-summary.html">it.polimi.is23am10.server.model.items.scoreblock.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/items/scoreblock/exceptions/NotValidScoreBlockValueException.html" title="class in it.polimi.is23am10.server.model.items.scoreblock.exceptions">it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException</a></h3>
    +<div class="type-signature">class NotValidScoreBlockValueException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/items/tile/package-summary.html">it.polimi.is23am10.server.model.items.tile</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.items.tile.Tile">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/model/items/tile/Tile.html" title="class in it.polimi.is23am10.server.model.items.tile">it.polimi.is23am10.server.model.items.tile.Tile</a></h3>
    +<div class="type-signature">class Tile extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>type</h5>
    +<pre><a href="it/polimi/is23am10/server/model/items/tile/Tile.TileType.html" title="enum class in it.polimi.is23am10.server.model.items.tile">Tile.TileType</a> type</pre>
    +<div class="block">The instance Tile type.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/player/package-summary.html">it.polimi.is23am10.server.model.player</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.player.Player">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">it.polimi.is23am10.server.model.player.Player</a></h3>
    +<div class="type-signature">class Player extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>bookshelf</h5>
    +<pre><a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a> bookshelf</pre>
    +<div class="block">The player's bookshelf playground.</div>
    +</li>
    +<li class="block-list">
    +<h5>isActivePlayer</h5>
    +<pre>boolean isActivePlayer</pre>
    +<div class="block">Status of the player.
    + Tells us if he's connected or not.</div>
    +</li>
    +<li class="block-list">
    +<h5>isConnected</h5>
    +<pre>boolean isConnected</pre>
    +<div class="block">Status of the player.
    + Tells us if he's connected or not.</div>
    +</li>
    +<li class="block-list">
    +<h5>playerId</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a> playerId</pre>
    +<div class="block">A randomly generated <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link"><code>UUID</code></a> id.</div>
    +</li>
    +<li class="block-list">
    +<h5>playerName</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> playerName</pre>
    +<div class="block">The player name.
    + Chosen by the player itself.</div>
    +</li>
    +<li class="block-list">
    +<h5>privateCard</h5>
    +<pre><a href="it/polimi/is23am10/server/model/items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card">PrivateCard</a> privateCard</pre>
    +<div class="block">The player's <a href="it/polimi/is23am10/server/model/items/card/PrivateCard.html" title="class in it.polimi.is23am10.server.model.items.card"><code>PrivateCard</code></a> with a specific <a href="it/polimi/is23am10/server/model/pattern/PrivatePattern.html" title="class in it.polimi.is23am10.server.model.pattern"><code>PrivatePattern</code></a>.</div>
    +</li>
    +<li class="block-list">
    +<h5>score</h5>
    +<pre><a href="it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a> score</pre>
    +<div class="block">The score storage for the player.
    + It groups all the possible score values that a player can earn during a game.</div>
    +</li>
    +<li class="block-list">
    +<h5>scoreBlocks</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock">ScoreBlock</a>&gt; scoreBlocks</pre>
    +<div class="block">A list of all <a href="it/polimi/is23am10/server/model/items/scoreblock/ScoreBlock.html" title="class in it.polimi.is23am10.server.model.items.scoreblock"><code>ScoreBlock</code></a> earned by the player.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/player/exceptions/package-summary.html">it.polimi.is23am10.server.model.player.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerBookshelfException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException</a></h3>
    +<div class="type-signature">class NullPlayerBookshelfException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerIdException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException</a></h3>
    +<div class="type-signature">class NullPlayerIdException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerNameException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException</a></h3>
    +<div class="type-signature">class NullPlayerNameException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerPrivateCardException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException</a></h3>
    +<div class="type-signature">class NullPlayerPrivateCardException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreBlocksException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException</a></h3>
    +<div class="type-signature">class NullPlayerScoreBlocksException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/player/exceptions/NullPlayerScoreException.html" title="class in it.polimi.is23am10.server.model.player.exceptions">it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException</a></h3>
    +<div class="type-signature">class NullPlayerScoreException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/score/package-summary.html">it.polimi.is23am10.server.model.score</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.score.Score">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">it.polimi.is23am10.server.model.score.Score</a></h3>
    +<div class="type-signature">class Score extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>bookshelfPoints</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> bookshelfPoints</pre>
    +<div class="block">Integer referencing the points the player receives from
    + the groups of same type tiles in their bookshelf.</div>
    +</li>
    +<li class="block-list">
    +<h5>extraPoint</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> extraPoint</pre>
    +<div class="block">Integer referencing the extra point given to the first player
    + to complete their bookshelf.</div>
    +</li>
    +<li class="block-list">
    +<h5>privatePoints</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> privatePoints</pre>
    +<div class="block">Integer referencing the points the player receives from
    + completing their private (secret) goal.</div>
    +</li>
    +<li class="block-list">
    +<h5>scoreBlockPoints</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> scoreBlockPoints</pre>
    +<div class="block">Integer referencing the points the player receives from
    + completing shared goals.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/model/score/exceptions/package-summary.html">it.polimi.is23am10.server.model.score.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.model.score.exceptions.NullPointsException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/model/score/exceptions/NullPointsException.html" title="class in it.polimi.is23am10.server.model.score.exceptions">it.polimi.is23am10.server.model.score.exceptions.NullPointsException</a></h3>
    +<div class="type-signature">class NullPointsException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/network/gamehandler/exceptions/package-summary.html">it.polimi.is23am10.server.network.gamehandler.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.gamehandler.exceptions.GameSnapshotUpdateException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/network/gamehandler/exceptions/GameSnapshotUpdateException.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">it.polimi.is23am10.server.network.gamehandler.exceptions.GameSnapshotUpdateException</a></h3>
    +<div class="type-signature">class GameSnapshotUpdateException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/network/gamehandler/exceptions/NullPlayerConnector.html" title="class in it.polimi.is23am10.server.network.gamehandler.exceptions">it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector</a></h3>
    +<div class="type-signature">class NullPlayerConnector extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/network/messages/package-summary.html">it.polimi.is23am10.server.network.messages</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.messages.AbstractMessage">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.AbstractMessage</a></h3>
    +<div class="type-signature">class AbstractMessage extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>message</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> message</pre>
    +<div class="block">Message in string. Plaintext or JSON.</div>
    +</li>
    +<li class="block-list">
    +<h5>msgType</h5>
    +<pre><a href="it/polimi/is23am10/server/network/messages/AbstractMessage.MessageType.html" title="enum class in it.polimi.is23am10.server.network.messages">AbstractMessage.MessageType</a> msgType</pre>
    +<div class="block">Type of message sent.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.messages.AvailableGamesMessage">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/messages/AvailableGamesMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.AvailableGamesMessage</a></h3>
    +<div class="type-signature">class AvailableGamesMessage extends <a href="it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +<li class="block-list">
    +<h5>receiver</h5>
    +<pre><a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a> receiver</pre>
    +<div class="block">Player receiving the list.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.messages.ChatMessage">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/messages/ChatMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.ChatMessage</a></h3>
    +<div class="type-signature">class ChatMessage extends <a href="it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +<li class="block-list">
    +<h5>receiver</h5>
    +<pre><a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a> receiver</pre>
    +<div class="block">Not mandatory. Not null if direct message.</div>
    +</li>
    +<li class="block-list">
    +<h5>receiverName</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> receiverName</pre>
    +<div class="block">Not mandatory, used for alt constructor.</div>
    +</li>
    +<li class="block-list">
    +<h5>sender</h5>
    +<pre><a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a> sender</pre>
    +<div class="block">Player sending the message.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.messages.ErrorMessage">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/messages/ErrorMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.ErrorMessage</a></h3>
    +<div class="type-signature">class ErrorMessage extends <a href="it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +<li class="block-list">
    +<h5>errorSeverity</h5>
    +<pre><a href="it/polimi/is23am10/server/network/messages/ErrorMessage.ErrorSeverity.html" title="enum class in it.polimi.is23am10.server.network.messages">ErrorMessage.ErrorSeverity</a> errorSeverity</pre>
    +</li>
    +<li class="block-list">
    +<h5>receiver</h5>
    +<pre><a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a> receiver</pre>
    +<div class="block">Not mandatory. Not null if direct message.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.messages.GameMessage">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/messages/GameMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.GameMessage</a></h3>
    +<div class="type-signature">class GameMessage extends <a href="it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.messages.SnoozeACKMessage">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/messages/SnoozeACKMessage.html" title="class in it.polimi.is23am10.server.network.messages">it.polimi.is23am10.server.network.messages.SnoozeACKMessage</a></h3>
    +<div class="type-signature">class SnoozeACKMessage extends <a href="it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>className</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> className</pre>
    +<div class="block">An utility to be used during deserialization processes.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/network/playerconnector/package-summary.html">it.polimi.is23am10.server.network.playerconnector</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector</a></h3>
    +<div class="type-signature">class AbstractPlayerConnector extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>gameId</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a> gameId</pre>
    +<div class="block">The unique <a href="it/polimi/is23am10/server/model/game/Game.html" title="class in it.polimi.is23am10.server.model.game"><code>Game</code></a> id reference.</div>
    +</li>
    +<li class="block-list">
    +<h5>lastSnoozeMs</h5>
    +<pre>long lastSnoozeMs</pre>
    +<div class="block">The client last alarm snooze time in ms truggered by the alarm.</div>
    +</li>
    +<li class="block-list">
    +<h5>msgQueue</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/concurrent/BlockingQueue.html" title="class or interface in java.util.concurrent" class="external-link">BlockingQueue</a>&lt;<a href="it/polimi/is23am10/server/network/messages/AbstractMessage.html" title="class in it.polimi.is23am10.server.network.messages">AbstractMessage</a>&gt; msgQueue</pre>
    +<div class="block">The connector message queue.</div>
    +</li>
    +<li class="block-list">
    +<h5>player</h5>
    +<pre><a href="it/polimi/is23am10/server/model/player/Player.html" title="class in it.polimi.is23am10.server.model.player">Player</a> player</pre>
    +<div class="block">The player inside a game session.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/playerconnector/PlayerConnectorRmi.html" title="class in it.polimi.is23am10.server.network.playerconnector">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi</a></h3>
    +<div class="type-signature">class PlayerConnectorRmi extends <a href="it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>client</h5>
    +<pre><a href="it/polimi/is23am10/client/IClient.html" title="interface in it.polimi.is23am10.client">IClient</a> client</pre>
    +<div class="block">The <a href="it/polimi/is23am10/client/Client.html" title="class in it.polimi.is23am10.client"><code>Client</code></a> reference.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/playerconnector/PlayerConnectorSocket.html" title="class in it.polimi.is23am10.server.network.playerconnector">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket</a></h3>
    +<div class="type-signature">class PlayerConnectorSocket extends <a href="it/polimi/is23am10/server/network/playerconnector/AbstractPlayerConnector.html" title="class in it.polimi.is23am10.server.network.playerconnector">AbstractPlayerConnector</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/network/playerconnector/exceptions/package-summary.html">it.polimi.is23am10.server.network.playerconnector.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/network/playerconnector/exceptions/NullBlockingQueueException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException</a></h3>
    +<div class="type-signature">class NullBlockingQueueException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.playerconnector.exceptions.NullSocketConnectorException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/server/network/playerconnector/exceptions/NullSocketConnectorException.html" title="class in it.polimi.is23am10.server.network.playerconnector.exceptions">it.polimi.is23am10.server.network.playerconnector.exceptions.NullSocketConnectorException</a></h3>
    +<div class="type-signature">class NullSocketConnectorException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/server/network/virtualview/package-summary.html">it.polimi.is23am10.server.network.virtualview</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.virtualview.VirtualPlayer">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">it.polimi.is23am10.server.network.virtualview.VirtualPlayer</a></h3>
    +<div class="type-signature">class VirtualPlayer extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>bookshelf</h5>
    +<pre><a href="it/polimi/is23am10/server/model/items/bookshelf/Bookshelf.html" title="class in it.polimi.is23am10.server.model.items.bookshelf">Bookshelf</a> bookshelf</pre>
    +<div class="block">Player's bookshelf with its tiles.</div>
    +</li>
    +<li class="block-list">
    +<h5>isConnected</h5>
    +<pre>boolean isConnected</pre>
    +<div class="block">Status of the player.</div>
    +</li>
    +<li class="block-list">
    +<h5>playerId</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a> playerId</pre>
    +<div class="block">Unique player identifier.</div>
    +</li>
    +<li class="block-list">
    +<h5>playerName</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html" title="class or interface in java.lang" class="external-link">String</a> playerName</pre>
    +<div class="block">Player's game name.</div>
    +</li>
    +<li class="block-list">
    +<h5>privateCardIndex</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> privateCardIndex</pre>
    +<div class="block">1-12 number referencing the private card to show.</div>
    +</li>
    +<li class="block-list">
    +<h5>score</h5>
    +<pre><a href="it/polimi/is23am10/server/model/score/Score.html" title="class in it.polimi.is23am10.server.model.score">Score</a> score</pre>
    +<div class="block">Player's score.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.server.network.virtualview.VirtualView">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/server/network/virtualview/VirtualView.html" title="class in it.polimi.is23am10.server.network.virtualview">it.polimi.is23am10.server.network.virtualview.VirtualView</a></h3>
    +<div class="type-signature">class VirtualView extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>activePlayer</h5>
    +<pre><a href="it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a> activePlayer</pre>
    +<div class="block">VirtualPlayer currently playing</div>
    +</li>
    +<li class="block-list">
    +<h5>firstPlayer</h5>
    +<pre><a href="it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a> firstPlayer</pre>
    +<div class="block">VirtualPlayer choosen as first</div>
    +</li>
    +<li class="block-list">
    +<h5>gameBoard</h5>
    +<pre><a href="it/polimi/is23am10/server/model/items/board/Board.html" title="class in it.polimi.is23am10.server.model.items.board">Board</a> gameBoard</pre>
    +<div class="block">Instance of board where tiles are</div>
    +</li>
    +<li class="block-list">
    +<h5>gameId</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/UUID.html" title="class or interface in java.util" class="external-link">UUID</a> gameId</pre>
    +<div class="block">Unique Game identifier</div>
    +</li>
    +<li class="block-list">
    +<h5>maxPlayers</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> maxPlayers</pre>
    +<div class="block">Maximum number of players for this game</div>
    +</li>
    +<li class="block-list">
    +<h5>players</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a>&gt; players</pre>
    +<div class="block">List of virtual players in the game</div>
    +</li>
    +<li class="block-list">
    +<h5>sharedCards</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/util/List.html" title="class or interface in java.util" class="external-link">List</a>&lt;<a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a>&gt; sharedCards</pre>
    +<div class="block">List of the two shared cards index for this game session.</div>
    +</li>
    +<li class="block-list">
    +<h5>status</h5>
    +<pre><a href="it/polimi/is23am10/server/model/game/Game.GameStatus.html" title="enum class in it.polimi.is23am10.server.model.game">Game.GameStatus</a> status</pre>
    +<div class="block">Boolean flag signaling game is over</div>
    +</li>
    +<li class="block-list">
    +<h5>winnerPlayer</h5>
    +<pre><a href="it/polimi/is23am10/server/network/virtualview/VirtualPlayer.html" title="class in it.polimi.is23am10.server.network.virtualview">VirtualPlayer</a> winnerPlayer</pre>
    +<div class="block">VirtualPlayer who won the game</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/utils/package-summary.html">it.polimi.is23am10.utils</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.Coordinates">
    +<h3>Class&nbsp;<a href="it/polimi/is23am10/utils/Coordinates.html" title="class in it.polimi.is23am10.utils">it.polimi.is23am10.utils.Coordinates</a></h3>
    +<div class="type-signature">class Coordinates extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">Object</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +<ul class="block-list">
    +<li>
    +<section class="detail">
    +<h4>Serialized Fields</h4>
    +<ul class="block-list">
    +<li class="block-list">
    +<h5>col</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> col</pre>
    +<div class="block">The column index of the coordinates.</div>
    +</li>
    +<li class="block-list">
    +<h5>row</h5>
    +<pre><a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Integer.html" title="class or interface in java.lang" class="external-link">Integer</a> row</pre>
    +<div class="block">The row index of the coordinates.</div>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/utils/config/exceptions/package-summary.html">it.polimi.is23am10.utils.config.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.config.exceptions.InvalidMaxConnectionsNumberException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/utils/config/exceptions/InvalidMaxConnectionsNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">it.polimi.is23am10.utils.config.exceptions.InvalidMaxConnectionsNumberException</a></h3>
    +<div class="type-signature">class InvalidMaxConnectionsNumberException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.config.exceptions.InvalidPortNumberException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/utils/config/exceptions/InvalidPortNumberException.html" title="class in it.polimi.is23am10.utils.config.exceptions">it.polimi.is23am10.utils.config.exceptions.InvalidPortNumberException</a></h3>
    +<div class="type-signature">class InvalidPortNumberException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-package-container">
    +<h2 title="Package">Package&nbsp;<a href="it/polimi/is23am10/utils/exceptions/package-summary.html">it.polimi.is23am10.utils.exceptions</a></h2>
    +<ul class="block-list">
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.exceptions.ColIndexOutOfBoundsException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/utils/exceptions/ColIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.ColIndexOutOfBoundsException</a></h3>
    +<div class="type-signature">class ColIndexOutOfBoundsException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.exceptions.InvalidArgumentException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/utils/exceptions/InvalidArgumentException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.InvalidArgumentException</a></h3>
    +<div class="type-signature">class InvalidArgumentException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.exceptions.MissingParameterException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/utils/exceptions/MissingParameterException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.MissingParameterException</a></h3>
    +<div class="type-signature">class MissingParameterException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.exceptions.NullIndexValueException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/utils/exceptions/NullIndexValueException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.NullIndexValueException</a></h3>
    +<div class="type-signature">class NullIndexValueException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.exceptions.RowIndexOutOfBoundsException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/utils/exceptions/RowIndexOutOfBoundsException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.RowIndexOutOfBoundsException</a></h3>
    +<div class="type-signature">class RowIndexOutOfBoundsException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.exceptions.WrongBookShelfPicksException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/utils/exceptions/WrongBookShelfPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.WrongBookShelfPicksException</a></h3>
    +<div class="type-signature">class WrongBookShelfPicksException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.exceptions.WrongGameBoardPicksException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/utils/exceptions/WrongGameBoardPicksException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.WrongGameBoardPicksException</a></h3>
    +<div class="type-signature">class WrongGameBoardPicksException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +<li>
    +<section class="serialized-class-details" id="it.polimi.is23am10.utils.exceptions.WrongMovesNumberException">
    +<h3>Exception Class&nbsp;<a href="it/polimi/is23am10/utils/exceptions/WrongMovesNumberException.html" title="class in it.polimi.is23am10.utils.exceptions">it.polimi.is23am10.utils.exceptions.WrongMovesNumberException</a></h3>
    +<div class="type-signature">class WrongMovesNumberException extends <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/Exception.html" title="class or interface in java.lang" class="external-link">Exception</a> implements <a href="https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/io/Serializable.html" title="class or interface in java.io" class="external-link">Serializable</a></div>
    +</section>
    +</li>
    +</ul>
    +</section>
    +</li>
    +</ul>
    +</main>
    +</div>
    +</div>
    +</body>
    +</html>
    diff --git a/deliverables/javadoc/stylesheet.css b/deliverables/javadoc/stylesheet.css
    new file mode 100644
    index 00000000..d3309916
    --- /dev/null
    +++ b/deliverables/javadoc/stylesheet.css
    @@ -0,0 +1,1204 @@
    +/*
    + * Javadoc style sheet
    + */
    +
    +@import url('resources/fonts/dejavu.css');
    +
    +/*
    + * Styles for individual HTML elements.
    + *
    + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular
    + * HTML element throughout the page.
    + */
    +
    +body {
    +    background-color:#ffffff;
    +    color:#353833;
    +    font-family:'DejaVu Sans', Arial, Helvetica, sans-serif;
    +    font-size:14px;
    +    margin:0;
    +    padding:0;
    +    height:100%;
    +    width:100%;
    +}
    +iframe {
    +    margin:0;
    +    padding:0;
    +    height:100%;
    +    width:100%;
    +    overflow-y:scroll;
    +    border:none;
    +}
    +a:link, a:visited {
    +    text-decoration:none;
    +    color:#4A6782;
    +}
    +a[href]:hover, a[href]:focus {
    +    text-decoration:none;
    +    color:#bb7a2a;
    +}
    +a[name] {
    +    color:#353833;
    +}
    +pre {
    +    font-family:'DejaVu Sans Mono', monospace;
    +    font-size:14px;
    +}
    +h1 {
    +    font-size:20px;
    +}
    +h2 {
    +    font-size:18px;
    +}
    +h3 {
    +    font-size:16px;
    +}
    +h4 {
    +    font-size:15px;
    +}
    +h5 {
    +    font-size:14px;
    +}
    +h6 {
    +    font-size:13px;
    +}
    +/* Disable font boosting for selected elements */
    +h1, h2, h3, h4, h5, h6, div.member-signature {
    +    max-height: 1000em;
    +}
    +ul {
    +    list-style-type:disc;
    +}
    +code, tt {
    +    font-family:'DejaVu Sans Mono', monospace;
    +}
    +:not(h1, h2, h3, h4, h5, h6) > code,
    +:not(h1, h2, h3, h4, h5, h6) > tt {
    +    font-size:14px;
    +    padding-top:4px;
    +    margin-top:8px;
    +    line-height:1.4em;
    +}
    +dt code {
    +    font-family:'DejaVu Sans Mono', monospace;
    +    font-size:14px;
    +    padding-top:4px;
    +}
    +.summary-table dt code {
    +    font-family:'DejaVu Sans Mono', monospace;
    +    font-size:14px;
    +    vertical-align:top;
    +    padding-top:4px;
    +}
    +sup {
    +    font-size:8px;
    +}
    +button {
    +    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
    +    font-size: 14px;
    +}
    +/*
    + * Styles for HTML generated by javadoc.
    + *
    + * These are style classes that are used by the standard doclet to generate HTML documentation.
    + */
    +
    +/*
    + * Styles for document title and copyright.
    + */
    +.about-language {
    +    float:right;
    +    padding:0 21px 8px 8px;
    +    font-size:11px;
    +    margin-top:-9px;
    +    height:2.9em;
    +}
    +.legal-copy {
    +    margin-left:.5em;
    +}
    +/*
    + * Styles for navigation bar.
    + */
    +@media screen {
    +    div.flex-box {
    +        position:fixed;
    +        display:flex;
    +        flex-direction:column;
    +        height: 100%;
    +        width: 100%;
    +    }
    +    header.flex-header {
    +        flex: 0 0 auto;
    +    }
    +    div.flex-content {
    +        flex: 1 1 auto;
    +        overflow-y: auto;
    +    }
    +}
    +.top-nav {
    +    background-color:#4D7A97;
    +    color:#FFFFFF;
    +    float:left;
    +    padding:0;
    +    width:100%;
    +    clear:right;
    +    min-height:2.8em;
    +    padding-top:10px;
    +    overflow:hidden;
    +    font-size:12px;
    +}
    +button#navbar-toggle-button {
    +    display:none;
    +}
    +ul.sub-nav-list-small {
    +    display: none;
    +}
    +.sub-nav {
    +    background-color:#dee3e9;
    +    float:left;
    +    width:100%;
    +    overflow:hidden;
    +    font-size:12px;
    +}
    +.sub-nav div {
    +    clear:left;
    +    float:left;
    +    padding:6px;
    +    text-transform:uppercase;
    +}
    +.sub-nav .sub-nav-list {
    +    padding-top:4px;
    +}
    +ul.nav-list {
    +    display:block;
    +    margin:0 25px 0 0;
    +    padding:0;
    +}
    +ul.sub-nav-list {
    +    float:left;
    +    margin:0 25px 0 0;
    +    padding:0;
    +}
    +ul.nav-list li {
    +    list-style:none;
    +    float:left;
    +    padding: 5px 6px;
    +    text-transform:uppercase;
    +}
    +.sub-nav .nav-list-search {
    +    float:right;
    +    margin:0;
    +    padding:6px;
    +    clear:none;
    +    text-align:right;
    +    position:relative;
    +}
    +ul.sub-nav-list li {
    +    list-style:none;
    +    float:left;
    +}
    +.top-nav a:link, .top-nav a:active, .top-nav a:visited {
    +    color:#ffffff;
    +    text-decoration:none;
    +    text-transform:uppercase;
    +}
    +.top-nav a:hover {
    +    color:#bb7a2a;
    +}
    +.nav-bar-cell1-rev {
    +    background-color:#F8981D;
    +    color:#253441;
    +    margin: auto 5px;
    +}
    +.skip-nav {
    +    position:absolute;
    +    top:auto;
    +    left:-9999px;
    +    overflow:hidden;
    +}
    +/*
    + * Hide navigation links and search box in print layout
    + */
    +@media print {
    +    ul.nav-list, div.sub-nav  {
    +        display:none;
    +    }
    +}
    +/*
    + * Styles for page header.
    + */
    +.title {
    +    color:#2c4557;
    +    margin:10px 0;
    +}
    +.sub-title {
    +    margin:5px 0 0 0;
    +}
    +.header ul {
    +    margin:0 0 15px 0;
    +    padding:0;
    +}
    +.header ul li {
    +    list-style:none;
    +    font-size:13px;
    +}
    +/*
    + * Styles for headings.
    + */
    +body.class-declaration-page .summary h2,
    +body.class-declaration-page .details h2,
    +body.class-use-page  h2,
    +body.module-declaration-page  .block-list h2 {
    +    font-style: italic;
    +    padding:0;
    +    margin:15px 0;
    +}
    +body.class-declaration-page .summary h3,
    +body.class-declaration-page .details h3,
    +body.class-declaration-page .summary .inherited-list h2 {
    +    background-color:#dee3e9;
    +    border:1px solid #d0d9e0;
    +    margin:0 0 6px -8px;
    +    padding:7px 5px;
    +}
    +/*
    + * Styles for page layout containers.
    + */
    +main {
    +    clear:both;
    +    padding:10px 20px;
    +    position:relative;
    +}
    +dl.notes > dt {
    +    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
    +    font-size:12px;
    +    font-weight:bold;
    +    margin:10px 0 0 0;
    +    color:#4E4E4E;
    +}
    +dl.notes > dd {
    +    margin:5px 10px 10px 0;
    +    font-size:14px;
    +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
    +}
    +dl.name-value > dt {
    +    margin-left:1px;
    +    font-size:1.1em;
    +    display:inline;
    +    font-weight:bold;
    +}
    +dl.name-value > dd {
    +    margin:0 0 0 1px;
    +    font-size:1.1em;
    +    display:inline;
    +}
    +/*
    + * Styles for lists.
    + */
    +li.circle {
    +    list-style:circle;
    +}
    +ul.horizontal li {
    +    display:inline;
    +    font-size:0.9em;
    +}
    +div.inheritance {
    +    margin:0;
    +    padding:0;
    +}
    +div.inheritance div.inheritance {
    +    margin-left:2em;
    +}
    +ul.block-list,
    +ul.details-list,
    +ul.member-list,
    +ul.summary-list {
    +    margin:10px 0 10px 0;
    +    padding:0;
    +}
    +ul.block-list > li,
    +ul.details-list > li,
    +ul.member-list > li,
    +ul.summary-list > li {
    +    list-style:none;
    +    margin-bottom:15px;
    +    line-height:1.4;
    +}
    +.summary-table dl, .summary-table dl dt, .summary-table dl dd {
    +    margin-top:0;
    +    margin-bottom:1px;
    +}
    +ul.see-list, ul.see-list-long {
    +    padding-left: 0;
    +    list-style: none;
    +}
    +ul.see-list li {
    +    display: inline;
    +}
    +ul.see-list li:not(:last-child):after,
    +ul.see-list-long li:not(:last-child):after {
    +    content: ", ";
    +    white-space: pre-wrap;
    +}
    +/*
    + * Styles for tables.
    + */
    +.summary-table, .details-table {
    +    width:100%;
    +    border-spacing:0;
    +    border-left:1px solid #EEE;
    +    border-right:1px solid #EEE;
    +    border-bottom:1px solid #EEE;
    +    padding:0;
    +}
    +.caption {
    +    position:relative;
    +    text-align:left;
    +    background-repeat:no-repeat;
    +    color:#253441;
    +    clear:none;
    +    overflow:hidden;
    +    padding:0;
    +    padding-top:10px;
    +    padding-left:1px;
    +    margin:0;
    +}
    +.caption a:link, .caption a:visited {
    +    color:#1f389c;
    +}
    +.caption a:hover,
    +.caption a:active {
    +    color:#FFFFFF;
    +}
    +.caption span {
    +    font-weight:bold;
    +    white-space:nowrap;
    +    padding:5px 12px 7px 12px;
    +    display:inline-block;
    +    float:left;
    +    background-color:#F8981D;
    +    border: none;
    +    height:16px;
    +}
    +div.table-tabs {
    +    padding:10px 0 0 1px;
    +    margin:10px 0 0 0;
    +}
    +div.table-tabs > span {
    +    background-color: #EEE;
    +    color: #000;
    +    border: none;
    +    padding: 5px 12px 8px 12px;
    +}
    +div.table-tabs > button {
    +   border: none;
    +   cursor: pointer;
    +   padding: 5px 12px 7px 12px;
    +   font-weight: bold;
    +   margin-right: 8px;
    +}
    +div.table-tabs > .active-table-tab {
    +   background: #F8981D;
    +   color: #253441;
    +}
    +div.table-tabs > button.table-tab {
    +   background: #4D7A97;
    +   color: #FFFFFF;
    +}
    +.two-column-search-results {
    +    display: grid;
    +    grid-template-columns: minmax(400px, max-content) minmax(400px, auto);
    +}
    +div.checkboxes {
    +    line-height: 2em;
    +}
    +div.checkboxes > span {
    +    margin-left: 10px;
    +}
    +div.checkboxes > label {
    +    margin-left: 8px;
    +    white-space: nowrap;
    +}
    +div.checkboxes > label > input {
    +    margin: 0 2px;
    +}
    +.two-column-summary {
    +    display: grid;
    +    grid-template-columns: minmax(25%, max-content) minmax(25%, auto);
    +}
    +.three-column-summary {
    +    display: grid;
    +    grid-template-columns: minmax(15%, max-content) minmax(20%, max-content) minmax(20%, auto);
    +}
    +.three-column-release-summary {
    +    display: grid;
    +    grid-template-columns: minmax(40%, max-content) minmax(10%, max-content) minmax(40%, auto);
    +}
    +.four-column-summary {
    +    display: grid;
    +    grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, max-content) minmax(15%, auto);
    +}
    +@media screen and (max-width: 1000px) {
    +    .four-column-summary {
    +        display: grid;
    +        grid-template-columns: minmax(15%, max-content) minmax(15%, auto);
    +    }
    +}
    +@media screen and (max-width: 800px) {
    +    .two-column-search-results {
    +        display: grid;
    +        grid-template-columns: minmax(40%, max-content) minmax(40%, auto);
    +    }
    +    .three-column-summary {
    +        display: grid;
    +        grid-template-columns: minmax(10%, max-content) minmax(25%, auto);
    +    }
    +    .three-column-release-summary {
    +        display: grid;
    +        grid-template-columns: minmax(70%, max-content) minmax(30%, max-content)
    +    }
    +    .three-column-summary .col-last,
    +    .three-column-release-summary .col-last{
    +        grid-column-end: span 2;
    +    }
    +}
    +@media screen and (max-width: 600px) {
    +    .two-column-summary {
    +        display: grid;
    +        grid-template-columns: 1fr;
    +    }
    +}
    +.summary-table > div, .details-table > div {
    +    text-align:left;
    +    padding: 8px 3px 3px 7px;
    +    overflow-x: auto;
    +    scrollbar-width: thin;
    +}
    +.col-first, .col-second, .col-last, .col-constructor-name, .col-summary-item-name {
    +    vertical-align:top;
    +    padding-right:0;
    +    padding-top:8px;
    +    padding-bottom:3px;
    +}
    +.table-header {
    +    background:#dee3e9;
    +    font-weight: bold;
    +}
    +/* Sortable table columns */
    +.table-header[onclick] {
    +    cursor: pointer;
    +}
    +.table-header[onclick]::after {
    +    content:"";
    +    display:inline-block;
    +    background-image:url('data:image/svg+xml; utf8, \
    +    <svg xmlns="http://www.w3.org/2000/svg" width="125" height="170"> \
    +    <path d="M10.101 57.059L63.019 4.142l52.917 52.917M10.101 86.392l52.917 52.917 52.917-52.917" style="opacity:.35;"/></svg>');
    +    background-size:100% 100%;
    +    width:9px;
    +    height:14px;
    +    margin-left:4px;
    +    margin-bottom:-3px;
    +}
    +.table-header[onclick].sort-asc::after {
    +    background-image:url('data:image/svg+xml; utf8, \
    +    <svg xmlns="http://www.w3.org/2000/svg" width="125" height="170"> \
    +    <path d="M10.101 57.059L63.019 4.142l52.917 52.917" style="opacity:.75;"/> \
    +    <path d="M10.101 86.392l52.917 52.917 52.917-52.917" style="opacity:.35;"/></svg>');
    +
    +}
    +.table-header[onclick].sort-desc::after {
    +    background-image:url('data:image/svg+xml; utf8, \
    +    <svg xmlns="http://www.w3.org/2000/svg" width="125" height="170"> \
    +    <path d="M10.101 57.059L63.019 4.142l52.917 52.917" style="opacity:.35;"/> \
    +    <path d="M10.101 86.392l52.917 52.917 52.917-52.917" style="opacity:.75;"/></svg>');
    +}
    +.col-first, .col-first {
    +    font-size:13px;
    +}
    +.col-second, .col-second, .col-last, .col-constructor-name, .col-summary-item-name, .col-last {
    +    font-size:13px;
    +}
    +.col-first, .col-second, .col-constructor-name {
    +    vertical-align:top;
    +    overflow: auto;
    +}
    +.col-last {
    +    white-space:normal;
    +}
    +.col-first a:link, .col-first a:visited,
    +.col-second a:link, .col-second a:visited,
    +.col-first a:link, .col-first a:visited,
    +.col-second a:link, .col-second a:visited,
    +.col-constructor-name a:link, .col-constructor-name a:visited,
    +.col-summary-item-name a:link, .col-summary-item-name a:visited {
    +    font-weight:bold;
    +}
    +.even-row-color, .even-row-color .table-header {
    +    background-color:#FFFFFF;
    +}
    +.odd-row-color, .odd-row-color .table-header {
    +    background-color:#EEEEEF;
    +}
    +/*
    + * Styles for contents.
    + */
    +div.block {
    +    font-size:14px;
    +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
    +}
    +.col-last div {
    +    padding-top:0;
    +}
    +.col-last a {
    +    padding-bottom:3px;
    +}
    +.module-signature,
    +.package-signature,
    +.type-signature,
    +.member-signature {
    +    font-family:'DejaVu Sans Mono', monospace;
    +    font-size:14px;
    +    margin:14px 0;
    +    white-space: pre-wrap;
    +}
    +.module-signature,
    +.package-signature,
    +.type-signature {
    +    margin-top: 0;
    +}
    +.member-signature .type-parameters-long,
    +.member-signature .parameters,
    +.member-signature .exceptions {
    +    display: inline-block;
    +    vertical-align: top;
    +    white-space: pre;
    +}
    +.member-signature .type-parameters {
    +    white-space: normal;
    +}
    +/*
    + * Styles for formatting effect.
    + */
    +.source-line-no {
    +    color:green;
    +    padding:0 30px 0 0;
    +}
    +.block {
    +    display:block;
    +    margin:0 10px 5px 0;
    +    color:#474747;
    +}
    +.deprecated-label, .description-from-type-label, .implementation-label, .member-name-link,
    +.module-label-in-package, .module-label-in-type, .package-label-in-type,
    +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link, .preview-label {
    +    font-weight:bold;
    +}
    +.deprecation-comment, .help-footnote, .preview-comment {
    +    font-style:italic;
    +}
    +.deprecation-block {
    +    font-size:14px;
    +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
    +    border-style:solid;
    +    border-width:thin;
    +    border-radius:10px;
    +    padding:10px;
    +    margin-bottom:10px;
    +    margin-right:10px;
    +    display:inline-block;
    +}
    +.preview-block {
    +    font-size:14px;
    +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
    +    border-style:solid;
    +    border-width:thin;
    +    border-radius:10px;
    +    padding:10px;
    +    margin-bottom:10px;
    +    margin-right:10px;
    +    display:inline-block;
    +}
    +div.block div.deprecation-comment {
    +    font-style:normal;
    +}
    +details.invalid-tag, span.invalid-tag {
    +    font-size:14px;
    +    font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif;
    +    background: #ffe6e6;
    +    border: thin solid #000000;
    +    border-radius:2px;
    +    padding: 2px 4px;
    +    display:inline-block;
    +}
    +details summary {
    +    cursor: pointer;
    +}
    +/*
    + * Styles specific to HTML5 elements.
    + */
    +main, nav, header, footer, section {
    +    display:block;
    +}
    +/*
    + * Styles for javadoc search.
    + */
    +.ui-autocomplete-category {
    +    font-weight:bold;
    +    font-size:15px;
    +    padding:7px 0 7px 3px;
    +    background-color:#4D7A97;
    +    color:#FFFFFF;
    +}
    +.ui-autocomplete {
    +    max-height:85%;
    +    max-width:65%;
    +    overflow-y:auto;
    +    overflow-x:auto;
    +    scrollbar-width: thin;
    +    white-space:nowrap;
    +    box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23);
    +}
    +ul.ui-autocomplete {
    +    position:fixed;
    +    z-index:1;
    +    background-color: #FFFFFF;
    +}
    +ul.ui-autocomplete li {
    +    float:left;
    +    clear:both;
    +    min-width:100%;
    +}
    +ul.ui-autocomplete li.ui-static-link {
    +    position:sticky;
    +    bottom:0;
    +    left:0;
    +    background: #dee3e9;
    +    padding: 5px 0;
    +    font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif;
    +    font-size: 13px;
    +    font-weight: bolder;
    +    z-index: 2;
    +}
    +li.ui-static-link a, li.ui-static-link a:visited {
    +    text-decoration:none;
    +    color:#4A6782;
    +    float:right;
    +    margin-right:20px;
    +}
    +.ui-autocomplete .result-item {
    +    font-size: inherit;
    +}
    +.ui-autocomplete .result-highlight {
    +    font-weight:bold;
    +}
    +#search-input, #page-search-input {
    +    background-image:url('resources/glass.png');
    +    background-size:13px;
    +    background-repeat:no-repeat;
    +    background-position:2px 3px;
    +    padding-left:20px;
    +    width: 250px;
    +    margin: 0;
    +}
    +#search-input {
    +    margin-left: 4px;
    +}
    +#reset-button {
    +    background-color: transparent;
    +    background-image:url('resources/x.png');
    +    background-repeat:no-repeat;
    +    background-size:contain;
    +    border:0;
    +    border-radius:0;
    +    width:12px;
    +    height:12px;
    +    position:absolute;
    +    right:12px;
    +    top:10px;
    +    font-size:0;
    +}
    +::placeholder {
    +    color:#909090;
    +    opacity: 1;
    +}
    +.search-tag-desc-result {
    +    font-style:italic;
    +    font-size:11px;
    +}
    +.search-tag-holder-result {
    +    font-style:italic;
    +    font-size:12px;
    +}
    +.search-tag-result:target {
    +    background-color:yellow;
    +}
    +details.page-search-details {
    +    display: inline-block;
    +}
    +div#result-container {
    +    font-size: 14px;
    +}
    +div#result-container a.search-result-link {
    +    padding: 0;
    +    margin: 4px 0;
    +    width: 100%;
    +}
    +#result-container .result-highlight {
    +    font-weight:bolder;
    +}
    +.page-search-info {
    +    background-color: #f5f8ff;
    +    border-radius: 3px;
    +    border: 0 solid #b9c8d3;
    +    padding: 0 8px;
    +    overflow: hidden;
    +    height: 0;
    +    transition: all 0.2s ease;
    +}
    +div.table-tabs > button.table-tab {
    +    background: #4D7A97;
    +    color: #FFFFFF;
    +}
    +.page-search-header {
    +    padding: 5px 12px 7px 12px;
    +    font-weight: bold;
    +    margin-right: 3px;
    +    background-color:#4D7A97;
    +    color:#ffffff;
    +    display: inline-block;
    +}
    +button.page-search-header {
    +    border: none;
    +    cursor: pointer;
    +}
    +span#page-search-link {
    +    text-decoration: underline;
    +}
    +.module-graph span {
    +    display:none;
    +    position:absolute;
    +}
    +.module-graph:hover span {
    +    display:block;
    +    margin: -100px 0 0 100px;
    +    z-index: 1;
    +}
    +.inherited-list {
    +    margin: 10px 0 10px 0;
    +}
    +section.class-description {
    +    line-height: 1.4;
    +}
    +.summary section[class$="-summary"], .details section[class$="-details"],
    +.class-uses .detail, .serialized-class-details {
    +    padding: 0px 20px 5px 10px;
    +    border: 1px solid #ededed;
    +    background-color: #f8f8f8;
    +}
    +.inherited-list, section[class$="-details"] .detail {
    +    padding:0 0 5px 8px;
    +    background-color:#ffffff;
    +    border:none;
    +}
    +.vertical-separator {
    +    padding: 0 5px;
    +}
    +ul.help-section-list {
    +    margin: 0;
    +}
    +ul.help-subtoc > li {
    +  display: inline-block;
    +  padding-right: 5px;
    +  font-size: smaller;
    +}
    +ul.help-subtoc > li::before {
    +  content: "\2022" ;
    +  padding-right:2px;
    +}
    +.help-note {
    +    font-style: italic;
    +}
    +/*
    + * Indicator icon for external links.
    + */
    +main a[href*="://"]::after {
    +    content:"";
    +    display:inline-block;
    +    background-image:url('data:image/svg+xml; utf8, \
    +      <svg xmlns="http://www.w3.org/2000/svg" width="768" height="768">\
    +        <path d="M584 664H104V184h216V80H0v688h688V448H584zM384 0l132 \
    +        132-240 240 120 120 240-240 132 132V0z" fill="%234a6782"/>\
    +      </svg>');
    +    background-size:100% 100%;
    +    width:7px;
    +    height:7px;
    +    margin-left:2px;
    +    margin-bottom:4px;
    +}
    +main a[href*="://"]:hover::after,
    +main a[href*="://"]:focus::after {
    +    background-image:url('data:image/svg+xml; utf8, \
    +      <svg xmlns="http://www.w3.org/2000/svg" width="768" height="768">\
    +        <path d="M584 664H104V184h216V80H0v688h688V448H584zM384 0l132 \
    +        132-240 240 120 120 240-240 132 132V0z" fill="%23bb7a2a"/>\
    +      </svg>');
    +}
    +/*
    + * Styles for copy-to-clipboard buttons
    + */
    +button.copy {
    +    opacity: 80%;
    +    border: none;
    +    border-radius: 3px;
    +    position: relative;
    +    background:none;
    +    transition: opacity 0.2s;
    +    cursor: pointer;
    +}
    +button.copy:hover,
    +button.copy:active {
    +    opacity: 100%;
    +}
    +button.copy img {
    +    position: relative;
    +    background: none;
    +}
    +button.copy span {
    +    color: #303030;
    +    position: relative;
    +    top: -0.1em;
    +    transition: all 0.1s;
    +    font-size: 85%;
    +    line-height: 1.2em;
    +}
    +/* header/section copy button */
    +button.copy-header {
    +    margin: 0 0.2em;
    +    padding: 0 4px;
    +    height: 1.35em;
    +}
    +button.copy-header img {
    +    height: 1em;
    +    top: 0.1em;
    +}
    +button.copy-header:active {
    +    background-color: rgba(128, 128, 160, 0.2);
    +}
    +/* search page copy button */
    +button#page-search-copy {
    +    margin-left: 0.4em;
    +    padding:0.3em;
    +    top:0.13em;
    +}
    +button#page-search-copy img {
    +    width: 1.2em;
    +    height: 1.2em;
    +    padding: 0.01em 0;
    +    top: 0.15em;
    +}
    +button#page-search-copy span {
    +    color: #000000;
    +    content: attr(aria-label);
    +    line-height: 1.2em;
    +    padding: 0.2em;
    +    top: -0.18em;
    +    opacity: 0;
    +}
    +div.page-search-info:hover button#page-search-copy,
    +div.page-search-info:hover button#page-search-copy span {
    +    opacity: 90%;
    +}
    +div.page-search-info button#page-search-copy:hover {
    +    background-color: #dfe6f1;
    +}
    +div.page-search-info button#page-search-copy:active {
    +    background-color: #cfdbee;
    +}
    +/* snippet copy button */
    +button.snippet-copy {
    +    position: absolute;
    +    top: 6px;
    +    right: 6px;
    +    height: 1.7em;
    +    opacity: 50%;
    +    padding: 2px;
    +}
    +button.snippet-copy img {
    +    width: 18px;
    +    height: 18px;
    +    padding: 0.05em 0;
    +}
    +button.snippet-copy span {
    +    content: attr(aria-label);
    +    line-height: 1.2em;
    +    padding: 0.2em;
    +    position: relative;
    +    top: -0.5em;
    +    display: none;
    +}
    +div.snippet-container:hover button.snippet-copy span {
    +    display: inline;
    +}
    +div.snippet-container:hover button.snippet-copy {
    +    opacity: 80%;
    +}
    +div.snippet-container button.snippet-copy:hover {
    +    opacity: 100%;
    +}
    +button.snippet-copy:active {
    +    background: #d3d3d3;
    +}
    +/*
    + * Styles for user-provided tables.
    + *
    + * borderless:
    + *      No borders, vertical margins, styled caption.
    + *      This style is provided for use with existing doc comments.
    + *      In general, borderless tables should not be used for layout purposes.
    + *
    + * plain:
    + *      Plain borders around table and cells, vertical margins, styled caption.
    + *      Best for small tables or for complex tables for tables with cells that span
    + *      rows and columns, when the "striped" style does not work well.
    + *
    + * striped:
    + *      Borders around the table and vertical borders between cells, striped rows,
    + *      vertical margins, styled caption.
    + *      Best for tables that have a header row, and a body containing a series of simple rows.
    + */
    +
    +table.borderless,
    +table.plain,
    +table.striped {
    +    margin-top: 10px;
    +    margin-bottom: 10px;
    +}
    +table.borderless > caption,
    +table.plain > caption,
    +table.striped > caption {
    +    font-weight: bold;
    +    font-size: smaller;
    +}
    +table.borderless th, table.borderless td,
    +table.plain th, table.plain td,
    +table.striped th, table.striped td {
    +    padding: 2px 5px;
    +}
    +table.borderless,
    +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th,
    +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td {
    +    border: none;
    +}
    +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr {
    +    background-color: transparent;
    +}
    +table.plain {
    +    border-collapse: collapse;
    +    border: 1px solid black;
    +}
    +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr {
    +    background-color: transparent;
    +}
    +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th,
    +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td {
    +    border: 1px solid black;
    +}
    +table.striped {
    +    border-collapse: collapse;
    +    border: 1px solid black;
    +}
    +table.striped > thead {
    +    background-color: #E3E3E3;
    +}
    +table.striped > thead > tr > th, table.striped > thead > tr > td {
    +    border: 1px solid black;
    +}
    +table.striped > tbody > tr:nth-child(even) {
    +    background-color: #EEE
    +}
    +table.striped > tbody > tr:nth-child(odd) {
    +    background-color: #FFF
    +}
    +table.striped > tbody > tr > th, table.striped > tbody > tr > td {
    +    border-left: 1px solid black;
    +    border-right: 1px solid black;
    +}
    +table.striped > tbody > tr > th {
    +    font-weight: normal;
    +}
    +/**
    + * Tweak style for small screens.
    + */
    +@media screen and (max-width: 920px) {
    +    header.flex-header {
    +        max-height: 100vh;
    +        overflow-y: auto;
    +    }
    +    div#navbar-top {
    +        height: 2.8em;
    +        transition: height 0.35s ease;
    +    }
    +    ul.nav-list {
    +        display: block;
    +        width: 40%;
    +        float:left;
    +        clear: left;
    +        margin: 10px 0 0 0;
    +        padding: 0;
    +    }
    +    ul.nav-list li {
    +        float: none;
    +        padding: 6px;
    +        margin-left: 10px;
    +        margin-top: 2px;
    +    }
    +    ul.sub-nav-list-small {
    +        display:block;
    +        height: 100%;
    +        width: 50%;
    +        float: right;
    +        clear: right;
    +        background-color: #dee3e9;
    +        color: #353833;
    +        margin: 6px 0 0 0;
    +        padding: 0;
    +    }
    +    ul.sub-nav-list-small ul {
    +        padding-left: 20px;
    +    }
    +    ul.sub-nav-list-small a:link, ul.sub-nav-list-small a:visited {
    +        color:#4A6782;
    +    }
    +    ul.sub-nav-list-small a:hover {
    +        color:#bb7a2a;
    +    }
    +    ul.sub-nav-list-small li {
    +        list-style:none;
    +        float:none;
    +        padding: 6px;
    +        margin-top: 1px;
    +        text-transform:uppercase;
    +    }
    +    ul.sub-nav-list-small > li {
    +        margin-left: 10px;
    +    }
    +    ul.sub-nav-list-small li p {
    +        margin: 5px 0;
    +    }
    +    div#navbar-sub-list {
    +        display: none;
    +    }
    +    .top-nav a:link, .top-nav a:active, .top-nav a:visited {
    +        display: block;
    +    }
    +    button#navbar-toggle-button {
    +        width: 3.4em;
    +        height: 2.8em;
    +        background-color: transparent;
    +        display: block;
    +        float: left;
    +        border: 0;
    +        margin: 0 10px;
    +        cursor: pointer;
    +        font-size: 10px;
    +    }
    +    button#navbar-toggle-button .nav-bar-toggle-icon {
    +        display: block;
    +        width: 24px;
    +        height: 3px;
    +        margin: 1px 0 4px 0;
    +        border-radius: 2px;
    +        transition: all 0.1s;
    +        background-color: #ffffff;
    +    }
    +    button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(1) {
    +        transform: rotate(45deg);
    +        transform-origin: 10% 10%;
    +        width: 26px;
    +    }
    +    button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(2) {
    +        opacity: 0;
    +    }
    +    button#navbar-toggle-button.expanded span.nav-bar-toggle-icon:nth-child(3) {
    +        transform: rotate(-45deg);
    +        transform-origin: 10% 90%;
    +        width: 26px;
    +    }
    +}
    +@media screen and (max-width: 800px) {
    +    .about-language {
    +        padding-right: 16px;
    +    }
    +    ul.nav-list li {
    +        margin-left: 5px;
    +    }
    +    ul.sub-nav-list-small > li {
    +        margin-left: 5px;
    +    }
    +    main {
    +        padding: 10px;
    +    }
    +    .summary section[class$="-summary"], .details section[class$="-details"],
    +    .class-uses .detail, .serialized-class-details {
    +        padding: 0 8px 5px 8px;
    +    }
    +    body {
    +        -webkit-text-size-adjust: none;
    +    }
    +}
    +@media screen and (max-width: 400px) {
    +    .about-language {
    +        font-size: 10px;
    +        padding-right: 12px;
    +    }
    +}
    +@media screen and (max-width: 400px) {
    +    .nav-list-search {
    +        width: 94%;
    +    }
    +    #search-input, #page-search-input {
    +        width: 70%;
    +    }
    +}
    +@media screen and (max-width: 320px) {
    +    .nav-list-search > label {
    +        display: none;
    +    }
    +    .nav-list-search {
    +        width: 90%;
    +    }
    +    #search-input, #page-search-input {
    +        width: 80%;
    +    }
    +}
    +
    +pre.snippet {
    +    background-color: #ebecee;
    +    padding: 10px;
    +    margin: 12px 0;
    +    overflow: auto;
    +    white-space: pre;
    +}
    +div.snippet-container {
    +    position: relative;
    +}
    +@media screen and (max-width: 800px) {
    +    pre.snippet {
    +        padding-top: 26px;
    +    }
    +    button.snippet-copy {
    +        top: 4px;
    +        right: 4px;
    +    }
    +}
    +pre.snippet .italic {
    +    font-style: italic;
    +}
    +pre.snippet .bold {
    +    font-weight: bold;
    +}
    +pre.snippet .highlighted {
    +    background-color: #f7c590;
    +    border-radius: 10%;
    +}
    diff --git a/deliverables/javadoc/tag-search-index.js b/deliverables/javadoc/tag-search-index.js
    new file mode 100644
    index 00000000..bf10aaf6
    --- /dev/null
    +++ b/deliverables/javadoc/tag-search-index.js
    @@ -0,0 +1 @@
    +tagSearchIndex = [{"l":"Constant Field Values","h":"","u":"constant-values.html"},{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults();
    \ No newline at end of file
    diff --git a/deliverables/javadoc/type-search-index.js b/deliverables/javadoc/type-search-index.js
    new file mode 100644
    index 00000000..033b07f2
    --- /dev/null
    +++ b/deliverables/javadoc/type-search-index.js
    @@ -0,0 +1 @@
    +typeSearchIndex = [{"p":"it.polimi.is23am10.server.model.items.card","l":"AbstractCard"},{"p":"it.polimi.is23am10.server.command","l":"AbstractCommand"},{"p":"it.polimi.is23am10.server.network.messages","l":"AbstractMessage"},{"p":"it.polimi.is23am10.server.model.pattern","l":"AbstractPattern"},{"p":"it.polimi.is23am10.server.network.playerconnector","l":"AbstractPlayerConnector"},{"p":"it.polimi.is23am10.server.command","l":"AddPlayerCommand"},{"p":"it.polimi.is23am10.client.interfaces","l":"AlarmConsumer"},{"l":"All Classes and Interfaces","u":"allclasses-index.html"},{"p":"it.polimi.is23am10.server.model.items.card.exceptions","l":"AlreadyInitiatedPatternException"},{"p":"it.polimi.is23am10.client.userinterface.helpers","l":"ANSICodes"},{"p":"it.polimi.is23am10","l":"App"},{"p":"it.polimi.is23am10.utils.config","l":"AppConfig"},{"p":"it.polimi.is23am10.utils.config","l":"AppConfigContext"},{"p":"it.polimi.is23am10.utils","l":"ArgParser"},{"p":"it.polimi.is23am10.server.network.messages","l":"AvailableGamesMessage"},{"p":"it.polimi.is23am10.server.model.items.board","l":"Board"},{"p":"it.polimi.is23am10.server.model.items.board.exceptions","l":"BoardGridColIndexOutOfBoundsException"},{"p":"it.polimi.is23am10.server.model.items.board.exceptions","l":"BoardGridRowIndexOutOfBoundsException"},{"p":"it.polimi.is23am10.server.model.items.bookshelf","l":"Bookshelf"},{"p":"it.polimi.is23am10.server.model.items.bookshelf.exceptions","l":"BookshelfGridColIndexOutOfBoundsException"},{"p":"it.polimi.is23am10.server.model.items.bookshelf.exceptions","l":"BookshelfGridRowIndexOutOfBoundsException"},{"p":"it.polimi.is23am10.client.userinterface.guifactory.interfaces","l":"BookShelfSelectionCallBack"},{"p":"it.polimi.is23am10.client.userinterface.guifactory.interfaces","l":"ButtonCallBack"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","l":"CallBack"},{"p":"it.polimi.is23am10.server.network.messages","l":"ChatMessage"},{"p":"it.polimi.is23am10.client","l":"Client"},{"p":"it.polimi.is23am10.server.controller","l":"ClientConnectionChecker"},{"p":"it.polimi.is23am10.client","l":"Client.ClientGameStatus"},{"p":"it.polimi.is23am10.client.userinterface.helpers","l":"CLIStrings"},{"p":"it.polimi.is23am10.utils.exceptions","l":"ColIndexOutOfBoundsException"},{"p":"it.polimi.is23am10.client.userinterface","l":"CommandLineInterface"},{"p":"it.polimi.is23am10.client.userinterface.helpers","l":"CommandsBuilder"},{"p":"it.polimi.is23am10.server.controller.exceptions","l":"CommandSerializationErrorException"},{"p":"it.polimi.is23am10.utils","l":"CommandSyntaxValidator"},{"p":"it.polimi.is23am10.server.controller.interfaces","l":"ControllerConsumer"},{"p":"it.polimi.is23am10.utils","l":"Coordinates"},{"p":"it.polimi.is23am10.server.network.gamehandler","l":"CurrentPlayerHandler"},{"p":"it.polimi.is23am10.server.model.factory.exceptions","l":"DuplicatePlayerNameException"},{"p":"it.polimi.is23am10.server.network.messages","l":"ErrorMessage"},{"p":"it.polimi.is23am10.server.network.messages","l":"ErrorMessage.ErrorSeverity"},{"p":"it.polimi.is23am10.utils","l":"ErrorTypeString"},{"p":"it.polimi.is23am10.client.exceptions","l":"ForceCloseApplicationException"},{"p":"it.polimi.is23am10.server.model.game.exceptions","l":"FullGameException"},{"p":"it.polimi.is23am10.server.model.game","l":"Game"},{"p":"it.polimi.is23am10.server.model.factory","l":"GameFactory"},{"p":"it.polimi.is23am10.server.network.gamehandler","l":"GameHandler"},{"p":"it.polimi.is23am10.server.network.messages","l":"GameMessage"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","l":"GuiFactory.GameSnapshotFactory"},{"p":"it.polimi.is23am10.server.network.gamehandler.exceptions","l":"GameSnapshotUpdateException"},{"p":"it.polimi.is23am10.server.model.game","l":"Game.GameStatus"},{"p":"it.polimi.is23am10.server.command","l":"GetAvailableGamesCommand"},{"p":"it.polimi.is23am10.client.userinterface","l":"GraphicUserInterface"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","l":"GuiFactory"},{"p":"it.polimi.is23am10.client","l":"IClient"},{"p":"it.polimi.is23am10.utils","l":"IndexValidator"},{"p":"it.polimi.is23am10.utils.exceptions","l":"InvalidArgumentException"},{"p":"it.polimi.is23am10.server.model.game.exceptions","l":"InvalidBoardTileSelectionException"},{"p":"it.polimi.is23am10.utils.config.exceptions","l":"InvalidMaxConnectionsNumberException"},{"p":"it.polimi.is23am10.server.model.game.exceptions","l":"InvalidMaxPlayerException"},{"p":"it.polimi.is23am10.server.model.items.board.exceptions","l":"InvalidNumOfPlayersException"},{"p":"it.polimi.is23am10.server.model.game.exceptions","l":"InvalidPlayersNumberException"},{"p":"it.polimi.is23am10.utils.config.exceptions","l":"InvalidPortNumberException"},{"p":"it.polimi.is23am10.server.network.playerconnector.interfaces","l":"IPlayerConnector"},{"p":"it.polimi.is23am10.server.controller.interfaces","l":"IServerControllerAction"},{"p":"it.polimi.is23am10.server.network.messages","l":"AbstractMessage.MessageType"},{"p":"it.polimi.is23am10.utils.exceptions","l":"MissingParameterException"},{"p":"it.polimi.is23am10.utils","l":"MoveCommandHelper"},{"p":"it.polimi.is23am10.utils","l":"MovesValidator"},{"p":"it.polimi.is23am10.utils","l":"MoveTileCommandTypeAdaptor"},{"p":"it.polimi.is23am10.server.command","l":"MoveTilesCommand"},{"p":"it.polimi.is23am10.server.model.items.card.exceptions","l":"NegativeMatchedBlockCountException"},{"p":"it.polimi.is23am10.server.model.items.scoreblock.exceptions","l":"NotValidScoreBlockValueException"},{"p":"it.polimi.is23am10.server.model.game.exceptions","l":"NullAssignedPatternException"},{"p":"it.polimi.is23am10.server.network.playerconnector.exceptions","l":"NullBlockingQueueException"},{"p":"it.polimi.is23am10.server.controller.exceptions","l":"NullGameHandlerInstance"},{"p":"it.polimi.is23am10.utils.exceptions","l":"NullIndexValueException"},{"p":"it.polimi.is23am10.server.model.items.card.exceptions","l":"NullMatchedBlockCountException"},{"p":"it.polimi.is23am10.server.model.game.exceptions","l":"NullMaxPlayerException"},{"p":"it.polimi.is23am10.server.model.items.board.exceptions","l":"NullNumOfPlayersException"},{"p":"it.polimi.is23am10.server.model.player.exceptions","l":"NullPlayerBookshelfException"},{"p":"it.polimi.is23am10.server.network.gamehandler.exceptions","l":"NullPlayerConnector"},{"p":"it.polimi.is23am10.server.model.game.exceptions","l":"NullPlayerException"},{"p":"it.polimi.is23am10.server.model.player.exceptions","l":"NullPlayerIdException"},{"p":"it.polimi.is23am10.server.model.player.exceptions","l":"NullPlayerNameException"},{"p":"it.polimi.is23am10.server.model.factory.exceptions","l":"NullPlayerNamesException"},{"p":"it.polimi.is23am10.server.model.player.exceptions","l":"NullPlayerPrivateCardException"},{"p":"it.polimi.is23am10.server.model.player.exceptions","l":"NullPlayerScoreBlocksException"},{"p":"it.polimi.is23am10.server.model.player.exceptions","l":"NullPlayerScoreException"},{"p":"it.polimi.is23am10.server.model.score.exceptions","l":"NullPointsException"},{"p":"it.polimi.is23am10.server.controller.exceptions","l":"NullRmiServerException"},{"p":"it.polimi.is23am10.server.controller.exceptions","l":"NullRmiStubException"},{"p":"it.polimi.is23am10.server.model.items.card.exceptions","l":"NullScoreBlockListException"},{"p":"it.polimi.is23am10.server.network.playerconnector.exceptions","l":"NullSocketConnectorException"},{"p":"it.polimi.is23am10.server.model.items.bookshelf.exceptions","l":"NullTileException"},{"p":"it.polimi.is23am10.server.command","l":"AbstractCommand.Opcode"},{"p":"it.polimi.is23am10.client.userinterface.helpers","l":"OutputWrapper.OutputLevel"},{"p":"it.polimi.is23am10.client.userinterface.helpers","l":"OutputWrapper"},{"p":"it.polimi.is23am10.server.model.player","l":"Player"},{"p":"it.polimi.is23am10.server.network.playerconnector","l":"PlayerConnectorRmi"},{"p":"it.polimi.is23am10.server.network.playerconnector","l":"PlayerConnectorSocket"},{"p":"it.polimi.is23am10.server.model.factory","l":"PlayerFactory"},{"p":"it.polimi.is23am10.server.model.game.exceptions","l":"PlayerNotFoundException"},{"p":"it.polimi.is23am10.server.model.items.card","l":"PrivateCard"},{"p":"it.polimi.is23am10.server.model.pattern","l":"PrivatePattern"},{"p":"it.polimi.is23am10.server.model.factory","l":"PrivatePatternFactory"},{"p":"it.polimi.is23am10.client.userinterface.helpers","l":"PrivatePatternsHelper"},{"p":"it.polimi.is23am10.client","l":"RMIClient"},{"p":"it.polimi.is23am10.utils.exceptions","l":"RowIndexOutOfBoundsException"},{"p":"it.polimi.is23am10.client.userinterface.guifactory","l":"GuiFactory.SCENE"},{"p":"it.polimi.is23am10.server.model.score","l":"Score"},{"p":"it.polimi.is23am10.server.model.items.scoreblock","l":"ScoreBlock"},{"p":"it.polimi.is23am10.server.command","l":"SendChatMessageCommand"},{"p":"it.polimi.is23am10.server","l":"Server"},{"p":"it.polimi.is23am10.server.controller","l":"ServerControllerAction"},{"p":"it.polimi.is23am10.server.controller","l":"ServerControllerRmiBindings"},{"p":"it.polimi.is23am10.server.controller","l":"ServerControllerSocket"},{"p":"it.polimi.is23am10.server.controller","l":"ServerControllerState"},{"p":"it.polimi.is23am10.server.controller","l":"ServerDebugPrefixString"},{"p":"it.polimi.is23am10.server","l":"Server.ServerStatus"},{"p":"it.polimi.is23am10.server.model.items.card","l":"SharedCard"},{"p":"it.polimi.is23am10.server.model.pattern","l":"SharedPattern"},{"p":"it.polimi.is23am10.server.model.factory","l":"SharedPatternFactory"},{"p":"it.polimi.is23am10.server.network.messages","l":"SnoozeACKMessage"},{"p":"it.polimi.is23am10.server.command","l":"SnoozeGameTimerCommand"},{"p":"it.polimi.is23am10.client","l":"SocketClient"},{"p":"it.polimi.is23am10.server.command","l":"StartGameCommand"},{"p":"it.polimi.is23am10.client.userinterface.guifactory.interfaces","l":"TextFieldCallBack"},{"p":"it.polimi.is23am10.utils","l":"ThreadLocalTypeAdapterFactory"},{"p":"it.polimi.is23am10.server.model.items.tile","l":"Tile"},{"p":"it.polimi.is23am10.server.model.items.tile","l":"Tile.TileType"},{"p":"it.polimi.is23am10.client.userinterface","l":"UserInterface"},{"p":"it.polimi.is23am10.server.network.virtualview","l":"VirtualPlayer"},{"p":"it.polimi.is23am10.server.network.virtualview","l":"VirtualView"},{"p":"it.polimi.is23am10.utils.exceptions","l":"WrongBookShelfPicksException"},{"p":"it.polimi.is23am10.server.model.items.bookshelf.exceptions","l":"WrongCharBookshelfStringException"},{"p":"it.polimi.is23am10.utils.exceptions","l":"WrongGameBoardPicksException"},{"p":"it.polimi.is23am10.server.model.items.bookshelf.exceptions","l":"WrongLengthBookshelfStringException"},{"p":"it.polimi.is23am10.utils.exceptions","l":"WrongMovesNumberException"}];updateSearchResults();
    \ No newline at end of file
    diff --git a/deliveries/peer_review/UMLGroup19.png b/deliverables/peer_review/UMLGroup19.png
    similarity index 100%
    rename from deliveries/peer_review/UMLGroup19.png
    rename to deliverables/peer_review/UMLGroup19.png
    diff --git a/deliveries/peer_review/communication_protocol_am19.pdf b/deliverables/peer_review/communication_protocol_am19.pdf
    similarity index 100%
    rename from deliveries/peer_review/communication_protocol_am19.pdf
    rename to deliverables/peer_review/communication_protocol_am19.pdf
    diff --git a/deliveries/peer_review/peerReviewSequenceDiagramsGroup19.pdf b/deliverables/peer_review/peerReviewSequenceDiagramsGroup19.pdf
    similarity index 100%
    rename from deliveries/peer_review/peerReviewSequenceDiagramsGroup19.pdf
    rename to deliverables/peer_review/peerReviewSequenceDiagramsGroup19.pdf
    diff --git a/deliveries/peer_review/peerReviewUMLGroup19.pdf b/deliverables/peer_review/peerReviewUMLGroup19.pdf
    similarity index 100%
    rename from deliveries/peer_review/peerReviewUMLGroup19.pdf
    rename to deliverables/peer_review/peerReviewUMLGroup19.pdf
    diff --git a/deliveries/sequence_diagram/action_phase.png b/deliverables/sequence_diagram/action_phase.png
    similarity index 100%
    rename from deliveries/sequence_diagram/action_phase.png
    rename to deliverables/sequence_diagram/action_phase.png
    diff --git a/deliveries/sequence_diagram/chat.png b/deliverables/sequence_diagram/chat.png
    similarity index 100%
    rename from deliveries/sequence_diagram/chat.png
    rename to deliverables/sequence_diagram/chat.png
    diff --git a/deliveries/sequence_diagram/disconnection.png b/deliverables/sequence_diagram/disconnection.png
    similarity index 100%
    rename from deliveries/sequence_diagram/disconnection.png
    rename to deliverables/sequence_diagram/disconnection.png
    diff --git a/deliveries/sequence_diagram/game_ending.png b/deliverables/sequence_diagram/game_ending.png
    similarity index 100%
    rename from deliveries/sequence_diagram/game_ending.png
    rename to deliverables/sequence_diagram/game_ending.png
    diff --git a/deliveries/sequence_diagram/join_existing_game.png b/deliverables/sequence_diagram/join_existing_game.png
    similarity index 100%
    rename from deliveries/sequence_diagram/join_existing_game.png
    rename to deliverables/sequence_diagram/join_existing_game.png
    diff --git a/deliveries/sequence_diagram/join_new_game.png b/deliverables/sequence_diagram/join_new_game.png
    similarity index 100%
    rename from deliveries/sequence_diagram/join_new_game.png
    rename to deliverables/sequence_diagram/join_new_game.png
    diff --git a/deliveries/sequence_diagram/multiple_games.png b/deliverables/sequence_diagram/multiple_games.png
    similarity index 100%
    rename from deliveries/sequence_diagram/multiple_games.png
    rename to deliverables/sequence_diagram/multiple_games.png
    diff --git a/deliverables/uml/classes/uml_28_06_classes.png b/deliverables/uml/classes/uml_28_06_classes.png
    new file mode 100644
    index 00000000..c88ca3aa
    Binary files /dev/null and b/deliverables/uml/classes/uml_28_06_classes.png differ
    diff --git a/deliverables/uml/classes/uml_28_06_classes.uml b/deliverables/uml/classes/uml_28_06_classes.uml
    new file mode 100644
    index 00000000..36dcd925
    --- /dev/null
    +++ b/deliverables/uml/classes/uml_28_06_classes.uml
    @@ -0,0 +1,480 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<Diagram>
    +  <ID>JAVA</ID>
    +  <OriginalElement>/home/locav/IS23-AM10 (copia)/src/main</OriginalElement>
    +  <nodes>
    +    <node x="3537.0" y="655.0">it.polimi.is23am10.server.controller.ServerControllerState</node>
    +    <node x="3371.625" y="96.0">it.polimi.is23am10.server.network.gamehandler.GameHandler</node>
    +    <node x="3049.0" y="806.0">it.polimi.is23am10.server.Server</node>
    +    <node x="283.75" y="198.0">it.polimi.is23am10.server.network.messages.SnoozeACKMessage</node>
    +    <node x="1947.625" y="504.0">it.polimi.is23am10.server.model.pattern.SharedPattern</node>
    +    <node x="755.0" y="806.0">it.polimi.is23am10.utils.ErrorTypeString</node>
    +    <node x="3795.5" y="198.0">it.polimi.is23am10.server.controller.interfaces.IServerControllerAction</node>
    +    <node x="2158.375" y="582.0">it.polimi.is23am10.server.model.pattern.AbstractPattern</node>
    +    <node x="1791.75" y="96.0">it.polimi.is23am10.client.userinterface.GraphicUserInterface</node>
    +    <node x="1557.73046875" y="198.0">it.polimi.is23am10.server.network.messages.AvailableGamesMessage</node>
    +    <node x="2940.875" y="198.0">it.polimi.is23am10.client.LockObject</node>
    +    <node x="3675.0693359375" y="338.0">it.polimi.is23am10.server.network.virtualview.VirtualPlayer</node>
    +    <node x="2423.625" y="96.0">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi</node>
    +    <node x="3253.875" y="198.0">it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler</node>
    +    <node x="3270.5439453125" y="426.0">it.polimi.is23am10.server.model.items.card.SharedCard</node>
    +    <node x="3316.625" y="-14.0">it.polimi.is23am10.client.SocketClient</node>
    +    <node x="2346.0" y="806.0">it.polimi.is23am10.client.userinterface.guifactory.GuiFactory</node>
    +    <node x="1046.8193359375" y="198.0">it.polimi.is23am10.server.network.messages.ChatMessage</node>
    +    <node x="514.75" y="198.0">it.polimi.is23am10.server.network.messages.GameMessage</node>
    +    <node x="3488.875" y="198.0">it.polimi.is23am10.server.model.game.Game</node>
    +    <node x="2704.1689453125" y="426.0">it.polimi.is23am10.server.model.items.bookshelf.Bookshelf</node>
    +    <node x="-208.0" y="733.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.BookShelfSelectionCallBack</node>
    +    <node x="3590.25" y="96.0">it.polimi.is23am10.server.controller.ServerControllerAction</node>
    +    <node x="1818.73046875" y="198.0">it.polimi.is23am10.client.userinterface.UserInterface</node>
    +    <node x="3836.25" y="96.0">it.polimi.is23am10.server.controller.ServerControllerRmiBindings</node>
    +    <node x="1923.0" y="655.0">it.polimi.is23am10.server.controller.ServerDebugPrefixString</node>
    +    <node x="521.0" y="806.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.TextFieldCallBack</node>
    +    <node x="868.125" y="96.0">it.polimi.is23am10.server.command.SnoozeGameTimerCommand</node>
    +    <node x="3701.0693359375" y="426.0">it.polimi.is23am10.server.model.score.Score</node>
    +    <node x="249.0" y="96.0">it.polimi.is23am10.server.command.AddPlayerCommand</node>
    +    <node x="25.2939453125" y="198.0">it.polimi.is23am10.client.userinterface.helpers.OutputWrapper</node>
    +    <node x="1982.0" y="806.0">it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock</node>
    +    <node x="3798.0" y="655.0">it.polimi.is23am10.utils.CustomKeySerializer</node>
    +    <node x="2212.0" y="198.0">it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector</node>
    +    <node x="2525.0" y="806.0">it.polimi.is23am10.utils.config.AppConfig</node>
    +    <node x="45.0" y="806.0">it.polimi.is23am10.utils.config.AppConfigContext</node>
    +    <node x="80.0" y="733.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.ButtonCallBack</node>
    +    <node x="696.0" y="655.0">it.polimi.is23am10.utils.MoveTileCommandTypeAdaptor</node>
    +    <node x="348.0" y="655.0">it.polimi.is23am10.utils.ThreadLocalTypeAdapterFactory</node>
    +    <node x="2481.0" y="655.0">it.polimi.is23am10.utils.MoveCommandHelper</node>
    +    <node x="2171.625" y="96.0">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket</node>
    +    <node x="2374.625" y="504.0">it.polimi.is23am10.server.model.items.card.AbstractCard</node>
    +    <node x="2085.625" y="426.0">it.polimi.is23am10.server.model.items.card.PrivateCard</node>
    +    <node x="2559.9638671875" y="338.0">it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector</node>
    +    <node x="1335.0" y="655.0">it.polimi.is23am10.server.controller.ClientConnectionChecker</node>
    +    <node x="-13.0" y="655.0">it.polimi.is23am10.client.userinterface.guifactory.CallBack</node>
    +    <node x="3193.0" y="806.0">it.polimi.is23am10.App</node>
    +    <node x="1162.125" y="96.0">it.polimi.is23am10.server.command.GetAvailableGamesCommand</node>
    +    <node x="1993.73046875" y="198.0">it.polimi.is23am10.server.network.messages.ErrorMessage</node>
    +    <node x="2747.0" y="655.0">it.polimi.is23am10.server.model.factory.SharedPatternFactory</node>
    +    <node x="476.0" y="96.0">it.polimi.is23am10.client.userinterface.CommandLineInterface</node>
    +    <node x="2426.6943359375" y="-14.0">it.polimi.is23am10.server.controller.ServerControllerSocket</node>
    +    <node x="3097.875" y="198.0">it.polimi.is23am10.server.network.virtualview.VirtualView</node>
    +    <node x="1460.125" y="96.0">it.polimi.is23am10.server.command.SendChatMessageCommand</node>
    +    <node x="2878.0" y="806.0">it.polimi.is23am10.utils.ArgParser</node>
    +    <node x="-208.0" y="806.0">it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector</node>
    +    <node x="2492.125" y="198.0">it.polimi.is23am10.client.IClient</node>
    +    <node x="3274.0" y="655.0">it.polimi.is23am10.server.model.factory.PrivatePatternFactory</node>
    +    <node x="3841.0693359375" y="338.0">it.polimi.is23am10.server.model.items.board.Board</node>
    +    <node x="-208.0" y="96.0">it.polimi.is23am10.server.command.MoveTilesCommand</node>
    +    <node x="2985.375" y="96.0">it.polimi.is23am10.client.Client</node>
    +    <node x="3011.0" y="655.0">it.polimi.is23am10.client.userinterface.helpers.PrivatePatternsHelper</node>
    +    <node x="1187.0" y="806.0">it.polimi.is23am10.utils.IndexValidator</node>
    +    <node x="2161.625" y="504.0">it.polimi.is23am10.server.model.pattern.PrivatePattern</node>
    +    <node x="1594.0" y="806.0">it.polimi.is23am10.server.model.factory.GameFactory</node>
    +    <node x="2184.125" y="338.0">it.polimi.is23am10.server.model.player.Player</node>
    +    <node x="3871.1689453125" y="-14.0">it.polimi.is23am10.client.RMIClient</node>
    +    <node x="19.0" y="96.0">it.polimi.is23am10.server.command.StartGameCommand</node>
    +    <node x="1393.0" y="806.0">it.polimi.is23am10.server.model.factory.PlayerFactory</node>
    +    <node x="972.0" y="806.0">it.polimi.is23am10.utils.MovesValidator</node>
    +    <node x="1629.0" y="655.0">it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance</node>
    +    <node x="3319.0" y="806.0">it.polimi.is23am10.server.model.items.tile.Tile</node>
    +    <node x="2703.0" y="806.0">it.polimi.is23am10.client.userinterface.helpers.CLIStrings</node>
    +    <node x="2207.0" y="655.0">it.polimi.is23am10.utils.CustomKeyDeserializer</node>
    +    <node x="2791.375" y="96.0">it.polimi.is23am10.client.interfaces.AlarmConsumer</node>
    +    <node x="3392.0693359375" y="338.0">it.polimi.is23am10.server.controller.interfaces.ControllerConsumer</node>
    +    <node x="1039.0" y="655.0">it.polimi.is23am10.utils.CommandSyntaxValidator</node>
    +    <node x="1062.25" y="338.0">it.polimi.is23am10.server.network.messages.AbstractMessage</node>
    +    <node x="697.75" y="198.0">it.polimi.is23am10.server.command.AbstractCommand</node>
    +    <node x="2164.0" y="806.0">it.polimi.is23am10.client.userinterface.helpers.ANSICodes</node>
    +    <node x="285.0" y="806.0">it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder</node>
    +    <node x="1792.0" y="806.0">it.polimi.is23am10.utils.Coordinates</node>
    +  </nodes>
    +  <notes />
    +  <edges>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="2232.625" y="396.0" />
    +      <point x="2768.1689453125" y="396.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.GraphicUserInterface" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="REALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="1898.75" y="156.0" />
    +      <point x="1654.150390625" y="156.0" />
    +      <point x="1654.150390625" y="176.0" />
    +      <point x="1857.48046875" y="176.0" />
    +      <point x="-38.75" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" target="it.polimi.is23am10.server.model.score.Score" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.SnoozeACKMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="389.25" y="247.0" />
    +      <point x="1154.75" y="247.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.IClient" relationship="REALIZATION">
    +      <point x="-23.75" y="14.0" />
    +      <point x="3009.125" y="156.0" />
    +      <point x="2567.125" y="156.0" />
    +      <point x="25.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket" target="it.polimi.is23am10.server.controller.ServerControllerAction" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="2541.1943359375" y="55.0" />
    +      <point x="3703.25" y="55.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.guifactory.CallBack" target="it.polimi.is23am10.client.userinterface.guifactory.interfaces.BookShelfSelectionCallBack" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="45.5" y="708.0" />
    +      <point x="-74.0" y="708.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.StartGameCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="124.0" y="146.0" />
    +      <point x="795.25" y="146.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector" relationship="REALIZATION">
    +      <point x="61.25" y="14.0" />
    +      <point x="2395.75" y="267.0" />
    +      <point x="2605.9638671875" y="267.0" />
    +      <point x="-46.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SendChatMessageCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="-68.5" y="14.0" />
    +      <point x="1528.625" y="146.0" />
    +      <point x="795.25" y="146.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi" target="it.polimi.is23am10.client.IClient" relationship="TO_ONE">
    +      <point x="51.75" y="14.0" />
    +      <point x="2578.875" y="146.0" />
    +      <point x="2517.125" y="146.0" />
    +      <point x="-25.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.score.Score" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="2232.625" y="386.0" />
    +      <point x="3748.0693359375" y="386.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.GameHandler" target="it.polimi.is23am10.server.model.game.Game" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="3448.625" y="146.0" />
    +      <point x="3535.875" y="146.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ErrorMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="39.25" y="14.0" />
    +      <point x="2111.48046875" y="257.0" />
    +      <point x="2232.625" y="257.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.guifactory.CallBack" target="it.polimi.is23am10.client.userinterface.guifactory.interfaces.ButtonCallBack" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="45.5" y="708.0" />
    +      <point x="165.0" y="708.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.items.card.PrivateCard" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="2232.625" y="406.0" />
    +      <point x="2155.625" y="406.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.LockObject" relationship="TO_ONE">
    +      <point x="23.75" y="14.0" />
    +      <point x="3056.625" y="146.0" />
    +      <point x="3037.875" y="146.0" />
    +      <point x="3037.875" y="166.0" />
    +      <point x="3009.375" y="166.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.SharedCard" target="it.polimi.is23am10.server.model.items.card.AbstractCard" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="3341.0439453125" y="479.0" />
    +      <point x="2478.125" y="479.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.GetAvailableGamesCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="1301.125" y="146.0" />
    +      <point x="795.25" y="146.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.AvailableGamesMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="60.25" y="14.0" />
    +      <point x="1738.48046875" y="257.0" />
    +      <point x="2232.625" y="257.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.client.Client" relationship="GENERALIZATION">
    +      <point x="-30.75" y="14.0" />
    +      <point x="3901.9189453125" y="35.0" />
    +      <point x="3537.25" y="35.0" />
    +      <point x="3537.25" y="75.0" />
    +      <point x="3032.875" y="75.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.GameMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="596.25" y="247.0" />
    +      <point x="1154.75" y="247.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="TO_ONE">
    +      <point x="23.75" y="14.0" />
    +      <point x="3056.625" y="146.0" />
    +      <point x="3037.875" y="146.0" />
    +      <point x="3037.875" y="166.0" />
    +      <point x="1934.98046875" y="166.0" />
    +      <point x="38.75" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.MoveTilesCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="-104.5" y="146.0" />
    +      <point x="795.25" y="146.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector" relationship="TO_ONE">
    +      <point x="23.75" y="14.0" />
    +      <point x="3056.625" y="146.0" />
    +      <point x="3037.875" y="146.0" />
    +      <point x="3037.875" y="166.0" />
    +      <point x="2766.625" y="166.0" />
    +      <point x="2766.625" y="267.0" />
    +      <point x="2697.9638671875" y="267.0" />
    +      <point x="46.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualView" target="it.polimi.is23am10.server.model.items.board.Board" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="3165.875" y="277.0" />
    +      <point x="3833.900390625" y="277.0" />
    +      <point x="3833.900390625" y="287.0" />
    +      <point x="3889.0693359375" y="287.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi" target="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    +      <point x="-51.75" y="14.0" />
    +      <point x="2475.375" y="146.0" />
    +      <point x="2334.5" y="146.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ChatMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="39.0" y="14.0" />
    +      <point x="1163.8193359375" y="257.0" />
    +      <point x="2232.625" y="257.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="-61.25" y="14.0" />
    +      <point x="2273.25" y="257.0" />
    +      <point x="2232.625" y="257.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.game.Game" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="3535.875" y="267.0" />
    +      <point x="3330.85546875" y="267.0" />
    +      <point x="3330.85546875" y="307.0" />
    +      <point x="2232.625" y="307.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="3361.375" y="257.0" />
    +      <point x="2232.625" y="257.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.PrivateCard" target="it.polimi.is23am10.server.model.items.card.AbstractCard" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="2155.625" y="479.0" />
    +      <point x="2478.125" y="479.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.client.interfaces.AlarmConsumer" relationship="TO_ONE">
    +      <point x="30.75" y="14.0" />
    +      <point x="3963.4189453125" y="35.0" />
    +      <point x="4118.75" y="35.0" />
    +      <point x="4118.75" y="45.0" />
    +      <point x="3385.625" y="45.0" />
    +      <point x="3385.625" y="65.0" />
    +      <point x="2878.375" y="65.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.SocketClient" target="it.polimi.is23am10.client.interfaces.AlarmConsumer" relationship="TO_ONE">
    +      <point x="-37.0" y="14.0" />
    +      <point x="3353.625" y="35.0" />
    +      <point x="3385.625" y="35.0" />
    +      <point x="3385.625" y="65.0" />
    +      <point x="2878.375" y="65.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.AddPlayerCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="352.5" y="146.0" />
    +      <point x="795.25" y="146.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerRmiBindings" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="3972.25" y="146.0" />
    +      <point x="4045.5" y="146.0" />
    +      <point x="4045.5" y="156.0" />
    +      <point x="3968.75" y="156.0" />
    +      <point x="57.75" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="TO_ONE">
    +      <point x="30.75" y="14.0" />
    +      <point x="3963.4189453125" y="35.0" />
    +      <point x="4118.75" y="35.0" />
    +      <point x="4118.75" y="146.0" />
    +      <point x="4045.5" y="146.0" />
    +      <point x="4045.5" y="156.0" />
    +      <point x="3968.75" y="156.0" />
    +      <point x="57.75" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerAction" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="REALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="3703.25" y="146.0" />
    +      <point x="3853.25" y="146.0" />
    +      <point x="-57.75" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.server.network.virtualview.VirtualView" relationship="TO_ONE">
    +      <point x="23.75" y="14.0" />
    +      <point x="3056.625" y="146.0" />
    +      <point x="3037.875" y="146.0" />
    +      <point x="3037.875" y="166.0" />
    +      <point x="3165.875" y="166.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.AvailableGamesMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="-60.25" y="14.0" />
    +      <point x="1617.98046875" y="247.0" />
    +      <point x="1154.75" y="247.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" target="it.polimi.is23am10.server.controller.interfaces.ControllerConsumer" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="3911.0" y="317.0" />
    +      <point x="3523.5693359375" y="317.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.CommandLineInterface" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="REALIZATION">
    +      <point x="57.25" y="14.0" />
    +      <point x="647.75" y="156.0" />
    +      <point x="1654.150390625" y="156.0" />
    +      <point x="1654.150390625" y="176.0" />
    +      <point x="1857.48046875" y="176.0" />
    +      <point x="-38.75" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.pattern.PrivatePattern" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="2258.125" y="552.0" />
    +      <point x="2151.375" y="552.0" />
    +      <point x="2151.375" y="562.0" />
    +      <point x="2209.875" y="562.0" />
    +      <point x="-51.5" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SnoozeGameTimerCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="1005.125" y="146.0" />
    +      <point x="795.25" y="146.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SendChatMessageCommand" target="it.polimi.is23am10.server.network.messages.ChatMessage" relationship="TO_ONE">
    +      <point x="68.5" y="14.0" />
    +      <point x="1665.625" y="166.0" />
    +      <point x="1124.8193359375" y="166.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.CommandLineInterface" target="it.polimi.is23am10.client.userinterface.helpers.OutputWrapper" relationship="TO_ONE">
    +      <point x="-57.25" y="14.0" />
    +      <point x="533.25" y="156.0" />
    +      <point x="108.7939453125" y="156.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.AbstractCard" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="DEPENDENCY">
    +      <point x="0.0" y="14.0" />
    +      <point x="2478.125" y="552.0" />
    +      <point x="2312.875" y="552.0" />
    +      <point x="51.5" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ChatMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="-39.0" y="14.0" />
    +      <point x="1085.8193359375" y="247.0" />
    +      <point x="1154.75" y="247.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket" target="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="2287.625" y="146.0" />
    +      <point x="2334.5" y="146.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.SocketClient" target="it.polimi.is23am10.client.Client" relationship="GENERALIZATION">
    +      <point x="37.0" y="14.0" />
    +      <point x="3427.625" y="35.0" />
    +      <point x="3537.25" y="35.0" />
    +      <point x="3537.25" y="75.0" />
    +      <point x="3032.875" y="75.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.pattern.SharedPattern" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="2044.625" y="552.0" />
    +      <point x="2151.375" y="552.0" />
    +      <point x="2151.375" y="562.0" />
    +      <point x="2209.875" y="562.0" />
    +      <point x="-51.5" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualView" target="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="3165.875" y="277.0" />
    +      <point x="3833.900390625" y="277.0" />
    +      <point x="3833.900390625" y="307.0" />
    +      <point x="3748.0693359375" y="307.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" target="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="3748.0693359375" y="406.0" />
    +      <point x="2768.1689453125" y="406.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.game.Game" target="it.polimi.is23am10.server.model.items.board.Board" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="3535.875" y="267.0" />
    +      <point x="3330.85546875" y="267.0" />
    +      <point x="3330.85546875" y="297.0" />
    +      <point x="3889.0693359375" y="297.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.GameHandler" target="it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="3448.625" y="146.0" />
    +      <point x="3361.375" y="146.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ErrorMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="-39.25" y="14.0" />
    +      <point x="2032.98046875" y="247.0" />
    +      <point x="1154.75" y="247.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket" target="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="2541.1943359375" y="55.0" />
    +      <point x="2287.625" y="55.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +  </edges>
    +  <settings layout="Hierarchic" zoom="0.42051989878076834" showDependencies="true" x="1965.5" y="420.0000000000001" />
    +  <SelectedNodes />
    +  <Categories />
    +  <SCOPE>All</SCOPE>
    +  <VISIBILITY>private</VISIBILITY>
    +</Diagram>
    +
    diff --git a/deliverables/uml/classes/uml_28_06_client_classes.png b/deliverables/uml/classes/uml_28_06_client_classes.png
    new file mode 100644
    index 00000000..653140f4
    Binary files /dev/null and b/deliverables/uml/classes/uml_28_06_client_classes.png differ
    diff --git a/deliverables/uml/classes/uml_28_06_client_classes.uml b/deliverables/uml/classes/uml_28_06_client_classes.uml
    new file mode 100644
    index 00000000..dc83262f
    --- /dev/null
    +++ b/deliverables/uml/classes/uml_28_06_client_classes.uml
    @@ -0,0 +1,101 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<Diagram>
    +  <ID>JAVA</ID>
    +  <OriginalElement>/home/locav/IS23-AM10 (copia)/src/main/java/it/polimi/is23am10/client</OriginalElement>
    +  <nodes>
    +    <node x="562.5" y="106.0">it.polimi.is23am10.client.Client</node>
    +    <node x="-79.0" y="-14.0">it.polimi.is23am10.client.userinterface.helpers.PrivatePatternsHelper</node>
    +    <node x="216.5" y="426.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.BookShelfSelectionCallBack</node>
    +    <node x="51.5" y="306.0">it.polimi.is23am10.client.userinterface.guifactory.CallBack</node>
    +    <node x="213.0" y="226.0">it.polimi.is23am10.client.userinterface.UserInterface</node>
    +    <node x="196.0" y="306.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.TextFieldCallBack</node>
    +    <node x="-133.5" y="226.0">it.polimi.is23am10.client.userinterface.helpers.OutputWrapper</node>
    +    <node x="548.5" y="-14.0">it.polimi.is23am10.client.RMIClient</node>
    +    <node x="-124.5" y="106.0">it.polimi.is23am10.client.userinterface.CommandLineInterface</node>
    +    <node x="323.0" y="106.0">it.polimi.is23am10.client.userinterface.GraphicUserInterface</node>
    +    <node x="401.5" y="226.0">it.polimi.is23am10.client.LockObject</node>
    +    <node x="123.5" y="106.0">it.polimi.is23am10.client.interfaces.AlarmConsumer</node>
    +    <node x="505.0" y="426.0">it.polimi.is23am10.client.userinterface.helpers.CLIStrings</node>
    +    <node x="25.5" y="426.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.ButtonCallBack</node>
    +    <node x="156.0" y="-14.0">it.polimi.is23am10.client.SocketClient</node>
    +    <node x="334.5" y="-14.0">it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder</node>
    +    <node x="-118.5" y="306.0">it.polimi.is23am10.client.userinterface.helpers.ANSICodes</node>
    +    <node x="403.0" y="306.0">it.polimi.is23am10.client.userinterface.guifactory.GuiFactory</node>
    +    <node x="560.5" y="226.0">it.polimi.is23am10.client.IClient</node>
    +  </nodes>
    +  <notes />
    +  <edges>
    +    <edge source="it.polimi.is23am10.client.SocketClient" target="it.polimi.is23am10.client.Client" relationship="GENERALIZATION">
    +      <point x="40.0" y="14.0" />
    +      <point x="270.0" y="60.0" />
    +      <point x="610.0" y="60.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.IClient" relationship="REALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.client.Client" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.guifactory.CallBack" target="it.polimi.is23am10.client.userinterface.guifactory.interfaces.BookShelfSelectionCallBack" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="110.0" y="360.0" />
    +      <point x="350.0" y="360.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.guifactory.CallBack" target="it.polimi.is23am10.client.userinterface.guifactory.interfaces.ButtonCallBack" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.CommandLineInterface" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="REALIZATION">
    +      <point x="60.0" y="14.0" />
    +      <point x="50.0" y="160.0" />
    +      <point x="250.0" y="160.0" />
    +      <point x="-40.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="TO_ONE">
    +      <point x="-31.66666666666663" y="14.0" />
    +      <point x="578.3333333333334" y="160.0" />
    +      <point x="470.0" y="160.0" />
    +      <point x="470.0" y="180.0" />
    +      <point x="330.0" y="180.0" />
    +      <point x="40.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.LockObject" relationship="TO_ONE">
    +      <point x="-31.66666666666663" y="14.0" />
    +      <point x="578.3333333333334" y="160.0" />
    +      <point x="470.0" y="160.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.GraphicUserInterface" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="REALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="430.0" y="160.0" />
    +      <point x="250.0" y="160.0" />
    +      <point x="-40.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.client.interfaces.AlarmConsumer" relationship="TO_ONE">
    +      <point x="-40.0" y="14.0" />
    +      <point x="570.0" y="40.0" />
    +      <point x="210.0" y="40.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.SocketClient" target="it.polimi.is23am10.client.interfaces.AlarmConsumer" relationship="TO_ONE">
    +      <point x="-40.0" y="14.0" />
    +      <point x="190.0" y="40.0" />
    +      <point x="210.0" y="40.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.CommandLineInterface" target="it.polimi.is23am10.client.userinterface.helpers.OutputWrapper" relationship="TO_ONE">
    +      <point x="-60.0" y="14.0" />
    +      <point x="-20.0" y="-14.0" />
    +    </edge>
    +  </edges>
    +  <settings layout="Hierarchic Compact" zoom="1.0" showDependencies="true" x="-293.0" y="161.0" />
    +  <SelectedNodes />
    +  <Categories />
    +  <SCOPE>All</SCOPE>
    +  <VISIBILITY>private</VISIBILITY>
    +</Diagram>
    +
    diff --git a/deliverables/uml/classes/uml_28_06_server_classes.png b/deliverables/uml/classes/uml_28_06_server_classes.png
    new file mode 100644
    index 00000000..d3eead18
    Binary files /dev/null and b/deliverables/uml/classes/uml_28_06_server_classes.png differ
    diff --git a/deliverables/uml/classes/uml_28_06_server_classes.uml b/deliverables/uml/classes/uml_28_06_server_classes.uml
    new file mode 100644
    index 00000000..7b209230
    --- /dev/null
    +++ b/deliverables/uml/classes/uml_28_06_server_classes.uml
    @@ -0,0 +1,315 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<Diagram>
    +  <ID>JAVA</ID>
    +  <OriginalElement>/home/locav/IS23-AM10 (copia)/src/main/java/it/polimi/is23am10/server</OriginalElement>
    +  <nodes>
    +    <node x="1191.0" y="557.0">it.polimi.is23am10.server.controller.ServerControllerState</node>
    +    <node x="545.047554347826" y="64.0">it.polimi.is23am10.server.network.gamehandler.GameHandler</node>
    +    <node x="2286.0" y="557.0">it.polimi.is23am10.server.Server</node>
    +    <node x="2550.672554347826" y="142.0">it.polimi.is23am10.server.network.messages.SnoozeACKMessage</node>
    +    <node x="582.375" y="406.0">it.polimi.is23am10.server.model.pattern.SharedPattern</node>
    +    <node x="106.54755434782601" y="142.0">it.polimi.is23am10.server.controller.interfaces.IServerControllerAction</node>
    +    <node x="579.875" y="484.0">it.polimi.is23am10.server.model.pattern.AbstractPattern</node>
    +    <node x="1412.922554347826" y="142.0">it.polimi.is23am10.server.network.messages.AvailableGamesMessage</node>
    +    <node x="-138.82608695652175" y="230.0">it.polimi.is23am10.server.network.virtualview.VirtualPlayer</node>
    +    <node x="870.172554347826" y="64.0">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi</node>
    +    <node x="601.797554347826" y="142.0">it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler</node>
    +    <node x="283.758152173913" y="328.0">it.polimi.is23am10.server.model.items.card.SharedCard</node>
    +    <node x="1689.4239130434783" y="142.0">it.polimi.is23am10.server.network.messages.ChatMessage</node>
    +    <node x="2781.672554347826" y="142.0">it.polimi.is23am10.server.network.messages.GameMessage</node>
    +    <node x="487.797554347826" y="142.0">it.polimi.is23am10.server.model.game.Game</node>
    +    <node x="836.125" y="328.0">it.polimi.is23am10.server.model.items.bookshelf.Bookshelf</node>
    +    <node x="-25.952445652173992" y="64.0">it.polimi.is23am10.server.controller.ServerControllerAction</node>
    +    <node x="220.047554347826" y="64.0">it.polimi.is23am10.server.controller.ServerControllerRmiBindings</node>
    +    <node x="380.0" y="557.0">it.polimi.is23am10.server.controller.ServerDebugPrefixString</node>
    +    <node x="1797.414402173913" y="64.0">it.polimi.is23am10.server.command.SnoozeGameTimerCommand</node>
    +    <node x="-208.0" y="328.0">it.polimi.is23am10.server.model.score.Score</node>
    +    <node x="1570.414402173913" y="64.0">it.polimi.is23am10.server.command.AddPlayerCommand</node>
    +    <node x="2104.0" y="557.0">it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock</node>
    +    <node x="970.922554347826" y="142.0">it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector</node>
    +    <node x="1097.172554347826" y="64.0">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket</node>
    +    <node x="796.375" y="406.0">it.polimi.is23am10.server.model.items.card.AbstractCard</node>
    +    <node x="1187.789402173913" y="328.0">it.polimi.is23am10.server.model.items.card.PrivateCard</node>
    +    <node x="483.539402173913" y="230.0">it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector</node>
    +    <node x="86.0" y="557.0">it.polimi.is23am10.server.controller.ClientConnectionChecker</node>
    +    <node x="2385.414402173913" y="64.0">it.polimi.is23am10.server.command.GetAvailableGamesCommand</node>
    +    <node x="1235.922554347826" y="142.0">it.polimi.is23am10.server.network.messages.ErrorMessage</node>
    +    <node x="664.0" y="557.0">it.polimi.is23am10.server.model.factory.SharedPatternFactory</node>
    +    <node x="504.0" y="-14.0">it.polimi.is23am10.server.controller.ServerControllerSocket</node>
    +    <node x="-97.491847826087" y="142.0">it.polimi.is23am10.server.network.virtualview.VirtualView</node>
    +    <node x="2091.414402173913" y="64.0">it.polimi.is23am10.server.command.SendChatMessageCommand</node>
    +    <node x="1452.0" y="557.0">it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector</node>
    +    <node x="928.0" y="557.0">it.polimi.is23am10.server.model.factory.PrivatePatternFactory</node>
    +    <node x="54.0" y="230.0">it.polimi.is23am10.server.model.items.board.Board</node>
    +    <node x="2683.414402173913" y="64.0">it.polimi.is23am10.server.command.MoveTilesCommand</node>
    +    <node x="369.375" y="406.0">it.polimi.is23am10.server.model.pattern.PrivatePattern</node>
    +    <node x="1906.0" y="557.0">it.polimi.is23am10.server.model.factory.GameFactory</node>
    +    <node x="1097.7486413043478" y="230.0">it.polimi.is23am10.server.model.player.Player</node>
    +    <node x="2910.414402173913" y="64.0">it.polimi.is23am10.server.command.StartGameCommand</node>
    +    <node x="1705.0" y="557.0">it.polimi.is23am10.server.model.factory.PlayerFactory</node>
    +    <node x="-208.0" y="557.0">it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance</node>
    +    <node x="2430.0" y="557.0">it.polimi.is23am10.server.model.items.tile.Tile</node>
    +    <node x="170.0" y="230.0">it.polimi.is23am10.server.controller.interfaces.ControllerConsumer</node>
    +    <node x="1840.383152173913" y="230.0">it.polimi.is23am10.server.network.messages.AbstractMessage</node>
    +    <node x="2335.672554347826" y="142.0">it.polimi.is23am10.server.command.AbstractCommand</node>
    +  </nodes>
    +  <notes />
    +  <edges>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi" target="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="973.672554347826" y="112.0" />
    +      <point x="1093.422554347826" y="112.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ChatMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="-39.0" y="14.0" />
    +      <point x="1728.4239130434783" y="190.0" />
    +      <point x="1146.2486413043478" y="190.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="61.25" y="14.0" />
    +      <point x="1154.672554347826" y="190.0" />
    +      <point x="1146.2486413043478" y="190.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.game.Game" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="534.797554347826" y="200.0" />
    +      <point x="1146.2486413043478" y="200.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="1146.2486413043478" y="308.0" />
    +      <point x="900.125" y="308.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="709.297554347826" y="190.0" />
    +      <point x="1146.2486413043478" y="190.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.PrivateCard" target="it.polimi.is23am10.server.model.items.card.AbstractCard" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="1257.789402173913" y="381.0" />
    +      <point x="899.875" y="381.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" target="it.polimi.is23am10.server.model.score.Score" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="-65.82608695652175" y="288.0" />
    +      <point x="-161.0" y="288.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.AddPlayerCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="1673.914402173913" y="112.0" />
    +      <point x="2433.172554347826" y="112.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerRmiBindings" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="356.047554347826" y="112.0" />
    +      <point x="279.047554347826" y="112.0" />
    +      <point x="57.5" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.SnoozeACKMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="2656.172554347826" y="200.0" />
    +      <point x="1932.883152173913" y="200.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerAction" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="REALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="87.04755434782601" y="112.0" />
    +      <point x="164.047554347826" y="112.0" />
    +      <point x="-57.5" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket" target="it.polimi.is23am10.server.controller.ServerControllerAction" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="618.5" y="39.0" />
    +      <point x="87.04755434782601" y="39.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.StartGameCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="3015.414402173913" y="112.0" />
    +      <point x="2433.172554347826" y="112.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.AvailableGamesMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="60.25" y="14.0" />
    +      <point x="1593.672554347826" y="200.0" />
    +      <point x="1932.883152173913" y="200.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" target="it.polimi.is23am10.server.controller.interfaces.ControllerConsumer" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="221.547554347826" y="190.0" />
    +      <point x="301.0" y="190.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector" relationship="REALIZATION">
    +      <point x="-61.25" y="14.0" />
    +      <point x="1032.172554347826" y="210.0" />
    +      <point x="575.039402173913" y="210.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.pattern.PrivatePattern" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="465.875" y="454.0" />
    +      <point x="572.625" y="454.0" />
    +      <point x="572.625" y="464.0" />
    +      <point x="631.375" y="464.0" />
    +      <point x="-51.5" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SnoozeGameTimerCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="1934.414402173913" y="112.0" />
    +      <point x="2433.172554347826" y="112.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SendChatMessageCommand" target="it.polimi.is23am10.server.network.messages.ChatMessage" relationship="TO_ONE">
    +      <point x="-68.5" y="14.0" />
    +      <point x="2159.914402173913" y="122.0" />
    +      <point x="1767.4239130434783" y="122.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SendChatMessageCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="68.5" y="14.0" />
    +      <point x="2296.914402173913" y="112.0" />
    +      <point x="2433.172554347826" y="112.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.AbstractCard" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="DEPENDENCY">
    +      <point x="0.0" y="14.0" />
    +      <point x="899.875" y="454.0" />
    +      <point x="734.375" y="454.0" />
    +      <point x="51.5" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.GameHandler" target="it.polimi.is23am10.server.model.game.Game" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="622.047554347826" y="112.0" />
    +      <point x="534.797554347826" y="112.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.score.Score" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="1146.2486413043478" y="298.0" />
    +      <point x="-161.0" y="298.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ErrorMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="-39.25" y="14.0" />
    +      <point x="1275.172554347826" y="190.0" />
    +      <point x="1146.2486413043478" y="190.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.items.card.PrivateCard" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="1146.2486413043478" y="278.0" />
    +      <point x="1257.789402173913" y="278.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ChatMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="39.0" y="14.0" />
    +      <point x="1806.4239130434783" y="200.0" />
    +      <point x="1932.883152173913" y="200.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket" target="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="1213.172554347826" y="112.0" />
    +      <point x="1093.422554347826" y="112.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.SharedCard" target="it.polimi.is23am10.server.model.items.card.AbstractCard" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="354.258152173913" y="381.0" />
    +      <point x="899.875" y="381.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.GetAvailableGamesCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="2524.414402173913" y="112.0" />
    +      <point x="2433.172554347826" y="112.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.AvailableGamesMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="-60.25" y="14.0" />
    +      <point x="1473.172554347826" y="190.0" />
    +      <point x="1146.2486413043478" y="190.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.pattern.SharedPattern" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="679.375" y="454.0" />
    +      <point x="572.625" y="454.0" />
    +      <point x="572.625" y="464.0" />
    +      <point x="631.375" y="464.0" />
    +      <point x="-51.5" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualView" target="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="-29.491847826086996" y="200.0" />
    +      <point x="-65.82608695652175" y="200.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" target="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="-65.82608695652175" y="278.0" />
    +      <point x="900.125" y="278.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.game.Game" target="it.polimi.is23am10.server.model.items.board.Board" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="534.797554347826" y="210.0" />
    +      <point x="102.0" y="210.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.GameHandler" target="it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="622.047554347826" y="112.0" />
    +      <point x="709.297554347826" y="112.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.GameMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="2863.172554347826" y="200.0" />
    +      <point x="1932.883152173913" y="200.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.MoveTilesCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="14.0" />
    +      <point x="2786.914402173913" y="112.0" />
    +      <point x="2433.172554347826" y="112.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ErrorMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="39.25" y="14.0" />
    +      <point x="1353.672554347826" y="200.0" />
    +      <point x="1932.883152173913" y="200.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualView" target="it.polimi.is23am10.server.model.items.board.Board" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="-29.491847826086996" y="190.0" />
    +      <point x="102.0" y="190.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket" target="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket" relationship="TO_ONE">
    +      <point x="0.0" y="14.0" />
    +      <point x="618.5" y="39.0" />
    +      <point x="1213.172554347826" y="39.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +  </edges>
    +  <settings layout="Hierarchic" zoom="0.5488205434458047" showDependencies="true" x="1456.5000000000002" y="285.5" />
    +  <SelectedNodes />
    +  <Categories />
    +  <SCOPE>All</SCOPE>
    +  <VISIBILITY>private</VISIBILITY>
    +</Diagram>
    +
    diff --git a/deliverables/uml/complete/uml_28_06.png b/deliverables/uml/complete/uml_28_06.png
    new file mode 100644
    index 00000000..395f5070
    Binary files /dev/null and b/deliverables/uml/complete/uml_28_06.png differ
    diff --git a/deliverables/uml/complete/uml_28_06.uml b/deliverables/uml/complete/uml_28_06.uml
    new file mode 100644
    index 00000000..19024df3
    --- /dev/null
    +++ b/deliverables/uml/complete/uml_28_06.uml
    @@ -0,0 +1,481 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<Diagram>
    +  <ID>JAVA</ID>
    +  <OriginalElement>/home/locav/IS23-AM10 (copia)/src/main</OriginalElement>
    +  <nodes>
    +    <node x="3470.0" y="4774.0">it.polimi.is23am10.server.controller.ServerControllerState</node>
    +    <node x="4504.9228515625" y="937.0">it.polimi.is23am10.server.network.gamehandler.GameHandler</node>
    +    <node x="5252.0" y="4774.0">it.polimi.is23am10.server.Server</node>
    +    <node x="541.927734375" y="2331.0">it.polimi.is23am10.server.network.messages.SnoozeACKMessage</node>
    +    <node x="2625.375" y="4448.5">it.polimi.is23am10.server.model.pattern.SharedPattern</node>
    +    <node x="2374.0" y="4774.0">it.polimi.is23am10.utils.ErrorTypeString</node>
    +    <node x="5459.7548828125" y="2238.0">it.polimi.is23am10.server.controller.interfaces.IServerControllerAction</node>
    +    <node x="2838.125" y="4596.0">it.polimi.is23am10.server.model.pattern.AbstractPattern</node>
    +    <node x="2092.75" y="960.0">it.polimi.is23am10.client.userinterface.GraphicUserInterface</node>
    +    <node x="1811.4228515625" y="2284.0">it.polimi.is23am10.server.network.messages.AvailableGamesMessage</node>
    +    <node x="3895.75" y="2348.0">it.polimi.is23am10.client.LockObject</node>
    +    <node x="4989.552734375" y="3220.5">it.polimi.is23am10.server.network.virtualview.VirtualPlayer</node>
    +    <node x="3180.75" y="1052.0">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi</node>
    +    <node x="4360.75" y="2238.0">it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler</node>
    +    <node x="4318.0478515625" y="4000.0">it.polimi.is23am10.server.model.items.card.SharedCard</node>
    +    <node x="4587.5" y="-14.0">it.polimi.is23am10.client.SocketClient</node>
    +    <node x="1586.0" y="4774.0">it.polimi.is23am10.client.userinterface.guifactory.GuiFactory</node>
    +    <node x="1371.427734375" y="2238.0">it.polimi.is23am10.server.network.messages.ChatMessage</node>
    +    <node x="774.927734375" y="2307.0">it.polimi.is23am10.server.network.messages.GameMessage</node>
    +    <node x="4638.75" y="1755.0">it.polimi.is23am10.server.model.game.Game</node>
    +    <node x="3528.6728515625" y="3931.0">it.polimi.is23am10.server.model.items.bookshelf.Bookshelf</node>
    +    <node x="3947.0" y="5047.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.BookShelfSelectionCallBack</node>
    +    <node x="5170.625" y="1052.0">it.polimi.is23am10.server.controller.ServerControllerAction</node>
    +    <node x="2074.4228515625" y="2250.5">it.polimi.is23am10.client.userinterface.UserInterface</node>
    +    <node x="5752.0" y="983.0">it.polimi.is23am10.server.controller.ServerControllerRmiBindings</node>
    +    <node x="1218.0" y="6330.0">it.polimi.is23am10.server.controller.ServerDebugPrefixString</node>
    +    <node x="5893.0" y="6330.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.TextFieldCallBack</node>
    +    <node x="1159.25" y="1040.5">it.polimi.is23am10.server.command.SnoozeGameTimerCommand</node>
    +    <node x="4894.052734375" y="3816.0">it.polimi.is23am10.server.model.score.Score</node>
    +    <node x="405.0" y="1017.5">it.polimi.is23am10.server.command.AddPlayerCommand</node>
    +    <node x="120.427734375" y="2019.5">it.polimi.is23am10.client.userinterface.helpers.OutputWrapper</node>
    +    <node x="910.0" y="6330.0">it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock</node>
    +    <node x="4162.0" y="6330.0">it.polimi.is23am10.utils.CustomKeySerializer</node>
    +    <node x="2819.75" y="2169.0">it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector</node>
    +    <node x="488.0" y="4774.0">it.polimi.is23am10.utils.config.AppConfig</node>
    +    <node x="2091.0" y="4774.0">it.polimi.is23am10.utils.config.AppConfigContext</node>
    +    <node x="4237.0" y="5047.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.ButtonCallBack</node>
    +    <node x="2170.0" y="6330.0">it.polimi.is23am10.utils.MoveTileCommandTypeAdaptor</node>
    +    <node x="5183.0" y="6330.0">it.polimi.is23am10.utils.ThreadLocalTypeAdapterFactory</node>
    +    <node x="4679.0" y="6330.0">it.polimi.is23am10.utils.MoveCommandHelper</node>
    +    <node x="2873.75" y="1052.0">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket</node>
    +    <node x="3056.375" y="4436.0">it.polimi.is23am10.server.model.items.card.AbstractCard</node>
    +    <node x="2531.375" y="4046.0">it.polimi.is23am10.server.model.items.card.PrivateCard</node>
    +    <node x="3292.1337890625" y="3336.5">it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector</node>
    +    <node x="4874.0" y="4774.0">it.polimi.is23am10.server.controller.ClientConnectionChecker</node>
    +    <node x="4038.0" y="4774.0">it.polimi.is23am10.client.userinterface.guifactory.CallBack</node>
    +    <node x="1961.0" y="6330.0">it.polimi.is23am10.App</node>
    +    <node x="1455.25" y="1075.0">it.polimi.is23am10.server.command.GetAvailableGamesCommand</node>
    +    <node x="2446.4228515625" y="2272.5">it.polimi.is23am10.server.network.messages.ErrorMessage</node>
    +    <node x="822.0" y="4774.0">it.polimi.is23am10.server.model.factory.SharedPatternFactory</node>
    +    <node x="634.0" y="925.5">it.polimi.is23am10.client.userinterface.CommandLineInterface</node>
    +    <node x="3093.7548828125" y="124.0">it.polimi.is23am10.server.controller.ServerControllerSocket</node>
    +    <node x="4052.75" y="2100.0">it.polimi.is23am10.server.network.virtualview.VirtualView</node>
    +    <node x="1755.25" y="1052.0">it.polimi.is23am10.server.command.SendChatMessageCommand</node>
    +    <node x="4508.0" y="4774.0">it.polimi.is23am10.utils.ArgParser</node>
    +    <node x="86.0" y="6598.0">it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector</node>
    +    <node x="3181.75" y="2331.0">it.polimi.is23am10.client.IClient</node>
    +    <node x="2716.0" y="4774.0">it.polimi.is23am10.server.model.factory.PrivatePatternFactory</node>
    +    <node x="5243.552734375" y="3140.0">it.polimi.is23am10.server.model.items.board.Board</node>
    +    <node x="-208.0" y="994.5">it.polimi.is23am10.server.command.MoveTilesCommand</node>
    +    <node x="3847.75" y="546.0">it.polimi.is23am10.client.Client</node>
    +    <node x="1624.0" y="6330.0">it.polimi.is23am10.client.userinterface.helpers.PrivatePatternsHelper</node>
    +    <node x="3269.0" y="6330.0">it.polimi.is23am10.utils.IndexValidator</node>
    +    <node x="2841.375" y="4448.5">it.polimi.is23am10.server.model.pattern.PrivatePattern</node>
    +    <node x="5574.0" y="6330.0">it.polimi.is23am10.server.model.factory.GameFactory</node>
    +    <node x="2698.875" y="3071.0">it.polimi.is23am10.server.model.player.Player</node>
    +    <node x="5721.0478515625" y="78.0">it.polimi.is23am10.client.RMIClient</node>
    +    <node x="142.0" y="1017.5">it.polimi.is23am10.server.command.StartGameCommand</node>
    +    <node x="2848.0" y="6330.0">it.polimi.is23am10.server.model.factory.PlayerFactory</node>
    +    <node x="-208.0" y="6330.0">it.polimi.is23am10.utils.MovesValidator</node>
    +    <node x="-208.0" y="6598.0">it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance</node>
    +    <node x="671.0" y="6330.0">it.polimi.is23am10.server.model.items.tile.Tile</node>
    +    <node x="-208.0" y="4774.0">it.polimi.is23am10.client.userinterface.helpers.CLIStrings</node>
    +    <node x="3613.0" y="6330.0">it.polimi.is23am10.utils.CustomKeyDeserializer</node>
    +    <node x="3651.75" y="1087.5">it.polimi.is23am10.client.interfaces.AlarmConsumer</node>
    +    <node x="4631.552734375" y="3382.5">it.polimi.is23am10.server.controller.interfaces.ControllerConsumer</node>
    +    <node x="322.0" y="6330.0">it.polimi.is23am10.utils.CommandSyntaxValidator</node>
    +    <node x="1303.25" y="3347.0">it.polimi.is23am10.server.network.messages.AbstractMessage</node>
    +    <node x="984.927734375" y="2318.5">it.polimi.is23am10.server.command.AbstractCommand</node>
    +    <node x="151.0" y="4774.0">it.polimi.is23am10.client.userinterface.helpers.ANSICodes</node>
    +    <node x="5808.0" y="4774.0">it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder</node>
    +    <node x="5569.0" y="4774.0">it.polimi.is23am10.utils.Coordinates</node>
    +  </nodes>
    +  <notes />
    +  <edges>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf" relationship="TO_ONE">
    +      <point x="0.0" y="342.5" />
    +      <point x="2845.375" y="3786.0" />
    +      <point x="3707.6728515625" y="3786.0" />
    +      <point x="0.0" y="-170.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.GraphicUserInterface" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="REALIZATION">
    +      <point x="0.0" y="158.5" />
    +      <point x="2268.75" y="1723.0" />
    +      <point x="2120.6337890625" y="1723.0" />
    +      <point x="2120.6337890625" y="1733.0" />
    +      <point x="2162.4228515625" y="1733.0" />
    +      <point x="-88.0" y="-111.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" target="it.polimi.is23am10.server.model.score.Score" relationship="TO_ONE">
    +      <point x="0.0" y="193.0" />
    +      <point x="0.0" y="-285.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.SnoozeACKMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="0.0" y="31.0" />
    +      <point x="648.427734375" y="2990.0" />
    +      <point x="1432.75" y="2990.0" />
    +      <point x="0.0" y="-66.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.IClient" relationship="REALIZATION">
    +      <point x="-89.0" y="572.5" />
    +      <point x="3936.75" y="1713.0" />
    +      <point x="3429.25" y="1713.0" />
    +      <point x="82.5" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket" target="it.polimi.is23am10.server.controller.ServerControllerAction" relationship="TO_ONE">
    +      <point x="0.0" y="101.0" />
    +      <point x="3262.2548828125" y="505.0" />
    +      <point x="5417.625" y="505.0" />
    +      <point x="0.0" y="-66.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.guifactory.CallBack" target="it.polimi.is23am10.client.userinterface.guifactory.interfaces.BookShelfSelectionCallBack" relationship="TO_ONE">
    +      <point x="0.0" y="111.5" />
    +      <point x="4203.5" y="5022.0" />
    +      <point x="4082.0" y="5022.0" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.StartGameCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="101.0" />
    +      <point x="263.5" y="1713.0" />
    +      <point x="1083.427734375" y="1713.0" />
    +      <point x="0.0" y="-43.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector" relationship="REALIZATION">
    +      <point x="85.5" y="193.0" />
    +      <point x="3076.25" y="3010.0" />
    +      <point x="3373.1337890625" y="3010.0" />
    +      <point x="-81.0" y="-77.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SendChatMessageCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="-69.0" y="66.5" />
    +      <point x="1824.25" y="1713.0" />
    +      <point x="1083.427734375" y="1713.0" />
    +      <point x="0.0" y="-43.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi" target="it.polimi.is23am10.client.IClient" relationship="TO_ONE">
    +      <point x="58.5" y="66.5" />
    +      <point x="3356.25" y="1713.0" />
    +      <point x="3264.25" y="1713.0" />
    +      <point x="-82.5" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.score.Score" relationship="TO_ONE">
    +      <point x="0.0" y="342.5" />
    +      <point x="2845.375" y="3776.0" />
    +      <point x="5106.552734375" y="3776.0" />
    +      <point x="0.0" y="-285.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.GameHandler" target="it.polimi.is23am10.server.model.game.Game" relationship="TO_ONE">
    +      <point x="0.0" y="181.5" />
    +      <point x="4730.9228515625" y="1713.0" />
    +      <point x="4924.75" y="1713.0" />
    +      <point x="0.0" y="-607.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ErrorMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="61.75" y="89.5" />
    +      <point x="2631.6728515625" y="3000.0" />
    +      <point x="2845.375" y="3000.0" />
    +      <point x="0.0" y="-342.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.guifactory.CallBack" target="it.polimi.is23am10.client.userinterface.guifactory.interfaces.ButtonCallBack" relationship="TO_ONE">
    +      <point x="0.0" y="111.5" />
    +      <point x="4203.5" y="5022.0" />
    +      <point x="4325.0" y="5022.0" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.items.card.PrivateCard" relationship="TO_ONE">
    +      <point x="0.0" y="342.5" />
    +      <point x="2845.375" y="3796.0" />
    +      <point x="2674.375" y="3796.0" />
    +      <point x="0.0" y="-55.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.LockObject" relationship="TO_ONE">
    +      <point x="89.0" y="572.5" />
    +      <point x="4114.75" y="1713.0" />
    +      <point x="3948.5048828125" y="1713.0" />
    +      <point x="3948.5048828125" y="1723.0" />
    +      <point x="3964.25" y="1723.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.SharedCard" target="it.polimi.is23am10.server.model.items.card.AbstractCard" relationship="GENERALIZATION">
    +      <point x="0.0" y="101.0" />
    +      <point x="4486.5478515625" y="4411.0" />
    +      <point x="3160.875" y="4411.0" />
    +      <point x="0.0" y="-55.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.GetAvailableGamesCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="43.5" />
    +      <point x="1595.25" y="1713.0" />
    +      <point x="1083.427734375" y="1713.0" />
    +      <point x="0.0" y="-43.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.AvailableGamesMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="60.75" y="78.0" />
    +      <point x="1993.6728515625" y="3000.0" />
    +      <point x="2845.375" y="3000.0" />
    +      <point x="0.0" y="-342.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.client.Client" relationship="GENERALIZATION">
    +      <point x="-95.25" y="147.0" />
    +      <point x="5816.2978515625" y="485.0" />
    +      <point x="4919.6298828125" y="485.0" />
    +      <point x="4919.6298828125" y="525.0" />
    +      <point x="4025.75" y="525.0" />
    +      <point x="0.0" y="-572.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.GameMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="0.0" y="55.0" />
    +      <point x="869.927734375" y="2990.0" />
    +      <point x="1432.75" y="2990.0" />
    +      <point x="0.0" y="-66.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="TO_ONE">
    +      <point x="89.0" y="572.5" />
    +      <point x="4114.75" y="1713.0" />
    +      <point x="3948.5048828125" y="1713.0" />
    +      <point x="3948.5048828125" y="1723.0" />
    +      <point x="2338.4228515625" y="1723.0" />
    +      <point x="88.0" y="-111.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.MoveTilesCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="124.0" />
    +      <point x="-43.0" y="1713.0" />
    +      <point x="1083.427734375" y="1713.0" />
    +      <point x="0.0" y="-43.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector" relationship="TO_ONE">
    +      <point x="89.0" y="572.5" />
    +      <point x="4114.75" y="1713.0" />
    +      <point x="3948.5048828125" y="1713.0" />
    +      <point x="3948.5048828125" y="1723.0" />
    +      <point x="3609.75" y="1723.0" />
    +      <point x="3609.75" y="3010.0" />
    +      <point x="3535.1337890625" y="3010.0" />
    +      <point x="81.0" y="-77.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualView" target="it.polimi.is23am10.server.model.items.board.Board" relationship="TO_ONE">
    +      <point x="0.0" y="262.0" />
    +      <point x="4196.75" y="3010.0" />
    +      <point x="5282.5048828125" y="3010.0" />
    +      <point x="5282.5048828125" y="3020.0" />
    +      <point x="5393.052734375" y="3020.0" />
    +      <point x="0.0" y="-273.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi" target="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    +      <point x="-58.5" y="66.5" />
    +      <point x="3239.25" y="1713.0" />
    +      <point x="2990.75" y="1713.0" />
    +      <point x="0.0" y="-193.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ChatMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="52.5" y="124.0" />
    +      <point x="1528.927734375" y="3000.0" />
    +      <point x="2845.375" y="3000.0" />
    +      <point x="0.0" y="-342.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="-85.5" y="193.0" />
    +      <point x="2905.25" y="3000.0" />
    +      <point x="2845.375" y="3000.0" />
    +      <point x="0.0" y="-342.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.game.Game" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="0.0" y="607.0" />
    +      <point x="4924.75" y="2990.0" />
    +      <point x="4579.0439453125" y="2990.0" />
    +      <point x="4579.0439453125" y="3040.0" />
    +      <point x="2845.375" y="3040.0" />
    +      <point x="0.0" y="-342.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="0.0" y="124.0" />
    +      <point x="4489.75" y="3000.0" />
    +      <point x="2845.375" y="3000.0" />
    +      <point x="0.0" y="-342.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.PrivateCard" target="it.polimi.is23am10.server.model.items.card.AbstractCard" relationship="GENERALIZATION">
    +      <point x="0.0" y="55.0" />
    +      <point x="2674.375" y="4411.0" />
    +      <point x="3160.875" y="4411.0" />
    +      <point x="0.0" y="-55.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.client.interfaces.AlarmConsumer" relationship="TO_ONE">
    +      <point x="95.25" y="147.0" />
    +      <point x="6006.7978515625" y="485.0" />
    +      <point x="6200.5" y="485.0" />
    +      <point x="6200.5" y="495.0" />
    +      <point x="4760.5" y="495.0" />
    +      <point x="4760.5" y="515.0" />
    +      <point x="3739.75" y="515.0" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.SocketClient" target="it.polimi.is23am10.client.interfaces.AlarmConsumer" relationship="TO_ONE">
    +      <point x="-89.0" y="239.0" />
    +      <point x="4676.5" y="485.0" />
    +      <point x="4760.5" y="485.0" />
    +      <point x="4760.5" y="515.0" />
    +      <point x="3739.75" y="515.0" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.AddPlayerCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="101.0" />
    +      <point x="509.5" y="1713.0" />
    +      <point x="1083.427734375" y="1713.0" />
    +      <point x="0.0" y="-43.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerRmiBindings" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="TO_ONE">
    +      <point x="0.0" y="135.5" />
    +      <point x="5971.0" y="1713.0" />
    +      <point x="6085.75" y="1713.0" />
    +      <point x="6085.75" y="1723.0" />
    +      <point x="6020.0048828125" y="1723.0" />
    +      <point x="186.75" y="-124.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="TO_ONE">
    +      <point x="95.25" y="147.0" />
    +      <point x="6006.7978515625" y="485.0" />
    +      <point x="6200.5" y="485.0" />
    +      <point x="6200.5" y="1713.0" />
    +      <point x="6085.75" y="1713.0" />
    +      <point x="6085.75" y="1723.0" />
    +      <point x="6020.0048828125" y="1723.0" />
    +      <point x="186.75" y="-124.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerAction" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="REALIZATION">
    +      <point x="0.0" y="66.5" />
    +      <point x="5417.625" y="1713.0" />
    +      <point x="5646.5048828125" y="1713.0" />
    +      <point x="-186.75" y="-124.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.server.network.virtualview.VirtualView" relationship="TO_ONE">
    +      <point x="89.0" y="572.5" />
    +      <point x="4114.75" y="1713.0" />
    +      <point x="3948.5048828125" y="1713.0" />
    +      <point x="3948.5048828125" y="1723.0" />
    +      <point x="4196.75" y="1723.0" />
    +      <point x="0.0" y="-262.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.AvailableGamesMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="-60.75" y="78.0" />
    +      <point x="1872.1728515625" y="2990.0" />
    +      <point x="1432.75" y="2990.0" />
    +      <point x="0.0" y="-66.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" target="it.polimi.is23am10.server.controller.interfaces.ControllerConsumer" relationship="TO_ONE">
    +      <point x="0.0" y="124.0" />
    +      <point x="5833.2548828125" y="3050.0" />
    +      <point x="4800.552734375" y="3050.0" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.CommandLineInterface" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="REALIZATION">
    +      <point x="88.0" y="193.0" />
    +      <point x="898.0" y="1723.0" />
    +      <point x="2120.6337890625" y="1723.0" />
    +      <point x="2120.6337890625" y="1733.0" />
    +      <point x="2162.4228515625" y="1733.0" />
    +      <point x="-88.0" y="-111.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.pattern.PrivatePattern" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="GENERALIZATION">
    +      <point x="0.0" y="42.5" />
    +      <point x="2938.875" y="4566.0" />
    +      <point x="2831.125" y="4566.0" />
    +      <point x="2831.125" y="4576.0" />
    +      <point x="2890.125" y="4576.0" />
    +      <point x="-52.0" y="-66.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SnoozeGameTimerCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="78.0" />
    +      <point x="1297.25" y="1713.0" />
    +      <point x="1083.427734375" y="1713.0" />
    +      <point x="0.0" y="-43.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SendChatMessageCommand" target="it.polimi.is23am10.server.network.messages.ChatMessage" relationship="TO_ONE">
    +      <point x="69.0" y="66.5" />
    +      <point x="1962.25" y="1733.0" />
    +      <point x="1476.427734375" y="1733.0" />
    +      <point x="0.0" y="-124.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.CommandLineInterface" target="it.polimi.is23am10.client.userinterface.helpers.OutputWrapper" relationship="TO_ONE">
    +      <point x="-88.0" y="193.0" />
    +      <point x="722.0" y="1723.0" />
    +      <point x="287.427734375" y="1723.0" />
    +      <point x="0.0" y="-342.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.AbstractCard" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="DEPENDENCY">
    +      <point x="0.0" y="55.0" />
    +      <point x="3160.875" y="4566.0" />
    +      <point x="2994.125" y="4566.0" />
    +      <point x="52.0" y="-66.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ChatMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="-52.5" y="124.0" />
    +      <point x="1423.927734375" y="2990.0" />
    +      <point x="1432.75" y="2990.0" />
    +      <point x="0.0" y="-66.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket" target="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    +      <point x="0.0" y="66.5" />
    +      <point x="0.0" y="-193.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.SocketClient" target="it.polimi.is23am10.client.Client" relationship="GENERALIZATION">
    +      <point x="89.0" y="239.0" />
    +      <point x="4854.5" y="485.0" />
    +      <point x="4919.6298828125" y="485.0" />
    +      <point x="4919.6298828125" y="525.0" />
    +      <point x="4025.75" y="525.0" />
    +      <point x="0.0" y="-572.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.pattern.SharedPattern" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="GENERALIZATION">
    +      <point x="0.0" y="42.5" />
    +      <point x="2723.375" y="4566.0" />
    +      <point x="2831.125" y="4566.0" />
    +      <point x="2831.125" y="4576.0" />
    +      <point x="2890.125" y="4576.0" />
    +      <point x="-52.0" y="-66.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualView" target="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" relationship="TO_ONE">
    +      <point x="0.0" y="262.0" />
    +      <point x="4196.75" y="3010.0" />
    +      <point x="5282.5048828125" y="3010.0" />
    +      <point x="5282.5048828125" y="3040.0" />
    +      <point x="5106.552734375" y="3040.0" />
    +      <point x="0.0" y="-193.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" target="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf" relationship="TO_ONE">
    +      <point x="0.0" y="193.0" />
    +      <point x="5106.552734375" y="3796.0" />
    +      <point x="3707.6728515625" y="3796.0" />
    +      <point x="0.0" y="-170.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.game.Game" target="it.polimi.is23am10.server.model.items.board.Board" relationship="TO_ONE">
    +      <point x="0.0" y="607.0" />
    +      <point x="4924.75" y="2990.0" />
    +      <point x="4579.0439453125" y="2990.0" />
    +      <point x="4579.0439453125" y="3030.0" />
    +      <point x="5393.052734375" y="3030.0" />
    +      <point x="0.0" y="-273.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.GameHandler" target="it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler" relationship="TO_ONE">
    +      <point x="0.0" y="181.5" />
    +      <point x="4730.9228515625" y="1713.0" />
    +      <point x="4489.75" y="1713.0" />
    +      <point x="0.0" y="-124.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ErrorMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="-61.75" y="89.5" />
    +      <point x="2508.1728515625" y="2990.0" />
    +      <point x="1432.75" y="2990.0" />
    +      <point x="0.0" y="-66.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket" target="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket" relationship="TO_ONE">
    +      <point x="0.0" y="101.0" />
    +      <point x="3262.2548828125" y="505.0" />
    +      <point x="2990.75" y="505.0" />
    +      <point x="0.0" y="-66.5" />
    +    </edge>
    +  </edges>
    +  <settings layout="Hierarchic" zoom="0.13183183183183184" showDependencies="true" x="3009.0" y="3306.0" />
    +  <SelectedNodes />
    +  <Categories>
    +    <Category>Fields</Category>
    +    <Category>Methods</Category>
    +  </Categories>
    +  <SCOPE>All</SCOPE>
    +  <VISIBILITY>private</VISIBILITY>
    +</Diagram>
    +
    diff --git a/deliverables/uml/complete/uml_28_06_client.png b/deliverables/uml/complete/uml_28_06_client.png
    new file mode 100644
    index 00000000..7ea322ef
    Binary files /dev/null and b/deliverables/uml/complete/uml_28_06_client.png differ
    diff --git a/deliverables/uml/complete/uml_28_06_client.uml b/deliverables/uml/complete/uml_28_06_client.uml
    new file mode 100644
    index 00000000..22fd5b60
    --- /dev/null
    +++ b/deliverables/uml/complete/uml_28_06_client.uml
    @@ -0,0 +1,104 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<Diagram>
    +  <ID>JAVA</ID>
    +  <OriginalElement>/home/locav/IS23-AM10 (copia)/src/main/java/it/polimi/is23am10/client</OriginalElement>
    +  <nodes>
    +    <node x="1129.0" y="733.0">it.polimi.is23am10.client.Client</node>
    +    <node x="2001.0" y="182.0">it.polimi.is23am10.client.userinterface.helpers.PrivatePatternsHelper</node>
    +    <node x="2032.5" y="1274.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.BookShelfSelectionCallBack</node>
    +    <node x="1641.5" y="113.5">it.polimi.is23am10.client.userinterface.guifactory.CallBack</node>
    +    <node x="531.0" y="2393.5">it.polimi.is23am10.client.userinterface.UserInterface</node>
    +    <node x="1432.0" y="194.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.TextFieldCallBack</node>
    +    <node x="0.0" y="2163.0">it.polimi.is23am10.client.userinterface.helpers.OutputWrapper</node>
    +    <node x="1016.5" y="78.5">it.polimi.is23am10.client.RMIClient</node>
    +    <node x="71.0" y="1112.5">it.polimi.is23am10.client.userinterface.CommandLineInterface</node>
    +    <node x="451.0" y="1147.0">it.polimi.is23am10.client.userinterface.GraphicUserInterface</node>
    +    <node x="1058.5" y="2491.0">it.polimi.is23am10.client.LockObject</node>
    +    <node x="-120.5" y="1274.0">it.polimi.is23am10.client.interfaces.AlarmConsumer</node>
    +    <node x="1510.0" y="549.5">it.polimi.is23am10.client.userinterface.helpers.CLIStrings</node>
    +    <node x="1839.0" y="1274.0">it.polimi.is23am10.client.userinterface.guifactory.interfaces.ButtonCallBack</node>
    +    <node x="169.0" y="-13.5">it.polimi.is23am10.client.SocketClient</node>
    +    <node x="-133.5" y="113.0">it.polimi.is23am10.client.userinterface.helpers.CommandsBuilder</node>
    +    <node x="821.0" y="630.0">it.polimi.is23am10.client.userinterface.helpers.ANSICodes</node>
    +    <node x="1577.0" y="2255.0">it.polimi.is23am10.client.userinterface.guifactory.GuiFactory</node>
    +    <node x="1222.0" y="2474.0">it.polimi.is23am10.client.IClient</node>
    +  </nodes>
    +  <notes />
    +  <edges>
    +    <edge source="it.polimi.is23am10.client.SocketClient" target="it.polimi.is23am10.client.Client" relationship="GENERALIZATION">
    +      <point x="92.0" y="238.5" />
    +      <point x="439.0" y="485.0" />
    +      <point x="1307.0" y="485.0" />
    +      <point x="0.0" y="-572.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.IClient" relationship="REALIZATION">
    +      <point x="80.0" y="572.0" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.client.Client" relationship="GENERALIZATION">
    +      <point x="100.0" y="146.5" />
    +      <point x="0.0" y="-572.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.guifactory.CallBack" target="it.polimi.is23am10.client.userinterface.guifactory.interfaces.BookShelfSelectionCallBack" relationship="TO_ONE">
    +      <point x="120.0" y="111.5" />
    +      <point x="1927.0" y="465.0" />
    +      <point x="2167.0" y="365.0" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.guifactory.CallBack" target="it.polimi.is23am10.client.userinterface.guifactory.interfaces.ButtonCallBack" relationship="TO_ONE">
    +      <point x="120.0" y="111.5" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.CommandLineInterface" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="REALIZATION">
    +      <point x="80.0" y="192.5" />
    +      <point x="327.0" y="1525.0" />
    +      <point x="627.0" y="1525.0" />
    +      <point x="-80.0" y="-111.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="TO_ONE">
    +      <point x="-92.0" y="572.0" />
    +      <point x="1215.0" y="1905.0" />
    +      <point x="1127.0" y="1905.0" />
    +      <point x="1127.0" y="2005.0" />
    +      <point x="787.0" y="2005.0" />
    +      <point x="80.0" y="-111.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.LockObject" relationship="TO_ONE">
    +      <point x="-92.0" y="572.0" />
    +      <point x="1215.0" y="1905.0" />
    +      <point x="1127.0" y="1905.0" />
    +      <point x="0.0" y="-14.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.GraphicUserInterface" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="REALIZATION">
    +      <point x="0.0" y="158.0" />
    +      <point x="-80.0" y="-111.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.client.interfaces.AlarmConsumer" relationship="TO_ONE">
    +      <point x="-100.0" y="146.5" />
    +      <point x="1107.0" y="505.0" />
    +      <point x="267.0" y="505.0" />
    +      <point x="267.0" y="1085.0" />
    +      <point x="-33.0" y="1085.0" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.SocketClient" target="it.polimi.is23am10.client.interfaces.AlarmConsumer" relationship="TO_ONE">
    +      <point x="-80.0" y="238.5" />
    +      <point x="267.0" y="1085.0" />
    +      <point x="-33.0" y="1085.0" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.CommandLineInterface" target="it.polimi.is23am10.client.userinterface.helpers.OutputWrapper" relationship="TO_ONE">
    +      <point x="-80.0" y="192.5" />
    +      <point x="0.0" y="-342.0" />
    +    </edge>
    +  </edges>
    +  <settings layout="Hierarchic Compact" zoom="0.4547149486244614" showDependencies="true" x="1007.9999999999999" y="951.44" />
    +  <SelectedNodes />
    +  <Categories>
    +    <Category>Fields</Category>
    +    <Category>Methods</Category>
    +  </Categories>
    +  <SCOPE>All</SCOPE>
    +  <VISIBILITY>private</VISIBILITY>
    +</Diagram>
    +
    diff --git a/deliverables/uml/complete/uml_28_06_server.png b/deliverables/uml/complete/uml_28_06_server.png
    new file mode 100644
    index 00000000..ec612a6f
    Binary files /dev/null and b/deliverables/uml/complete/uml_28_06_server.png differ
    diff --git a/deliverables/uml/complete/uml_28_06_server.uml b/deliverables/uml/complete/uml_28_06_server.uml
    new file mode 100644
    index 00000000..bd57f841
    --- /dev/null
    +++ b/deliverables/uml/complete/uml_28_06_server.uml
    @@ -0,0 +1,312 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<Diagram>
    +  <ID>JAVA</ID>
    +  <OriginalElement>/home/locav/IS23-AM10 (copia)/src/main/java/it/polimi/is23am10/server</OriginalElement>
    +  <nodes>
    +    <node x="1310.0" y="3651.0">it.polimi.is23am10.server.controller.ServerControllerState</node>
    +    <node x="2774.4361413043475" y="237.0">it.polimi.is23am10.server.network.gamehandler.GameHandler</node>
    +    <node x="2165.0" y="3651.0">it.polimi.is23am10.server.Server</node>
    +    <node x="767.6807065217388" y="1224.5">it.polimi.is23am10.server.network.messages.SnoozeACKMessage</node>
    +    <node x="1967.1861413043475" y="3327.0">it.polimi.is23am10.server.model.pattern.SharedPattern</node>
    +    <node x="3806.0461956521735" y="1132.0">it.polimi.is23am10.server.controller.interfaces.IServerControllerAction</node>
    +    <node x="2179.9361413043475" y="3474.0">it.polimi.is23am10.server.model.pattern.AbstractPattern</node>
    +    <node x="1000.6807065217388" y="1178.0">it.polimi.is23am10.server.network.messages.AvailableGamesMessage</node>
    +    <node x="3525.0461956521735" y="2091.5">it.polimi.is23am10.server.network.virtualview.VirtualPlayer</node>
    +    <node x="2263.7499999999995" y="352.0">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi</node>
    +    <node x="2593.2499999999995" y="1132.0">it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler</node>
    +    <node x="3019.680706521739" y="2880.0">it.polimi.is23am10.server.model.items.card.SharedCard</node>
    +    <node x="1508.0461956521735" y="1132.0">it.polimi.is23am10.server.network.messages.ChatMessage</node>
    +    <node x="1263.6807065217388" y="1201.0">it.polimi.is23am10.server.network.messages.GameMessage</node>
    +    <node x="2906.0461956521735" y="649.0">it.polimi.is23am10.server.model.game.Game</node>
    +    <node x="3523.7323369565215" y="2811.0">it.polimi.is23am10.server.model.items.bookshelf.Bookshelf</node>
    +    <node x="4175.546195652174" y="352.0">it.polimi.is23am10.server.controller.ServerControllerAction</node>
    +    <node x="3717.5461956521735" y="283.0">it.polimi.is23am10.server.controller.ServerControllerRmiBindings</node>
    +    <node x="3029.0" y="3651.0">it.polimi.is23am10.server.controller.ServerDebugPrefixString</node>
    +    <node x="1528.9999999999995" y="340.5">it.polimi.is23am10.server.command.SnoozeGameTimerCommand</node>
    +    <node x="2141.4823369565215" y="2696.0">it.polimi.is23am10.server.model.score.Score</node>
    +    <node x="704.9999999999995" y="317.5">it.polimi.is23am10.server.command.AddPlayerCommand</node>
    +    <node x="2721.0" y="3651.0">it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock</node>
    +    <node x="2081.301630434782" y="1063.0">it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector</node>
    +    <node x="2009.7499999999995" y="352.0">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket</node>
    +    <node x="2398.1861413043475" y="3315.0">it.polimi.is23am10.server.model.items.card.AbstractCard</node>
    +    <node x="1695.6766304347823" y="2926.0">it.polimi.is23am10.server.model.items.card.PrivateCard</node>
    +    <node x="2651.7961956521735" y="2207.0">it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector</node>
    +    <node x="1787.0" y="3651.0">it.polimi.is23am10.server.controller.ClientConnectionChecker</node>
    +    <node x="55.0" y="375.0">it.polimi.is23am10.server.command.GetAvailableGamesCommand</node>
    +    <node x="1815.7499999999995" y="1166.5">it.polimi.is23am10.server.network.messages.ErrorMessage</node>
    +    <node x="-208.0" y="3651.0">it.polimi.is23am10.server.model.factory.SharedPatternFactory</node>
    +    <node x="3110.5611413043475" y="-14.0">it.polimi.is23am10.server.controller.ServerControllerSocket</node>
    +    <node x="3498.0461956521735" y="994.0">it.polimi.is23am10.server.network.virtualview.VirtualView</node>
    +    <node x="1232.9999999999995" y="352.0">it.polimi.is23am10.server.command.SendChatMessageCommand</node>
    +    <node x="-208.0" y="4357.0">it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector</node>
    +    <node x="556.0" y="3651.0">it.polimi.is23am10.server.model.factory.PrivatePatternFactory</node>
    +    <node x="3042.5461956521735" y="2011.0">it.polimi.is23am10.server.model.items.board.Board</node>
    +    <node x="354.99999999999955" y="294.5">it.polimi.is23am10.server.command.MoveTilesCommand</node>
    +    <node x="2183.1861413043475" y="3327.0">it.polimi.is23am10.server.model.pattern.PrivatePattern</node>
    +    <node x="3856.0" y="3651.0">it.polimi.is23am10.server.model.factory.GameFactory</node>
    +    <node x="2003.6861413043475" y="1942.0">it.polimi.is23am10.server.model.player.Player</node>
    +    <node x="-208.0" y="317.5">it.polimi.is23am10.server.command.StartGameCommand</node>
    +    <node x="3435.0" y="3651.0">it.polimi.is23am10.server.model.factory.PlayerFactory</node>
    +    <node x="4175.0" y="3651.0">it.polimi.is23am10.server.controller.exceptions.NullGameHandlerInstance</node>
    +    <node x="2482.0" y="3651.0">it.polimi.is23am10.server.model.items.tile.Tile</node>
    +    <node x="4010.546195652174" y="2253.0">it.polimi.is23am10.server.controller.interfaces.ControllerConsumer</node>
    +    <node x="1151.8749999999995" y="2218.0">it.polimi.is23am10.server.network.messages.AbstractMessage</node>
    +    <node x="550.6807065217388" y="1212.5">it.polimi.is23am10.server.command.AbstractCommand</node>
    +  </nodes>
    +  <notes />
    +  <edges>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi" target="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    +      <point x="0.0" y="66.0" />
    +      <point x="2380.7499999999995" y="619.0" />
    +      <point x="2252.301630434782" y="619.0" />
    +      <point x="0.0" y="-192.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ChatMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="52.5" y="123.5" />
    +      <point x="1665.5461956521735" y="1892.0" />
    +      <point x="2150.1861413043475" y="1892.0" />
    +      <point x="0.0" y="-342.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="-85.5" y="192.5" />
    +      <point x="2166.801630434782" y="1892.0" />
    +      <point x="2150.1861413043475" y="1892.0" />
    +      <point x="0.0" y="-342.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.game.Game" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="0.0" y="606.5" />
    +      <point x="3192.0461956521735" y="1912.0" />
    +      <point x="2150.1861413043475" y="1912.0" />
    +      <point x="0.0" y="-342.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf" relationship="TO_ONE">
    +      <point x="0.0" y="342.0" />
    +      <point x="2150.1861413043475" y="2656.0" />
    +      <point x="3702.7323369565215" y="2656.0" />
    +      <point x="0.0" y="-169.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="0.0" y="123.5" />
    +      <point x="2722.2499999999995" y="1892.0" />
    +      <point x="2150.1861413043475" y="1892.0" />
    +      <point x="0.0" y="-342.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.PrivateCard" target="it.polimi.is23am10.server.model.items.card.AbstractCard" relationship="GENERALIZATION">
    +      <point x="0.0" y="54.5" />
    +      <point x="1838.6766304347823" y="3290.0" />
    +      <point x="2502.6861413043475" y="3290.0" />
    +      <point x="0.0" y="-54.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" target="it.polimi.is23am10.server.model.score.Score" relationship="TO_ONE">
    +      <point x="0.0" y="192.5" />
    +      <point x="3642.0461956521735" y="2676.0" />
    +      <point x="2353.9823369565215" y="2676.0" />
    +      <point x="0.0" y="-284.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.AddPlayerCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="100.5" />
    +      <point x="809.4999999999995" y="619.0" />
    +      <point x="649.1807065217388" y="619.0" />
    +      <point x="0.0" y="-43.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerRmiBindings" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="TO_ONE">
    +      <point x="4.547473508864641E-13" y="135.0" />
    +      <point x="3936.546195652174" y="619.0" />
    +      <point x="3992.796195652174" y="619.0" />
    +      <point x="-186.75" y="-123.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.SnoozeACKMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="0.0" y="31.0" />
    +      <point x="874.1807065217388" y="1882.0" />
    +      <point x="1281.3749999999995" y="1882.0" />
    +      <point x="0.0" y="-66.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerAction" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="REALIZATION">
    +      <point x="0.0" y="66.0" />
    +      <point x="4422.546195652174" y="619.0" />
    +      <point x="4366.296195652174" y="619.0" />
    +      <point x="186.75" y="-123.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket" target="it.polimi.is23am10.server.controller.ServerControllerAction" relationship="TO_ONE">
    +      <point x="0.0" y="100.5" />
    +      <point x="3279.0611413043475" y="212.0" />
    +      <point x="4422.546195652174" y="212.0" />
    +      <point x="0.0" y="-66.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.StartGameCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="100.5" />
    +      <point x="-86.5" y="619.0" />
    +      <point x="649.1807065217388" y="619.0" />
    +      <point x="0.0" y="-43.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.AvailableGamesMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="-60.75" y="77.5" />
    +      <point x="1061.4307065217388" y="1882.0" />
    +      <point x="1281.3749999999995" y="1882.0" />
    +      <point x="0.0" y="-66.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" target="it.polimi.is23am10.server.controller.interfaces.ControllerConsumer" relationship="TO_ONE">
    +      <point x="0.0" y="123.5" />
    +      <point x="0.0" y="-31.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector" relationship="REALIZATION">
    +      <point x="85.5" y="192.5" />
    +      <point x="2337.801630434782" y="1902.0" />
    +      <point x="2813.7961956521735" y="1902.0" />
    +      <point x="0.0" y="-77.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.pattern.PrivatePattern" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="GENERALIZATION">
    +      <point x="0.0" y="42.5" />
    +      <point x="2280.6861413043475" y="3444.0" />
    +      <point x="2172.9361413043475" y="3444.0" />
    +      <point x="2172.9361413043475" y="3454.0" />
    +      <point x="2231.9361413043475" y="3454.0" />
    +      <point x="-52.0" y="-66.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SnoozeGameTimerCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="77.5" />
    +      <point x="1666.9999999999995" y="619.0" />
    +      <point x="649.1807065217388" y="619.0" />
    +      <point x="0.0" y="-43.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SendChatMessageCommand" target="it.polimi.is23am10.server.network.messages.ChatMessage" relationship="TO_ONE">
    +      <point x="69.0" y="66.0" />
    +      <point x="1439.9999999999995" y="629.0" />
    +      <point x="1613.0461956521735" y="629.0" />
    +      <point x="0.0" y="-123.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.SendChatMessageCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="-69.0" y="66.0" />
    +      <point x="1301.9999999999995" y="619.0" />
    +      <point x="649.1807065217388" y="619.0" />
    +      <point x="0.0" y="-43.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.AbstractCard" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="DEPENDENCY">
    +      <point x="0.0" y="54.5" />
    +      <point x="2502.6861413043475" y="3444.0" />
    +      <point x="2335.9361413043475" y="3444.0" />
    +      <point x="52.0" y="-66.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.GameHandler" target="it.polimi.is23am10.server.model.game.Game" relationship="TO_ONE">
    +      <point x="0.0" y="181.0" />
    +      <point x="3000.4361413043475" y="619.0" />
    +      <point x="3192.0461956521735" y="619.0" />
    +      <point x="0.0" y="-606.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.score.Score" relationship="TO_ONE">
    +      <point x="0.0" y="342.0" />
    +      <point x="2150.1861413043475" y="2666.0" />
    +      <point x="2353.9823369565215" y="2666.0" />
    +      <point x="0.0" y="-284.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ErrorMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="61.75" y="89.0" />
    +      <point x="2000.9999999999995" y="1892.0" />
    +      <point x="2150.1861413043475" y="1892.0" />
    +      <point x="0.0" y="-342.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.items.card.PrivateCard" relationship="TO_ONE">
    +      <point x="0.0" y="342.0" />
    +      <point x="2150.1861413043475" y="2676.0" />
    +      <point x="1838.6766304347823" y="2676.0" />
    +      <point x="0.0" y="-54.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ChatMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="-52.5" y="123.5" />
    +      <point x="1560.5461956521735" y="1882.0" />
    +      <point x="1281.3749999999995" y="1882.0" />
    +      <point x="0.0" y="-66.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket" target="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    +      <point x="0.0" y="66.0" />
    +      <point x="2126.7499999999995" y="619.0" />
    +      <point x="2252.301630434782" y="619.0" />
    +      <point x="0.0" y="-192.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.items.card.SharedCard" target="it.polimi.is23am10.server.model.items.card.AbstractCard" relationship="GENERALIZATION">
    +      <point x="0.0" y="100.5" />
    +      <point x="3188.180706521739" y="3290.0" />
    +      <point x="2502.6861413043475" y="3290.0" />
    +      <point x="0.0" y="-54.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.GetAvailableGamesCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="43.0" />
    +      <point x="195.0" y="619.0" />
    +      <point x="649.1807065217388" y="619.0" />
    +      <point x="0.0" y="-43.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.AvailableGamesMessage" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="60.75" y="77.5" />
    +      <point x="1182.9307065217388" y="1892.0" />
    +      <point x="2150.1861413043475" y="1892.0" />
    +      <point x="0.0" y="-342.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.pattern.SharedPattern" target="it.polimi.is23am10.server.model.pattern.AbstractPattern" relationship="GENERALIZATION">
    +      <point x="0.0" y="42.5" />
    +      <point x="2065.1861413043475" y="3444.0" />
    +      <point x="2172.9361413043475" y="3444.0" />
    +      <point x="2172.9361413043475" y="3454.0" />
    +      <point x="2231.9361413043475" y="3454.0" />
    +      <point x="-52.0" y="-66.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualView" target="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" relationship="TO_ONE">
    +      <point x="0.0" y="261.5" />
    +      <point x="0.0" y="-192.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" target="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf" relationship="TO_ONE">
    +      <point x="0.0" y="192.5" />
    +      <point x="3642.0461956521735" y="2646.0" />
    +      <point x="3702.7323369565215" y="2646.0" />
    +      <point x="0.0" y="-169.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.game.Game" target="it.polimi.is23am10.server.model.items.board.Board" relationship="TO_ONE">
    +      <point x="0.0" y="606.5" />
    +      <point x="0.0" y="-273.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.gamehandler.GameHandler" target="it.polimi.is23am10.server.network.gamehandler.CurrentPlayerHandler" relationship="TO_ONE">
    +      <point x="0.0" y="181.0" />
    +      <point x="3000.4361413043475" y="619.0" />
    +      <point x="2722.2499999999995" y="619.0" />
    +      <point x="0.0" y="-123.5" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.GameMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="0.0" y="54.5" />
    +      <point x="1358.6807065217388" y="1882.0" />
    +      <point x="1281.3749999999995" y="1882.0" />
    +      <point x="0.0" y="-66.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.command.MoveTilesCommand" target="it.polimi.is23am10.server.command.AbstractCommand" relationship="GENERALIZATION">
    +      <point x="0.0" y="123.5" />
    +      <point x="519.9999999999995" y="619.0" />
    +      <point x="649.1807065217388" y="619.0" />
    +      <point x="0.0" y="-43.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.messages.ErrorMessage" target="it.polimi.is23am10.server.network.messages.AbstractMessage" relationship="GENERALIZATION">
    +      <point x="-61.75" y="89.0" />
    +      <point x="1877.4999999999995" y="1882.0" />
    +      <point x="1281.3749999999995" y="1882.0" />
    +      <point x="0.0" y="-66.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualView" target="it.polimi.is23am10.server.model.items.board.Board" relationship="TO_ONE">
    +      <point x="0.0" y="261.5" />
    +      <point x="3642.0461956521735" y="1922.0" />
    +      <point x="3192.0461956521735" y="1922.0" />
    +      <point x="0.0" y="-273.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket" target="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket" relationship="TO_ONE">
    +      <point x="0.0" y="100.5" />
    +      <point x="3279.0611413043475" y="212.0" />
    +      <point x="2126.7499999999995" y="212.0" />
    +      <point x="0.0" y="-66.0" />
    +    </edge>
    +  </edges>
    +  <settings layout="Hierarchic" zoom="0.19868748585652865" showDependencies="true" x="2231.0" y="2185.4999999999995" />
    +  <SelectedNodes />
    +  <Categories>
    +    <Category>Fields</Category>
    +    <Category>Methods</Category>
    +  </Categories>
    +  <SCOPE>All</SCOPE>
    +  <VISIBILITY>private</VISIBILITY>
    +</Diagram>
    +
    diff --git a/deliverables/uml/high_level/uml_high_level_client.png b/deliverables/uml/high_level/uml_high_level_client.png
    new file mode 100644
    index 00000000..9e05b72f
    Binary files /dev/null and b/deliverables/uml/high_level/uml_high_level_client.png differ
    diff --git a/deliverables/uml/high_level/uml_high_level_client.uml b/deliverables/uml/high_level/uml_high_level_client.uml
    new file mode 100644
    index 00000000..e640339a
    --- /dev/null
    +++ b/deliverables/uml/high_level/uml_high_level_client.uml
    @@ -0,0 +1,59 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<Diagram>
    +  <ID>JAVA</ID>
    +  <OriginalElement>/home/locav/IS23-AM10 (copia)/src/main/java/it/polimi/is23am10/client</OriginalElement>
    +  <nodes>
    +    <node x="456.5" y="446.0">it.polimi.is23am10.client.userinterface.helpers.OutputWrapper</node>
    +    <node x="145.5" y="446.0">it.polimi.is23am10.client.userinterface.CommandLineInterface</node>
    +    <node x="-267.5" y="446.0">it.polimi.is23am10.client.Client</node>
    +    <node x="-77.0" y="446.0">it.polimi.is23am10.client.userinterface.UserInterface</node>
    +    <node x="-324.5" y="286.0">it.polimi.is23am10.client.Client.MessageDeserializer</node>
    +    <node x="-361.5" y="546.0">it.polimi.is23am10.client.RMIClient</node>
    +    <node x="-429.5" y="446.0">it.polimi.is23am10.client.IClient</node>
    +    <node x="-107.0" y="366.0">it.polimi.is23am10.client.userinterface.GraphicUserInterface</node>
    +    <node x="-214.0" y="546.0">it.polimi.is23am10.client.SocketClient</node>
    +  </nodes>
    +  <notes />
    +  <edges>
    +    <edge source="it.polimi.is23am10.client.SocketClient" target="it.polimi.is23am10.client.Client" relationship="GENERALIZATION">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.IClient" relationship="REALIZATION">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.RMIClient" target="it.polimi.is23am10.client.Client" relationship="GENERALIZATION">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client.MessageDeserializer" target="it.polimi.is23am10.client.Client" relationship="INNER_CLASS">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.CommandLineInterface" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="REALIZATION">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.Client" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.GraphicUserInterface" target="it.polimi.is23am10.client.userinterface.UserInterface" relationship="REALIZATION">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.client.userinterface.CommandLineInterface" target="it.polimi.is23am10.client.userinterface.helpers.OutputWrapper" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +  </edges>
    +  <settings layout="Hierarchic" zoom="1.0" showDependencies="true" x="97.0" y="430.0" />
    +  <SelectedNodes />
    +  <Categories>
    +    <Category>Inner Classes</Category>
    +  </Categories>
    +  <SCOPE>All</SCOPE>
    +  <VISIBILITY>private</VISIBILITY>
    +</Diagram>
    +
    diff --git a/deliverables/uml/high_level/uml_high_level_server.png b/deliverables/uml/high_level/uml_high_level_server.png
    new file mode 100644
    index 00000000..68cb7d1d
    Binary files /dev/null and b/deliverables/uml/high_level/uml_high_level_server.png differ
    diff --git a/deliverables/uml/high_level/uml_high_level_server.uml b/deliverables/uml/high_level/uml_high_level_server.uml
    new file mode 100644
    index 00000000..e54e383e
    --- /dev/null
    +++ b/deliverables/uml/high_level/uml_high_level_server.uml
    @@ -0,0 +1,97 @@
    +<?xml version="1.0" encoding="UTF-8"?>
    +<Diagram>
    +  <ID>JAVA</ID>
    +  <OriginalElement>/home/locav/IS23-AM10 (copia)/src/main/java/it/polimi/is23am10/server</OriginalElement>
    +  <nodes>
    +    <node x="-93.0" y="-74.0">it.polimi.is23am10.server.controller.ServerControllerAction</node>
    +    <node x="236.5" y="226.0">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi</node>
    +    <node x="-94.5" y="26.0">it.polimi.is23am10.server.controller.ServerControllerSocket</node>
    +    <node x="-96.0" y="126.0">it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket</node>
    +    <node x="222.5" y="26.0">it.polimi.is23am10.server.controller.ServerControllerSocket.CoordinatesDeserializer</node>
    +    <node x="-28.0" y="526.0">it.polimi.is23am10.server.model.items.board.Board</node>
    +    <node x="-364.0" y="526.0">it.polimi.is23am10.server.model.items.bookshelf.Bookshelf</node>
    +    <node x="-53.0" y="726.0">it.polimi.is23am10.server.network.virtualview.VirtualPlayer</node>
    +    <node x="-95.0" y="-174.0">it.polimi.is23am10.server.controller.interfaces.IServerControllerAction</node>
    +    <node x="293.0" y="526.0">it.polimi.is23am10.server.model.score.Score</node>
    +    <node x="-48.0" y="626.0">it.polimi.is23am10.server.network.virtualview.VirtualView</node>
    +    <node x="-102.5" y="226.0">it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector</node>
    +    <node x="-27.0" y="426.0">it.polimi.is23am10.server.model.game.Game</node>
    +    <node x="-28.5" y="326.0">it.polimi.is23am10.server.model.player.Player</node>
    +    <node x="-409.5" y="26.0">it.polimi.is23am10.server.controller.ServerControllerSocket.CommandDeserializer</node>
    +  </nodes>
    +  <notes />
    +  <edges>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi" target="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.score.Score" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.game.Game" target="it.polimi.is23am10.server.model.player.Player" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.player.Player" target="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket" target="it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" target="it.polimi.is23am10.server.model.score.Score" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerAction" target="it.polimi.is23am10.server.controller.interfaces.IServerControllerAction" relationship="REALIZATION">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket.CoordinatesDeserializer" target="it.polimi.is23am10.server.controller.ServerControllerSocket" relationship="INNER_CLASS">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualView" target="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualPlayer" target="it.polimi.is23am10.server.model.items.bookshelf.Bookshelf" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket" target="it.polimi.is23am10.server.controller.ServerControllerAction" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.model.game.Game" target="it.polimi.is23am10.server.model.items.board.Board" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket.CommandDeserializer" target="it.polimi.is23am10.server.controller.ServerControllerSocket" relationship="INNER_CLASS">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.network.virtualview.VirtualView" target="it.polimi.is23am10.server.model.items.board.Board" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +    <edge source="it.polimi.is23am10.server.controller.ServerControllerSocket" target="it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket" relationship="TO_ONE">
    +      <point x="0.0" y="-0.0" />
    +      <point x="0.0" y="-0.0" />
    +    </edge>
    +  </edges>
    +  <settings layout="Hierarchic" zoom="0.644640234948605" showDependencies="true" x="339.60136674259684" y="425.0" />
    +  <SelectedNodes />
    +  <Categories>
    +    <Category>Inner Classes</Category>
    +  </Categories>
    +  <SCOPE>All</SCOPE>
    +  <VISIBILITY>private</VISIBILITY>
    +</Diagram>
    +
    diff --git a/deliveries/expanded_main.jpg b/deliveries/expanded_main.jpg
    deleted file mode 100644
    index 39861c8f..00000000
    Binary files a/deliveries/expanded_main.jpg and /dev/null differ
    diff --git a/deliveries/expanded_main.uml b/deliveries/expanded_main.uml
    deleted file mode 100644
    index 2f8a094f..00000000
    --- a/deliveries/expanded_main.uml
    +++ /dev/null
    @@ -1,321 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<Diagram>
    -  <ID>JAVA</ID>
    -  <OriginalElement>/home/locav/IS23-AM10 (copia)/is23am10/src/main</OriginalElement>
    -  <nodes>
    -    <node x="1851.5" y="834.5">it.polimi.is23am10.score.Score</node>
    -    <node x="1866.5" y="-407.0">it.polimi.is23am10.items.scoreblock.ScoreBlock</node>
    -    <node x="1018.5" y="933.0">it.polimi.is23am10.items.card.PrivateCard</node>
    -    <node x="1012.5" y="1127.5">it.polimi.is23am10.pattern.PrivatePatternFactory</node>
    -    <node x="-178.5" y="-133.5">it.polimi.is23am10.game.Game</node>
    -    <node x="1355.5" y="933.5">it.polimi.is23am10.factory.PlayerFactory</node>
    -    <node x="298.5" y="613.5">it.polimi.is23am10.utils.IndexValidator</node>
    -    <node x="707.0" y="1142.0">it.polimi.is23am10.pattern.PrivatePattern</node>
    -    <node x="201.0" y="933.0">it.polimi.is23am10.items.card.AbstractCard</node>
    -    <node x="2182.5" y="76.5">it.polimi.is23am10.items.tile.Tile</node>
    -    <node x="2507.0" y="1290.5">it.polimi.is23am10.items.bookshelf.Bookshelf</node>
    -    <node x="-186.0" y="-312.5">it.polimi.is23am10.factory.GameFactory</node>
    -    <node x="162.5" y="1362.0">it.polimi.is23am10.pattern.SharedPattern</node>
    -    <node x="205.0" y="1142.0">it.polimi.is23am10.pattern.AbstractPattern</node>
    -    <node x="2351.0" y="657.5">it.polimi.is23am10.items.tile.Tile.TileType</node>
    -    <node x="2979.5" y="1591.0">it.polimi.is23am10.pattern.SharedPatternFactory</node>
    -    <node x="1834.0" y="387.0">it.polimi.is23am10.player.Player</node>
    -    <node x="299.0" y="6.5">it.polimi.is23am10.items.board.Board</node>
    -    <node x="-166.0" y="933.0">it.polimi.is23am10.items.card.SharedCard</node>
    -  </nodes>
    -  <notes />
    -  <edges>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.factory.PlayerFactory" relationship="LINK_IN_DOCS">
    -      <point x="-126.0" y="55.0" />
    -      <point x="1555.0" y="628.0" />
    -      <point x="-5.0" y="-59.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.score.Score" relationship="CREATE">
    -      <point x="204.5" y="-0.0" />
    -      <point x="-108.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePatternFactory" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="CREATE">
    -      <point x="0.0" y="45.5" />
    -      <point x="1140.0" y="1363.0" />
    -      <point x="-193.0" y="-30.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.items.tile.Tile" relationship="CREATE">
    -      <point x="161.0" y="-5.0" />
    -      <point x="0.0" y="-5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="CREATE">
    -      <point x="0.0" y="59.5" />
    -      <point x="1560.0" y="1353.0" />
    -      <point x="-193.0" y="-40.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.game.Game" relationship="DEPENDENCY">
    -      <point x="-20.0" y="-326.5" />
    -      <point x="-60.0" y="-187.0" />
    -      <point x="-220.0" y="-187.0" />
    -      <point x="-220.0" y="193.0" />
    -      <point x="-138.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.utils.IndexValidator" relationship="DEPENDENCY">
    -      <point x="0.0" y="186.5" />
    -      <point x="0.0" y="-59.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.tile.Tile.TileType" target="it.polimi.is23am10.items.tile.Tile" relationship="INNER_CLASS">
    -      <point x="-15.0" y="-15.5" />
    -      <point x="77.0" y="116.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.factory.PlayerFactory" relationship="DEPENDENCY">
    -      <point x="20.0" y="326.5" />
    -      <point x="-20.0" y="833.0" />
    -      <point x="1540.0" y="833.0" />
    -      <point x="-20.0" y="-59.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.GameFactory" target="it.polimi.is23am10.game.Game" relationship="CREATE">
    -      <point x="0.0" y="45.5" />
    -      <point x="0.0" y="-326.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.card.SharedCard" relationship="CREATE">
    -      <point x="5.0" y="-0.0" />
    -      <point x="5.0" y="-60.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePatternFactory" target="it.polimi.is23am10.items.tile.Tile" relationship="DEPENDENCY">
    -      <point x="127.5" y="-0.0" />
    -      <point x="2300.0" y="1173.0" />
    -      <point x="-20.0" y="116.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.items.tile.Tile" relationship="CREATE">
    -      <point x="0.0" y="-55.0" />
    -      <point x="2315.0" y="1338.0" />
    -      <point x="-5.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.items.tile.Tile" relationship="TO_MANY">
    -      <point x="161.0" y="5.0" />
    -      <point x="-137.5" y="5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.items.tile.Tile.TileType" relationship="DEPENDENCY">
    -      <point x="0.0" y="-102.0" />
    -      <point x="3140.0" y="349.0" />
    -      <point x="2412.0" y="349.0" />
    -      <point x="0.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.utils.IndexValidator" relationship="DEPENDENCY">
    -      <point x="-193.0" y="-10.0" />
    -      <point x="460.0" y="1383.0" />
    -      <point x="0.0" y="59.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.items.tile.Tile.TileType" relationship="TO_MANY">
    -      <point x="-193.0" y="15.0" />
    -      <point x="2490.0" y="1408.0" />
    -      <point x="2490.0" y="673.0" />
    -      <point x="61.0" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePattern" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="0.0" y="31.0" />
    -      <point x="820.0" y="1373.0" />
    -      <point x="-193.0" y="-20.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.pattern.SharedPatternFactory" relationship="DEPENDENCY">
    -      <point x="0.0" y="60.0" />
    -      <point x="-40.0" y="1693.0" />
    -      <point x="-160.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.PrivateCard" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="DEPENDENCY">
    -      <point x="-121.5" y="20.0" />
    -      <point x="820.0" y="1013.0" />
    -      <point x="0.0" y="-31.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.card.SharedCard" relationship="TO_MANY">
    -      <point x="-5.0" y="326.5" />
    -      <point x="-5.0" y="-60.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.items.board.Board" relationship="DEPENDENCY">
    -      <point x="20.0" y="186.5" />
    -      <point x="480.0" y="433.0" />
    -      <point x="680.0" y="433.0" />
    -      <point x="680.0" y="213.0" />
    -      <point x="161.0" y="20.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.score.Score" relationship="TO_ONE">
    -      <point x="0.0" y="186.0" />
    -      <point x="0.0" y="-158.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPattern" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="GENERALIZATION">
    -      <point x="0.0" y="-31.0" />
    -      <point x="0.0" y="31.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.scoreblock.ScoreBlock" relationship="TO_MANY">
    -      <point x="0.0" y="-186.0" />
    -      <point x="0.0" y="60.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="0.0" y="102.5" />
    -      <point x="2700.0" y="1553.0" />
    -      <point x="2940.0" y="1553.0" />
    -      <point x="2940.0" y="1413.0" />
    -      <point x="193.0" y="20.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="20.0" y="60.0" />
    -      <point x="-20.0" y="1553.0" />
    -      <point x="2680.0" y="1553.0" />
    -      <point x="-20.0" y="102.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.board.Board" relationship="TO_ONE">
    -      <point x="138.5" y="-5.0" />
    -      <point x="0.0" y="-5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.items.scoreblock.ScoreBlock" relationship="TO_MANY">
    -      <point x="-126.0" y="-0.0" />
    -      <point x="-240.0" y="993.0" />
    -      <point x="-240.0" y="-347.0" />
    -      <point x="-93.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.player.Player" relationship="CREATE">
    -      <point x="5.0" y="-59.5" />
    -      <point x="1565.0" y="638.0" />
    -      <point x="0.0" y="65.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="-40.0" y="-102.0" />
    -      <point x="3100.0" y="1393.0" />
    -      <point x="193.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.items.card.PrivateCard" relationship="CREATE">
    -      <point x="-204.5" y="-0.0" />
    -      <point x="121.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.PrivateCard" target="it.polimi.is23am10.items.card.AbstractCard" relationship="GENERALIZATION">
    -      <point x="-121.5" y="-0.0" />
    -      <point x="99.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.items.tile.Tile" relationship="TO_MANY">
    -      <point x="-193.0" y="-65.0" />
    -      <point x="2325.0" y="1328.0" />
    -      <point x="5.0" y="116.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.tile.Tile" target="it.polimi.is23am10.items.tile.Tile" relationship="DEPENDENCY">
    -      <point x="137.5" y="-20.0" />
    -      <point x="2500.0" y="173.0" />
    -      <point x="2500.0" y="33.0" />
    -      <point x="2340.0" y="33.0" />
    -      <point x="20.0" y="-116.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.AbstractCard" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="DEPENDENCY">
    -      <point x="0.0" y="60.0" />
    -      <point x="0.0" y="-31.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="TO_ONE">
    -      <point x="126.0" y="-0.0" />
    -      <point x="2140.0" y="573.0" />
    -      <point x="2140.0" y="1343.0" />
    -      <point x="-193.0" y="-50.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.pattern.SharedPattern" relationship="TO_MANY">
    -      <point x="0.0" y="-15.0" />
    -      <point x="295.0" y="1678.0" />
    -      <point x="-5.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePattern" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="GENERALIZATION">
    -      <point x="-113.0" y="-0.0" />
    -      <point x="95.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.pattern.SharedPattern" relationship="DEPENDENCY">
    -      <point x="40.0" y="60.0" />
    -      <point x="0.0" y="1393.0" />
    -      <point x="-137.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.items.tile.Tile.TileType" relationship="DEPENDENCY">
    -      <point x="161.0" y="175.5" />
    -      <point x="660.0" y="368.5" />
    -      <point x="660.0" y="349.0" />
    -      <point x="2412.0" y="349.0" />
    -      <point x="0.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="LINK_IN_DOCS">
    -      <point x="-126.0" y="20.0" />
    -      <point x="660.0" y="593.0" />
    -      <point x="660.0" y="1153.0" />
    -      <point x="-113.0" y="-20.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.player.Player" relationship="CREATE">
    -      <point x="45.0" y="-0.0" />
    -      <point x="5.0" y="568.0" />
    -      <point x="0.0" y="-5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.tile.Tile" target="it.polimi.is23am10.items.tile.Tile.TileType" relationship="TO_ONE">
    -      <point x="137.5" y="15.0" />
    -      <point x="2490.0" y="208.0" />
    -      <point x="2490.0" y="673.0" />
    -      <point x="61.0" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePatternFactory" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="TO_MANY">
    -      <point x="-127.5" y="-5.0" />
    -      <point x="113.0" y="-5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.items.tile.Tile" relationship="DEPENDENCY">
    -      <point x="-20.0" y="-102.0" />
    -      <point x="3120.0" y="193.0" />
    -      <point x="137.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.board.Board" relationship="CREATE">
    -      <point x="138.5" y="5.0" />
    -      <point x="-161.0" y="5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.PrivateCard" target="it.polimi.is23am10.pattern.PrivatePatternFactory" relationship="DEPENDENCY">
    -      <point x="0.0" y="60.0" />
    -      <point x="0.0" y="-45.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.factory.PlayerFactory" relationship="DEPENDENCY">
    -      <point x="20.0" y="59.5" />
    -      <point x="1580.0" y="1093.0" />
    -      <point x="1820.0" y="1093.0" />
    -      <point x="1820.0" y="1013.0" />
    -      <point x="204.5" y="20.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.pattern.SharedPattern" relationship="CREATE">
    -      <point x="-160.5" y="-25.0" />
    -      <point x="305.0" y="1668.0" />
    -      <point x="5.0" y="31.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.pattern.SharedPatternFactory" relationship="DEPENDENCY">
    -      <point x="0.0" y="102.0" />
    -      <point x="3140.0" y="1853.0" />
    -      <point x="3360.0" y="1853.0" />
    -      <point x="3360.0" y="1693.0" />
    -      <point x="160.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.player.Player" relationship="TO_MANY">
    -      <point x="35.0" y="326.5" />
    -      <point x="-5.0" y="578.0" />
    -      <point x="-126.0" y="5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.items.card.AbstractCard" relationship="GENERALIZATION">
    -      <point x="126.0" y="-0.0" />
    -      <point x="-99.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePatternFactory" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="CREATE">
    -      <point x="0.0" y="5.0" />
    -      <point x="113.0" y="5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.card.PrivateCard" relationship="TO_ONE">
    -      <point x="-126.0" y="40.0" />
    -      <point x="1140.0" y="613.0" />
    -      <point x="0.0" y="-60.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPattern" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="137.5" y="-0.0" />
    -      <point x="-193.0" y="-0.0" />
    -    </edge>
    -  </edges>
    -  <settings layout="Orthogonal Groups" zoom="0.8507035770647027" showDependencies="true" x="2263.1820911835757" y="970.6560000000001" />
    -  <SelectedNodes />
    -  <Categories>
    -    <Category>Constructors</Category>
    -    <Category>Fields</Category>
    -    <Category>Inner Classes</Category>
    -    <Category>Methods</Category>
    -    <Category>Properties</Category>
    -  </Categories>
    -  <SCOPE>All</SCOPE>
    -  <VISIBILITY>private</VISIBILITY>
    -</Diagram>
    -
    diff --git a/deliveries/main.jpg b/deliveries/main.jpg
    deleted file mode 100644
    index 40315b6e..00000000
    Binary files a/deliveries/main.jpg and /dev/null differ
    diff --git a/deliveries/main.uml b/deliveries/main.uml
    deleted file mode 100644
    index 0f9f2695..00000000
    --- a/deliveries/main.uml
    +++ /dev/null
    @@ -1,289 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<Diagram>
    -  <ID>JAVA</ID>
    -  <OriginalElement>/home/locav/IS23-AM10 (copia)/is23am10/src/main</OriginalElement>
    -  <nodes>
    -    <node x="1555.5" y="-186.5">it.polimi.is23am10.score.Score</node>
    -    <node x="-186.0" y="333.5">it.polimi.is23am10.items.scoreblock.ScoreBlock</node>
    -    <node x="1089.0" y="133.5">it.polimi.is23am10.items.card.PrivateCard</node>
    -    <node x="1044.5" y="233.5">it.polimi.is23am10.pattern.PrivatePatternFactory</node>
    -    <node x="634.5" y="-229.11178743961352">it.polimi.is23am10.game.Game</node>
    -    <node x="1301.0" y="-186.5">it.polimi.is23am10.factory.PlayerFactory</node>
    -    <node x="596.0" y="13.5">it.polimi.is23am10.utils.IndexValidator</node>
    -    <node x="796.5" y="233.5">it.polimi.is23am10.pattern.PrivatePattern</node>
    -    <node x="286.0" y="73.5">it.polimi.is23am10.items.card.AbstractCard</node>
    -    <node x="643.5" y="553.5">it.polimi.is23am10.items.tile.Tile</node>
    -    <node x="616.5" y="453.5">it.polimi.is23am10.items.bookshelf.Bookshelf</node>
    -    <node x="602.5" y="-406.988502415459">it.polimi.is23am10.factory.GameFactory</node>
    -    <node x="280.5" y="333.5">it.polimi.is23am10.pattern.SharedPattern</node>
    -    <node x="290.0" y="233.5">it.polimi.is23am10.pattern.AbstractPattern</node>
    -    <node x="265.0" y="453.5">it.polimi.is23am10.pattern.SharedPatternFactory</node>
    -    <node x="1553.0" y="-326.5">it.polimi.is23am10.player.Player</node>
    -    <node x="633.5" y="-86.5">it.polimi.is23am10.items.board.Board</node>
    -    <node x="49.5" y="333.5">it.polimi.is23am10.items.card.SharedCard</node>
    -  </nodes>
    -  <notes />
    -  <edges>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.factory.PlayerFactory" relationship="LINK_IN_DOCS">
    -      <point x="-51.0" y="8.5" />
    -      <point x="1382.5" y="-302.5" />
    -      <point x="-1.5" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.score.Score" relationship="CREATE">
    -      <point x="83.0" y="-0.0" />
    -      <point x="-48.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePatternFactory" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="CREATE">
    -      <point x="0.0" y="15.5" />
    -      <point x="1164.0" y="462.33333333333337" />
    -      <point x="67.5" y="-6.666666666666657" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.items.tile.Tile" relationship="CREATE">
    -      <point x="0.0" y="5.0" />
    -      <point x="9.0" y="-66.0" />
    -      <point x="9.0" y="564.0" />
    -      <point x="0.0" y="-5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="CREATE">
    -      <point x="0.0" y="15.5" />
    -      <point x="1384.0" y="465.66666666666663" />
    -      <point x="67.5" y="-3.333333333333343" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.game.Game" relationship="DEPENDENCY">
    -      <point x="20.0" y="15.5" />
    -      <point x="704.0" y="-153.61178743961352" />
    -      <point x="784.0" y="-153.61178743961352" />
    -      <point x="784.0" y="-203.61178743961352" />
    -      <point x="49.5" y="10.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.utils.IndexValidator" relationship="DEPENDENCY">
    -      <point x="0.0" y="15.5" />
    -      <point x="0.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.factory.PlayerFactory" relationship="DEPENDENCY">
    -      <point x="49.5" y="-0.0" />
    -      <point x="1017.25" y="-213.61178743961352" />
    -      <point x="1017.25" y="-171.0" />
    -      <point x="-83.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.GameFactory" target="it.polimi.is23am10.game.Game" relationship="CREATE">
    -      <point x="0.0" y="15.5" />
    -      <point x="0.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.card.SharedCard" relationship="CREATE">
    -      <point x="0.0" y="11.5" />
    -      <point x="125.5" y="-202.11178743961352" />
    -      <point x="1.5" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePatternFactory" target="it.polimi.is23am10.items.tile.Tile" relationship="DEPENDENCY">
    -      <point x="119.5" y="-0.0" />
    -      <point x="1404.0" y="249.0" />
    -      <point x="1404.0" y="569.0" />
    -      <point x="40.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.items.tile.Tile" relationship="CREATE">
    -      <point x="5.0" y="-0.0" />
    -      <point x="5.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.items.tile.Tile" relationship="TO_MANY">
    -      <point x="-50.5" y="-5.0" />
    -      <point x="-1.0" y="-76.0" />
    -      <point x="-1.0" y="574.0" />
    -      <point x="-40.5" y="5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.utils.IndexValidator" relationship="DEPENDENCY">
    -      <point x="0.0" y="-15.5" />
    -      <point x="0.0" y="15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePattern" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="0.0" y="15.5" />
    -      <point x="884.0" y="459.0" />
    -      <point x="67.5" y="-10.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.pattern.SharedPatternFactory" relationship="DEPENDENCY">
    -      <point x="0.0" y="15.5" />
    -      <point x="124.0" y="469.0" />
    -      <point x="-119.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.PrivateCard" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="DEPENDENCY">
    -      <point x="-75.0" y="-0.0" />
    -      <point x="904.0" y="149.0" />
    -      <point x="20.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.card.SharedCard" relationship="TO_MANY">
    -      <point x="-49.5" y="8.5" />
    -      <point x="122.5" y="-205.11178743961352" />
    -      <point x="-1.5" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.items.board.Board" relationship="DEPENDENCY">
    -      <point x="20.0" y="15.5" />
    -      <point x="704.0" y="-11.0" />
    -      <point x="784.0" y="-11.0" />
    -      <point x="784.0" y="-71.0" />
    -      <point x="50.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.score.Score" relationship="TO_ONE">
    -      <point x="0.0" y="15.5" />
    -      <point x="0.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPattern" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="GENERALIZATION">
    -      <point x="0.0" y="-15.5" />
    -      <point x="0.0" y="15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.scoreblock.ScoreBlock" relationship="TO_MANY">
    -      <point x="-51.0" y="-0.0" />
    -      <point x="-116.0" y="-311.0" />
    -      <point x="0.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="-67.5" y="10.0" />
    -      <point x="564.0" y="479.0" />
    -      <point x="564.0" y="529.0" />
    -      <point x="664.0" y="529.0" />
    -      <point x="-20.0" y="15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="20.0" y="15.5" />
    -      <point x="144.0" y="409.0" />
    -      <point x="644.0" y="409.0" />
    -      <point x="-40.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.board.Board" relationship="TO_ONE">
    -      <point x="5.0" y="-0.0" />
    -      <point x="5.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.items.scoreblock.ScoreBlock" relationship="TO_MANY">
    -      <point x="-74.5" y="-0.0" />
    -      <point x="70.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.player.Player" relationship="CREATE">
    -      <point x="1.5" y="-15.5" />
    -      <point x="1385.5" y="-299.5" />
    -      <point x="0.0" y="11.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="119.0" y="-0.0" />
    -      <point x="-67.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.items.card.PrivateCard" relationship="CREATE">
    -      <point x="-20.0" y="15.5" />
    -      <point x="1364.0" y="149.0" />
    -      <point x="75.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.PrivateCard" target="it.polimi.is23am10.items.card.AbstractCard" relationship="GENERALIZATION">
    -      <point x="-20.0" y="-15.5" />
    -      <point x="1144.0" y="89.0" />
    -      <point x="98.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.items.tile.Tile" relationship="TO_MANY">
    -      <point x="-5.0" y="15.5" />
    -      <point x="-5.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.tile.Tile" target="it.polimi.is23am10.items.tile.Tile" relationship="DEPENDENCY">
    -      <point x="0.0" y="15.5" />
    -      <point x="684.0" y="629.0" />
    -      <point x="784.0" y="629.0" />
    -      <point x="784.0" y="579.0" />
    -      <point x="40.5" y="10.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.AbstractCard" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="DEPENDENCY">
    -      <point x="0.0" y="15.5" />
    -      <point x="0.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="TO_ONE">
    -      <point x="51.0" y="-0.0" />
    -      <point x="1704.0" y="-311.0" />
    -      <point x="1704.0" y="469.0" />
    -      <point x="67.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.pattern.SharedPattern" relationship="TO_MANY">
    -      <point x="-5.0" y="-15.5" />
    -      <point x="-5.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePattern" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="GENERALIZATION">
    -      <point x="-87.5" y="-0.0" />
    -      <point x="94.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.pattern.SharedPattern" relationship="DEPENDENCY">
    -      <point x="74.5" y="-0.0" />
    -      <point x="-103.5" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="LINK_IN_DOCS">
    -      <point x="-51.0" y="5.0" />
    -      <point x="884.0" y="-306.0" />
    -      <point x="0.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.player.Player" relationship="CREATE">
    -      <point x="0.0" y="5.0" />
    -      <point x="559.0" y="-208.61178743961352" />
    -      <point x="559.0" y="-313.5" />
    -      <point x="0.0" y="-2.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePatternFactory" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="TO_MANY">
    -      <point x="-119.5" y="-5.0" />
    -      <point x="87.5" y="-5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.items.tile.Tile" relationship="DEPENDENCY">
    -      <point x="0.0" y="15.5" />
    -      <point x="384.0" y="559.0" />
    -      <point x="-40.5" y="-10.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.board.Board" relationship="CREATE">
    -      <point x="-5.0" y="15.5" />
    -      <point x="-5.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.PrivateCard" target="it.polimi.is23am10.pattern.PrivatePatternFactory" relationship="DEPENDENCY">
    -      <point x="0.0" y="15.5" />
    -      <point x="0.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.factory.PlayerFactory" relationship="DEPENDENCY">
    -      <point x="83.0" y="-10.0" />
    -      <point x="1524.0" y="-181.0" />
    -      <point x="1524.0" y="-231.0" />
    -      <point x="1404.0" y="-231.0" />
    -      <point x="20.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.pattern.SharedPattern" relationship="CREATE">
    -      <point x="5.0" y="-15.5" />
    -      <point x="5.0" y="15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPatternFactory" target="it.polimi.is23am10.pattern.SharedPatternFactory" relationship="DEPENDENCY">
    -      <point x="20.0" y="15.5" />
    -      <point x="404.0" y="529.0" />
    -      <point x="544.0" y="529.0" />
    -      <point x="544.0" y="479.0" />
    -      <point x="119.0" y="10.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.player.Player" relationship="TO_MANY">
    -      <point x="-49.5" y="-5.0" />
    -      <point x="569.0" y="-218.61178743961352" />
    -      <point x="569.0" y="-303.5" />
    -      <point x="-51.0" y="7.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.items.card.AbstractCard" relationship="GENERALIZATION">
    -      <point x="20.0" y="-15.5" />
    -      <point x="144.0" y="89.0" />
    -      <point x="-98.0" y="-0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePatternFactory" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="CREATE">
    -      <point x="0.0" y="5.0" />
    -      <point x="87.5" y="5.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.card.PrivateCard" relationship="TO_ONE">
    -      <point x="-51.0" y="7.5" />
    -      <point x="1164.0" y="-303.5" />
    -      <point x="0.0" y="-15.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPattern" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="103.5" y="-0.0" />
    -      <point x="664.0" y="349.0" />
    -      <point x="-20.0" y="-15.5" />
    -    </edge>
    -  </edges>
    -  <settings layout="Orthogonal Groups" zoom="0.6805628616517622" showDependencies="true" x="946.2709178743962" y="123.32000000000005" />
    -  <SelectedNodes />
    -  <Categories />
    -  <SCOPE>All</SCOPE>
    -  <VISIBILITY>private</VISIBILITY>
    -</Diagram>
    -
    diff --git a/deliveries/uml/uml_04_04.png b/deliveries/uml/uml_04_04.png
    deleted file mode 100644
    index 7ee66db0..00000000
    Binary files a/deliveries/uml/uml_04_04.png and /dev/null differ
    diff --git a/deliveries/uml/uml_04_04.uml b/deliveries/uml/uml_04_04.uml
    deleted file mode 100644
    index 427f3f2d..00000000
    --- a/deliveries/uml/uml_04_04.uml
    +++ /dev/null
    @@ -1,459 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<Diagram>
    -  <ID>JAVA</ID>
    -  <OriginalElement>/Users/matteochen/Desktop/code/test_ism</OriginalElement>
    -  <nodes>
    -    <node x="2031.75" y="-305.5">it.polimi.is23am10.items.card.AbstractCard</node>
    -    <node x="4959.419181034483" y="1795.0">it.polimi.is23am10.command.StartGameCommand</node>
    -    <node x="678.0" y="3188.0">it.polimi.is23am10.utils.ArgParser</node>
    -    <node x="2076.669181034483" y="984.0">it.polimi.is23am10.items.card.SharedCard</node>
    -    <node x="-292.0" y="1619.0">it.polimi.is23am10.virtualview.VirtualView</node>
    -    <node x="2700.9237607758623" y="1018.0">it.polimi.is23am10.pattern.PrivatePattern</node>
    -    <node x="140.75" y="2783.0">it.polimi.is23am10.controller.ServerControllerState</node>
    -    <node x="3631.5487607758623" y="2839.0">it.polimi.is23am10.controller.ServerControllerSocket</node>
    -    <node x="4365.423760775862" y="962.0">it.polimi.is23am10.utils.Coordinates</node>
    -    <node x="779.0" y="2586.5">it.polimi.is23am10.playerconnector.PlayerConnectorRmi</node>
    -    <node x="391.0" y="2497.0">it.polimi.is23am10.gamehandler.GameHandler</node>
    -    <node x="338.0" y="3188.0">it.polimi.is23am10.utils.IndexValidator</node>
    -    <node x="1616.2941810344828" y="1018.0">it.polimi.is23am10.factory.PlayerFactory</node>
    -    <node x="1634.548760775862" y="-11.0">it.polimi.is23am10.items.bookshelf.Bookshelf</node>
    -    <node x="4259.419181034483" y="1773.0">it.polimi.is23am10.command.MoveTilesCommand</node>
    -    <node x="1116.0441810344828" y="-522.5">it.polimi.is23am10.items.tile.Tile.TileType</node>
    -    <node x="3694.5487607758623" y="3067.0">it.polimi.is23am10.controller.ServerControllerSocket.CommandDeserializer</node>
    -    <node x="-348.0" y="425.0">it.polimi.is23am10.virtualview.VirtualPlayer</node>
    -    <node x="1109.0" y="3188.0">it.polimi.is23am10.controller.ServerDebugPrefixString</node>
    -    <node x="2587.625" y="-534.0">it.polimi.is23am10.pattern.AbstractPattern</node>
    -    <node x="566.6223060344828" y="-77.0">it.polimi.is23am10.score.Score</node>
    -    <node x="3827.419181034483" y="1862.5">it.polimi.is23am10.controller.interfaces.IServerControllerAction</node>
    -    <node x="4735.419181034483" y="1840.0">it.polimi.is23am10.command.AbstractCommand.Opcode</node>
    -    <node x="896.0" y="3188.0">it.polimi.is23am10.ServerMain</node>
    -    <node x="3694.6737607758623" y="1040.5">it.polimi.is23am10.controller.interfaces.ControllerConsumer</node>
    -    <node x="625.9706357758621" y="-361.0">it.polimi.is23am10.items.tile.Tile</node>
    -    <node x="5058.372306034483" y="2553.0">it.polimi.is23am10.Server</node>
    -    <node x="-180.20123922413768" y="863.0">it.polimi.is23am10.items.board.Board</node>
    -    <node x="430.1223060344828" y="984.5">it.polimi.is23am10.messages.AbstractMessage</node>
    -    <node x="-348.0" y="3188.0">it.polimi.is23am10.config.ServerConfigContext</node>
    -    <node x="619.2179418103449" y="1762.0">it.polimi.is23am10.playerconnector.AbstractPlayerConnector</node>
    -    <node x="1241.0" y="2563.5">it.polimi.is23am10.playerconnector.PlayerConnector</node>
    -    <node x="5510.419181034483" y="1795.0">it.polimi.is23am10.command.AddPlayerCommand</node>
    -    <node x="5255.419181034483" y="1840.0">it.polimi.is23am10.Server.ServerStatus</node>
    -    <node x="2408.419181034483" y="1851.0">it.polimi.is23am10.factory.PrivatePatternFactory</node>
    -    <node x="327.2179418103451" y="1817.5">it.polimi.is23am10.messages.ChatMessage</node>
    -    <node x="2148.669181034483" y="44.0">it.polimi.is23am10.items.scoreblock.ScoreBlock</node>
    -    <node x="2060.794181034483" y="2575.0">it.polimi.is23am10.factory.GameFactory</node>
    -    <node x="3132.2987607758623" y="2575.0">it.polimi.is23am10.controller.ServerControllerAction</node>
    -    <node x="3262.9237607758623" y="995.0">it.polimi.is23am10.pattern.SharedPattern</node>
    -    <node x="1333.2941810344828" y="403.0">it.polimi.is23am10.player.Player</node>
    -    <node x="-208.40436422413768" y="2575.0">it.polimi.is23am10.messages.GameMessage</node>
    -    <node x="89.0" y="3188.0">it.polimi.is23am10.config.ServerConfig</node>
    -    <node x="1143.423760775862" y="55.5">it.polimi.is23am10.items.card.PrivateCard</node>
    -    <node x="1367.673760775862" y="1355.0">it.polimi.is23am10.game.Game</node>
    -    <node x="4834.419181034483" y="1017.5">it.polimi.is23am10.command.AbstractCommand</node>
    -    <node x="418.1223060344828" y="547.0">it.polimi.is23am10.messages.AbstractMessage.MessageType</node>
    -    <node x="3111.419181034483" y="1807.0">it.polimi.is23am10.factory.SharedPatternFactory</node>
    -  </nodes>
    -  <notes />
    -  <edges>
    -    <edge source="it.polimi.is23am10.messages.AbstractMessage.MessageType" target="it.polimi.is23am10.messages.AbstractMessage" relationship="INNER_CLASS">
    -      <point x="4.0" y="49.0" />
    -      <point x="0.0" y="-82.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.interfaces.IServerControllerAction" target="it.polimi.is23am10.controller.interfaces.ControllerConsumer" relationship="TO_ONE">
    -      <point x="-1.810344829209498E-4" y="26.5" />
    -      <point x="4033.419" y="2334.0" />
    -      <point x="5789.919" y="2334.0" />
    -      <point x="5789.919" y="781.5" />
    -      <point x="3922.674" y="781.5" />
    -      <point x="2.3922413765831152E-4" y="-26.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerAction" target="it.polimi.is23am10.command.AbstractCommand.Opcode" relationship="TO_MANY">
    -      <point x="2.3922413765831152E-4" y="-38.0" />
    -      <point x="3338.299" y="2170.0" />
    -      <point x="4837.419" y="2170.0" />
    -      <point x="-1.810344829209498E-4" y="49.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.gamehandler.GameHandler" target="it.polimi.is23am10.game.Game" relationship="TO_ONE">
    -      <point x="0.0" y="-116.0" />
    -      <point x="575.0" y="2033.5" />
    -      <point x="-266.5" y="144.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.command.MoveTilesCommand" target="it.polimi.is23am10.command.AbstractCommand" relationship="GENERALIZATION">
    -      <point x="227.99981896551708" y="-66.5" />
    -      <point x="4931.919" y="1822.5" />
    -      <point x="4931.919" y="1769.0" />
    -      <point x="4946.919" y="1769.0" />
    -      <point x="-1.810344829209498E-4" y="49.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.pattern.SharedPattern" relationship="TO_MANY">
    -      <point x="266.5002392241379" y="-15.0" />
    -      <point x="2019.0" y="1874.0" />
    -      <point x="2019.0" y="1566.0" />
    -      <point x="3388.424" y="1566.0" />
    -      <point x="2.3922413765831152E-4" y="72.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.GameFactory" target="it.polimi.is23am10.game.Game" relationship="DEPENDENCY">
    -      <point x="-134.0" y="0.0" />
    -      <point x="1733.5" y="2613.0" />
    -      <point x="99.32623922413791" y="534.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.virtualview.VirtualPlayer" target="it.polimi.is23am10.score.Score" relationship="TO_ONE">
    -      <point x="0.0" y="-171.0" />
    -      <point x="-236.5" y="356.0" />
    -      <point x="774.622" y="356.0" />
    -      <point x="-3.060344828327288E-4" y="193.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.Server" target="it.polimi.is23am10.controller.interfaces.IServerControllerAction" relationship="TO_ONE">
    -      <point x="-207.0" y="0.0" />
    -      <point x="4078.0487607758623" y="2613.0" />
    -      <point x="44.62957974137953" y="26.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.tile.Tile.TileType" target="it.polimi.is23am10.items.tile.Tile" relationship="INNER_CLASS">
    -      <point x="-102.5" y="0.0" />
    -      <point x="708.471" y="-473.5" />
    -      <point x="-14.999635775862089" y="-105.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.command.AbstractCommand" target="it.polimi.is23am10.command.AbstractCommand.Opcode" relationship="TO_ONE">
    -      <point x="112.49981896551708" y="0.0" />
    -      <point x="5804.919" y="1067.0" />
    -      <point x="5804.919" y="3303.5" />
    -      <point x="3114.799" y="3303.5" />
    -      <point x="3114.799" y="2170.0" />
    -      <point x="4837.419" y="2170.0" />
    -      <point x="-1.810344829209498E-4" y="49.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PrivatePatternFactory" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="-341.5001810344829" y="0.0" />
    -      <point x="2034.0" y="1889.0" />
    -      <point x="2034.0" y="116.0" />
    -      <point x="175.00023922413789" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.AbstractMessage" target="it.polimi.is23am10.messages.AbstractMessage.MessageType" relationship="TO_ONE">
    -      <point x="15.0" y="-82.5" />
    -      <point x="19.0" y="49.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.SharedPatternFactory" target="it.polimi.is23am10.pattern.SharedPattern" relationship="TO_MANY">
    -      <point x="-1.810344829209498E-4" y="-82.0" />
    -      <point x="3458.919" y="1566.0" />
    -      <point x="3388.424" y="1566.0" />
    -      <point x="2.3922413765831152E-4" y="72.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerSocket" target="it.polimi.is23am10.command.AbstractCommand" relationship="DEPENDENCY">
    -      <point x="2.3922413765831152E-4" y="60.0" />
    -      <point x="3846.049" y="3013.0" />
    -      <point x="4345.5" y="3013.0" />
    -      <point x="4345.5" y="2379.0" />
    -      <point x="5819.919" y="2379.0" />
    -      <point x="5819.919" y="1052.0" />
    -      <point x="112.49981896551708" y="-15.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.items.tile.Tile" relationship="TO_MANY">
    -      <point x="2.392241376796278E-4" y="-204.0" />
    -      <point x="-34.701" y="-114.0" />
    -      <point x="723.471" y="-114.0" />
    -      <point x="3.6422413791115105E-4" y="105.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.command.StartGameCommand" target="it.polimi.is23am10.command.AbstractCommand" relationship="GENERALIZATION">
    -      <point x="-1.810344829209498E-4" y="-94.0" />
    -      <point x="5097.419" y="1769.0" />
    -      <point x="4946.919" y="1769.0" />
    -      <point x="-1.810344829209498E-4" y="49.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerState" target="it.polimi.is23am10.gamehandler.GameHandler" relationship="TO_MANY">
    -      <point x="-15.03205818965489" y="-116.0" />
    -      <point x="309.7179418103451" y="2613.0" />
    -      <point x="-184.0" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.ChatMessage" target="it.polimi.is23am10.player.Player" relationship="TO_ONE">
    -      <point x="5.818965490789196E-5" y="-71.5" />
    -      <point x="463.218" y="1413.0" />
    -      <point x="1208.0" y="1413.0" />
    -      <point x="1208.0" y="596.0" />
    -      <point x="-125.5001810344827" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.items.tile.Tile.TileType" relationship="TO_MANY">
    -      <point x="2.392241378856852E-4" y="-127.0" />
    -      <point x="1809.549" y="-392.0" />
    -      <point x="1218.544" y="-392.0" />
    -      <point x="-1.8103448269357614E-4" y="49.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerAction" target="it.polimi.is23am10.controller.interfaces.ControllerConsumer" relationship="TO_MANY">
    -      <point x="206.00023922413766" y="0.0" />
    -      <point x="3691.0" y="2613.0" />
    -      <point x="3691.0" y="2334.0" />
    -      <point x="5789.919" y="2334.0" />
    -      <point x="5789.919" y="781.5" />
    -      <point x="3922.674" y="781.5" />
    -      <point x="2.3922413765831152E-4" y="-26.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.playerconnector.PlayerConnector" target="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    -      <point x="-155.2059999999999" y="-49.5" />
    -      <point x="1315.794" y="2151.0" />
    -      <point x="1146.0" y="2151.0" />
    -      <point x="1146.0" y="1874.0" />
    -      <point x="231.5000581896552" y="-15.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.card.SharedCard" relationship="TO_MANY">
    -      <point x="266.5" y="-338.0" />
    -      <point x="2300.169181034483" y="1551.0" />
    -      <point x="0.0" y="83.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.score.Score" relationship="TO_ONE">
    -      <point x="-1.8103448269357614E-4" y="-193.0" />
    -      <point x="1458.794" y="356.0" />
    -      <point x="774.622" y="356.0" />
    -      <point x="-3.060344828327288E-4" y="193.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.GameMessage" target="it.polimi.is23am10.messages.AbstractMessage" relationship="GENERALIZATION">
    -      <point x="110.50036422413768" y="0.0" />
    -      <point x="220.0" y="2613.0" />
    -      <point x="220.0" y="1067.0" />
    -      <point x="-111.00030603448278" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="266.5002392241379" y="0.0" />
    -      <point x="2034.0" y="1889.0" />
    -      <point x="2034.0" y="116.0" />
    -      <point x="175.00023922413789" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPattern" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="GENERALIZATION">
    -      <point x="-125.49976077586234" y="0.0" />
    -      <point x="3086.0" y="1067.0" />
    -      <point x="3086.0" y="-473.5" />
    -      <point x="108.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.virtualview.VirtualPlayer" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="TO_ONE">
    -      <point x="-15.0" y="-171.0" />
    -      <point x="-251.5" y="380.0" />
    -      <point x="1809.549" y="380.0" />
    -      <point x="2.392241378856852E-4" y="127.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.scoreblock.ScoreBlock" relationship="TO_MANY">
    -      <point x="-1.8103448269357614E-4" y="193.0" />
    -      <point x="1458.794" y="887.0" />
    -      <point x="2246.169" y="887.0" />
    -      <point x="-1.810344829209498E-4" y="72.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.Server.ServerStatus" target="it.polimi.is23am10.Server" relationship="INNER_CLASS">
    -      <point x="-107.546875" y="49.0" />
    -      <point x="0.0" y="-60.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.command.AddPlayerCommand" target="it.polimi.is23am10.command.AbstractCommand" relationship="GENERALIZATION">
    -      <point x="-1.810344829209498E-4" y="-94.0" />
    -      <point x="5641.419" y="1769.0" />
    -      <point x="4946.919" y="1769.0" />
    -      <point x="-1.810344829209498E-4" y="49.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.board.Board" relationship="TO_ONE">
    -      <point x="2.392241378856852E-4" y="-534.0" />
    -      <point x="1634.174" y="1313.0" />
    -      <point x="-34.701" y="1313.0" />
    -      <point x="2.392241376796278E-4" y="204.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.items.scoreblock.ScoreBlock" relationship="TO_MANY">
    -      <point x="-1.810344829209498E-4" y="-83.0" />
    -      <point x="2300.169" y="887.0" />
    -      <point x="2246.169" y="887.0" />
    -      <point x="-1.810344829209498E-4" y="72.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.PrivateCard" target="it.polimi.is23am10.items.card.AbstractCard" relationship="GENERALIZATION">
    -      <point x="2.392241378856852E-4" y="-60.5" />
    -      <point x="1360.424" y="-28.5" />
    -      <point x="2056.0" y="-28.5" />
    -      <point x="2056.0" y="495.0" />
    -      <point x="2131.169" y="495.0" />
    -      <point x="-0.08100000000013097" y="49.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.items.tile.Tile" relationship="TO_MANY">
    -      <point x="-14.999760775862114" y="-127.0" />
    -      <point x="1794.549" y="-114.0" />
    -      <point x="723.471" y="-114.0" />
    -      <point x="3.6422413791115105E-4" y="105.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.virtualview.VirtualView" target="it.polimi.is23am10.items.board.Board" relationship="TO_ONE">
    -      <point x="0.0" y="-270.0" />
    -      <point x="-158.5" y="1313.0" />
    -      <point x="-34.701" y="1313.0" />
    -      <point x="2.392241376796278E-4" y="204.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.AbstractCard" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="DEPENDENCY">
    -      <point x="0.0" y="-49.5" />
    -      <point x="2131.25" y="-473.5" />
    -      <point x="-108.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="TO_ONE">
    -      <point x="14.999818965517306" y="-193.0" />
    -      <point x="1473.794" y="380.0" />
    -      <point x="1809.549" y="380.0" />
    -      <point x="2.392241378856852E-4" y="127.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerState" target="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" relationship="TO_MANY">
    -      <point x="0.0" y="-116.0" />
    -      <point x="324.75" y="2756.0" />
    -      <point x="373.5" y="2756.0" />
    -      <point x="373.5" y="1978.0" />
    -      <point x="-231.49994181034492" y="89.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerSocket.CommandDeserializer" target="it.polimi.is23am10.controller.ServerControllerSocket" relationship="INNER_CLASS">
    -      <point x="-127.49976077586234" y="-38.0" />
    -      <point x="-14.999760775862342" y="60.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerSocket" target="it.polimi.is23am10.controller.ServerControllerAction" relationship="TO_ONE">
    -      <point x="-214.5" y="-15.0" />
    -      <point x="3338.2987607758623" y="2884.0" />
    -      <point x="0.0" y="38.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePattern" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="GENERALIZATION">
    -      <point x="103.50023922413766" y="0.0" />
    -      <point x="3086.0" y="1067.0" />
    -      <point x="3086.0" y="-473.5" />
    -      <point x="108.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.messages.AbstractMessage" relationship="TO_MANY">
    -      <point x="-224.0" y="-127.0" />
    -      <point x="85.59563577586209" y="82.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.command.AbstractCommand.Opcode" target="it.polimi.is23am10.command.AbstractCommand" relationship="INNER_CLASS">
    -      <point x="4.5" y="-49.0" />
    -      <point x="-105.0" y="49.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.command.MoveTilesCommand" target="it.polimi.is23am10.utils.Coordinates" relationship="TO_MANY">
    -      <point x="-7.49542025862047" y="-116.0" />
    -      <point x="0.0" y="105.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.SharedPatternFactory" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="-347.5001810344829" y="-55.5" />
    -      <point x="2034.0" y="1833.5" />
    -      <point x="2034.0" y="116.0" />
    -      <point x="175.00023922413789" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.tile.Tile" target="it.polimi.is23am10.items.tile.Tile.TileType" relationship="TO_ONE">
    -      <point x="3.6422413791115105E-4" y="-105.0" />
    -      <point x="723.471" y="-392.0" />
    -      <point x="1218.544" y="-392.0" />
    -      <point x="-1.8103448269357614E-4" y="49.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.gamehandler.GameHandler" target="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" relationship="TO_MANY">
    -      <point x="0.0" y="116.0" />
    -      <point x="575.0" y="2756.0" />
    -      <point x="373.5" y="2756.0" />
    -      <point x="373.5" y="1978.0" />
    -      <point x="-231.49994181034492" y="89.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PrivatePatternFactory" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="TO_MANY">
    -      <point x="-341.5001810344829" y="-15.0" />
    -      <point x="2228.0" y="1874.0" />
    -      <point x="2228.0" y="1814.5" />
    -      <point x="2804.424" y="1814.5" />
    -      <point x="2.3922413765831152E-4" y="49.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.player.Player" relationship="TO_ONE">
    -      <point x="231.5000581896552" y="0.0" />
    -      <point x="1208.0" y="1889.0" />
    -      <point x="1208.0" y="596.0" />
    -      <point x="-125.5001810344827" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.ChatMessage" target="it.polimi.is23am10.messages.AbstractMessage" relationship="GENERALIZATION">
    -      <point x="-135.9999418103451" y="0.0" />
    -      <point x="220.0" y="1889.0" />
    -      <point x="220.0" y="1067.0" />
    -      <point x="-111.00030603448278" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.playerconnector.PlayerConnectorRmi" target="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    -      <point x="0.0" y="-26.5" />
    -      <point x="1000.0" y="2151.0" />
    -      <point x="1146.0" y="2151.0" />
    -      <point x="1146.0" y="1874.0" />
    -      <point x="231.5000581896552" y="-15.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.tile.Tile" relationship="DEPENDENCY">
    -      <point x="84.32623922413791" y="534.0" />
    -      <point x="1718.5" y="3074.5" />
    -      <point x="-365.5" y="3074.5" />
    -      <point x="-365.5" y="-256.0" />
    -      <point x="-97.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerAction" target="it.polimi.is23am10.controller.interfaces.IServerControllerAction" relationship="REALIZATION">
    -      <point x="206.0" y="15.0" />
    -      <point x="4048.419" y="2628.0" />
    -      <point x="14.999818965517079" y="26.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.player.Player" relationship="TO_MANY">
    -      <point x="-223.50018103448292" y="-66.5" />
    -      <point x="1208.0" y="1000.5" />
    -      <point x="1208.0" y="596.0" />
    -      <point x="-125.5001810344827" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.player.Player" relationship="TO_MANY">
    -      <point x="-266.4997607758621" y="0.0" />
    -      <point x="1208.0" y="1889.0" />
    -      <point x="1208.0" y="596.0" />
    -      <point x="-125.5001810344827" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerSocket" target="it.polimi.is23am10.playerconnector.PlayerConnector" relationship="TO_ONE">
    -      <point x="-214.5" y="0.0" />
    -      <point x="1471.0" y="2899.0" />
    -      <point x="0.0" y="49.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.items.card.AbstractCard" relationship="GENERALIZATION">
    -      <point x="-223.50018103448292" y="0.0" />
    -      <point x="2056.0" y="1067.0" />
    -      <point x="2056.0" y="495.0" />
    -      <point x="2131.169" y="495.0" />
    -      <point x="-0.08100000000013097" y="49.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.player.Player" relationship="DEPENDENCY">
    -      <point x="6.254818965517188" y="-49.0" />
    -      <point x="1809.549" y="596.0" />
    -      <point x="125.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.card.PrivateCard" relationship="TO_ONE">
    -      <point x="-98.3704202586207" y="-193.0" />
    -      <point x="0.0" y="60.5" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.GameMessage" target="it.polimi.is23am10.virtualview.VirtualView" relationship="DEPENDENCY">
    -      <point x="-60.59563577586232" y="-38.0" />
    -      <point x="0.0" y="270.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.Server" target="it.polimi.is23am10.Server.ServerStatus" relationship="DEPENDENCY">
    -      <point x="107.546875" y="-60.0" />
    -      <point x="0.0" y="49.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="TO_MANY">
    -      <point x="266.5002392241379" y="15.0" />
    -      <point x="2228.0" y="1904.0" />
    -      <point x="2228.0" y="1814.5" />
    -      <point x="2804.424" y="1814.5" />
    -      <point x="2.3922413765831152E-4" y="49.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerSocket.CommandDeserializer" target="it.polimi.is23am10.command.AbstractCommand" relationship="DEPENDENCY">
    -      <point x="2.3922413765831152E-4" y="-38.0" />
    -      <point x="3958.549" y="3013.0" />
    -      <point x="4345.5" y="3013.0" />
    -      <point x="4345.5" y="2379.0" />
    -      <point x="5819.919" y="2379.0" />
    -      <point x="5819.919" y="1052.0" />
    -      <point x="112.49981896551708" y="-15.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.AbstractMessage" target="it.polimi.is23am10.player.Player" relationship="TO_ONE">
    -      <point x="110.99969396551717" y="0.0" />
    -      <point x="1208.0" y="1067.0" />
    -      <point x="1208.0" y="596.0" />
    -      <point x="-125.5001810344827" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.virtualview.VirtualView" target="it.polimi.is23am10.virtualview.VirtualPlayer" relationship="TO_MANY">
    -      <point x="-78.0" y="-270.0" />
    -      <point x="0.0" y="171.0" />
    -    </edge>
    -  </edges>
    -  <settings layout="Hierarchic" zoom="0.6412295244184909" showDependencies="true" x="2139.406807624273" y="83.670186558556" />
    -  <SelectedNodes />
    -  <Categories>
    -    <Category>Constructors</Category>
    -    <Category>Fields</Category>
    -    <Category>Inner Classes</Category>
    -    <Category>Methods</Category>
    -  </Categories>
    -  <SCOPE>All</SCOPE>
    -  <VISIBILITY>private</VISIBILITY>
    -</Diagram>
    -
    diff --git a/deliveries/uml/uml_04_04_classes.png b/deliveries/uml/uml_04_04_classes.png
    deleted file mode 100644
    index 5e7a482a..00000000
    Binary files a/deliveries/uml/uml_04_04_classes.png and /dev/null differ
    diff --git a/deliveries/uml/uml_04_04_classes.uml b/deliveries/uml/uml_04_04_classes.uml
    deleted file mode 100644
    index e4c4bccf..00000000
    --- a/deliveries/uml/uml_04_04_classes.uml
    +++ /dev/null
    @@ -1,383 +0,0 @@
    -<?xml version="1.0" encoding="UTF-8"?>
    -<Diagram>
    -  <ID>JAVA</ID>
    -  <OriginalElement>/Users/matteochen/Desktop/code/test_ism</OriginalElement>
    -  <nodes>
    -    <node x="642.0" y="-427.0">it.polimi.is23am10.items.card.AbstractCard</node>
    -    <node x="1380.0" y="142.0">it.polimi.is23am10.command.StartGameCommand</node>
    -    <node x="400.0" y="483.0">it.polimi.is23am10.ServerMain</node>
    -    <node x="247.0" y="483.0">it.polimi.is23am10.utils.ArgParser</node>
    -    <node x="1192.5" y="-77.0">it.polimi.is23am10.controller.interfaces.ControllerConsumer</node>
    -    <node x="-348.0" y="-475.0">it.polimi.is23am10.items.tile.Tile</node>
    -    <node x="594.5" y="-77.0">it.polimi.is23am10.items.card.SharedCard</node>
    -    <node x="-294.0" y="74.0">it.polimi.is23am10.virtualview.VirtualView</node>
    -    <node x="761.5" y="-77.0">it.polimi.is23am10.pattern.PrivatePattern</node>
    -    <node x="1731.5" y="323.0">it.polimi.is23am10.Server</node>
    -    <node x="47.75" y="381.0">it.polimi.is23am10.controller.ServerControllerState</node>
    -    <node x="-188.0" y="-125.0">it.polimi.is23am10.items.board.Board</node>
    -    <node x="31.75" y="-77.0">it.polimi.is23am10.messages.AbstractMessage</node>
    -    <node x="-348.0" y="483.0">it.polimi.is23am10.config.ServerConfigContext</node>
    -    <node x="48.5" y="142.0">it.polimi.is23am10.playerconnector.AbstractPlayerConnector</node>
    -    <node x="418.75" y="323.0">it.polimi.is23am10.playerconnector.PlayerConnector</node>
    -    <node x="1550.75" y="435.0">it.polimi.is23am10.controller.ServerControllerSocket</node>
    -    <node x="1420.5" y="-77.0">it.polimi.is23am10.utils.Coordinates</node>
    -    <node x="187.75" y="323.0">it.polimi.is23am10.playerconnector.PlayerConnectorRmi</node>
    -    <node x="122.25" y="265.0">it.polimi.is23am10.gamehandler.GameHandler</node>
    -    <node x="63.0" y="483.0">it.polimi.is23am10.utils.IndexValidator</node>
    -    <node x="1615.0" y="142.0">it.polimi.is23am10.command.AddPlayerCommand</node>
    -    <node x="533.5" y="211.0">it.polimi.is23am10.factory.PrivatePatternFactory</node>
    -    <node x="-132.5" y="142.0">it.polimi.is23am10.messages.ChatMessage</node>
    -    <node x="373.5" y="-77.0">it.polimi.is23am10.factory.PlayerFactory</node>
    -    <node x="643.75" y="-262.0">it.polimi.is23am10.items.scoreblock.ScoreBlock</node>
    -    <node x="394.25" y="-321.0">it.polimi.is23am10.items.bookshelf.Bookshelf</node>
    -    <node x="1152.0" y="142.0">it.polimi.is23am10.command.MoveTilesCommand</node>
    -    <node x="621.75" y="323.0">it.polimi.is23am10.factory.GameFactory</node>
    -    <node x="1483.5" y="323.0">it.polimi.is23am10.controller.ServerControllerAction</node>
    -    <node x="976.5" y="-77.0">it.polimi.is23am10.pattern.SharedPattern</node>
    -    <node x="377.0" y="-184.0">it.polimi.is23am10.player.Player</node>
    -    <node x="-267.5" y="323.0">it.polimi.is23am10.messages.GameMessage</node>
    -    <node x="-299.0" y="-184.0">it.polimi.is23am10.virtualview.VirtualPlayer</node>
    -    <node x="-114.0" y="483.0">it.polimi.is23am10.config.ServerConfig</node>
    -    <node x="564.0" y="483.0">it.polimi.is23am10.controller.ServerDebugPrefixString</node>
    -    <node x="691.25" y="-534.0">it.polimi.is23am10.pattern.AbstractPattern</node>
    -    <node x="-274.0" y="-379.0">it.polimi.is23am10.score.Score</node>
    -    <node x="254.0" y="-262.0">it.polimi.is23am10.items.card.PrivateCard</node>
    -    <node x="430.5" y="26.0">it.polimi.is23am10.game.Game</node>
    -    <node x="1729.25" y="-77.0">it.polimi.is23am10.command.AbstractCommand</node>
    -    <node x="1614.0" y="211.0">it.polimi.is23am10.controller.interfaces.IServerControllerAction</node>
    -    <node x="912.0" y="142.0">it.polimi.is23am10.factory.SharedPatternFactory</node>
    -  </nodes>
    -  <notes />
    -  <edges>
    -    <edge source="it.polimi.is23am10.controller.interfaces.IServerControllerAction" target="it.polimi.is23am10.controller.interfaces.ControllerConsumer" relationship="TO_ONE">
    -      <point x="0.0" y="14.0" />
    -      <point x="1725.0" y="281.0" />
    -      <point x="1853.5" y="281.0" />
    -      <point x="1853.5" y="-11.0" />
    -      <point x="1291.5" y="-11.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.gamehandler.GameHandler" target="it.polimi.is23am10.game.Game" relationship="TO_ONE">
    -      <point x="0.0" y="-14.0" />
    -      <point x="197.75" y="191.0" />
    -      <point x="507.5" y="191.0" />
    -      <point x="30.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.command.MoveTilesCommand" target="it.polimi.is23am10.command.AbstractCommand" relationship="GENERALIZATION">
    -      <point x="0.0" y="-14.0" />
    -      <point x="1251.0" y="47.0" />
    -      <point x="1823.75" y="47.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.pattern.SharedPattern" relationship="TO_MANY">
    -      <point x="15.0" y="-14.0" />
    -      <point x="492.5" y="8.0" />
    -      <point x="1069.5" y="8.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.GameFactory" target="it.polimi.is23am10.game.Game" relationship="DEPENDENCY">
    -      <point x="0.0" y="-14.0" />
    -      <point x="696.25" y="282.5" />
    -      <point x="518.0" y="282.5" />
    -      <point x="40.5" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.virtualview.VirtualPlayer" target="it.polimi.is23am10.score.Score" relationship="TO_ONE">
    -      <point x="0.0" y="-14.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.Server" target="it.polimi.is23am10.controller.interfaces.IServerControllerAction" relationship="TO_ONE">
    -      <point x="0.0" y="-14.0" />
    -      <point x="55.5" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PrivatePatternFactory" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="0.0" y="-14.0" />
    -      <point x="638.0" y="191.0" />
    -      <point x="560.0" y="191.0" />
    -      <point x="560.0" y="-307.0" />
    -      <point x="61.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.SharedPatternFactory" target="it.polimi.is23am10.pattern.SharedPattern" relationship="TO_MANY">
    -      <point x="0.0" y="-14.0" />
    -      <point x="1017.0" y="8.0" />
    -      <point x="1069.5" y="8.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerSocket" target="it.polimi.is23am10.command.AbstractCommand" relationship="DEPENDENCY">
    -      <point x="110.5" y="0.0" />
    -      <point x="1868.5" y="449.0" />
    -      <point x="44.75" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.board.Board" target="it.polimi.is23am10.items.tile.Tile" relationship="TO_MANY">
    -      <point x="2.5" y="-14.0" />
    -      <point x="-138.5" y="-413.0" />
    -      <point x="-310.0" y="-413.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.command.StartGameCommand" target="it.polimi.is23am10.command.AbstractCommand" relationship="GENERALIZATION">
    -      <point x="0.0" y="-14.0" />
    -      <point x="1482.5" y="47.0" />
    -      <point x="1823.75" y="47.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerState" target="it.polimi.is23am10.gamehandler.GameHandler" relationship="TO_MANY">
    -      <point x="-15.0" y="-14.0" />
    -      <point x="-60.5" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.ChatMessage" target="it.polimi.is23am10.player.Player" relationship="TO_ONE">
    -      <point x="0.0" y="-14.0" />
    -      <point x="-57.0" y="-11.0" />
    -      <point x="299.5" y="-11.0" />
    -      <point x="299.5" y="-170.0" />
    -      <point x="-48.0" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerAction" target="it.polimi.is23am10.controller.interfaces.ControllerConsumer" relationship="TO_MANY">
    -      <point x="0.0" y="-14.0" />
    -      <point x="1592.5" y="281.0" />
    -      <point x="1853.5" y="281.0" />
    -      <point x="1853.5" y="-11.0" />
    -      <point x="1291.5" y="-11.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.playerconnector.PlayerConnector" target="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    -      <point x="0.0" y="-14.0" />
    -      <point x="505.25" y="281.0" />
    -      <point x="455.5" y="281.0" />
    -      <point x="455.5" y="156.0" />
    -      <point x="117.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.card.SharedCard" relationship="TO_MANY">
    -      <point x="-47.0" y="-5.0" />
    -      <point x="356.0" y="35.0" />
    -      <point x="356.0" y="-104.5" />
    -      <point x="604.0" y="-104.5" />
    -      <point x="-59.0" y="-14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.score.Score" relationship="TO_ONE">
    -      <point x="0.0" y="-14.0" />
    -      <point x="425.0" y="-209.0" />
    -      <point x="-227.5" y="-209.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.GameMessage" target="it.polimi.is23am10.messages.AbstractMessage" relationship="GENERALIZATION">
    -      <point x="0.0" y="-14.0" />
    -      <point x="-187.5" y="218.0" />
    -      <point x="-28.5" y="218.0" />
    -      <point x="-28.5" y="388.5" />
    -      <point x="-365.5" y="388.5" />
    -      <point x="-365.5" y="-63.0" />
    -      <point x="-89.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="47.0" y="0.0" />
    -      <point x="560.0" y="40.0" />
    -      <point x="560.0" y="-307.0" />
    -      <point x="61.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.SharedPattern" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="GENERALIZATION">
    -      <point x="0.0" y="-14.0" />
    -      <point x="1069.5" y="-138.0" />
    -      <point x="880.75" y="-138.0" />
    -      <point x="91.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.virtualview.VirtualPlayer" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="TO_ONE">
    -      <point x="-15.0" y="-14.0" />
    -      <point x="-242.5" y="-277.0" />
    -      <point x="455.75" y="-277.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.scoreblock.ScoreBlock" relationship="TO_MANY">
    -      <point x="30.0" y="-14.0" />
    -      <point x="455.0" y="-200.0" />
    -      <point x="710.75" y="-200.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.command.AddPlayerCommand" target="it.polimi.is23am10.command.AbstractCommand" relationship="GENERALIZATION">
    -      <point x="0.0" y="-14.0" />
    -      <point x="1715.5" y="47.0" />
    -      <point x="1823.75" y="47.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.board.Board" relationship="TO_ONE">
    -      <point x="0.0" y="14.0" />
    -      <point x="477.5" y="81.5" />
    -      <point x="181.0" y="81.5" />
    -      <point x="181.0" y="35.0" />
    -      <point x="-141.0" y="35.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.items.scoreblock.ScoreBlock" relationship="TO_MANY">
    -      <point x="-39.0" y="-14.0" />
    -      <point x="624.0" y="-200.0" />
    -      <point x="710.75" y="-200.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.PrivateCard" target="it.polimi.is23am10.items.card.AbstractCard" relationship="GENERALIZATION">
    -      <point x="68.0" y="0.0" />
    -      <point x="604.0" y="-248.0" />
    -      <point x="604.0" y="-413.0" />
    -      <point x="-98.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.bookshelf.Bookshelf" target="it.polimi.is23am10.items.tile.Tile" relationship="TO_MANY">
    -      <point x="0.0" y="-14.0" />
    -      <point x="455.75" y="-413.0" />
    -      <point x="-310.0" y="-413.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.virtualview.VirtualView" target="it.polimi.is23am10.items.board.Board" relationship="TO_ONE">
    -      <point x="0.0" y="-14.0" />
    -      <point x="-227.5" y="35.0" />
    -      <point x="-141.0" y="35.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.AbstractCard" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="DEPENDENCY">
    -      <point x="49.25" y="-14.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="TO_ONE">
    -      <point x="15.0" y="-14.0" />
    -      <point x="440.0" y="-277.0" />
    -      <point x="455.75" y="-277.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerState" target="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" relationship="TO_MANY">
    -      <point x="0.0" y="-14.0" />
    -      <point x="152.25" y="337.0" />
    -      <point x="94.5" y="337.0" />
    -      <point x="-71.5" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerSocket" target="it.polimi.is23am10.controller.ServerControllerAction" relationship="TO_ONE">
    -      <point x="-68.75" y="-14.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.pattern.PrivatePattern" target="it.polimi.is23am10.pattern.AbstractPattern" relationship="GENERALIZATION">
    -      <point x="0.0" y="-14.0" />
    -      <point x="854.0" y="-138.0" />
    -      <point x="880.75" y="-138.0" />
    -      <point x="91.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.messages.AbstractMessage" relationship="TO_MANY">
    -      <point x="-59.75" y="-14.0" />
    -      <point x="-15.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.command.MoveTilesCommand" target="it.polimi.is23am10.utils.Coordinates" relationship="TO_MANY">
    -      <point x="-15.0" y="-14.0" />
    -      <point x="1236.0" y="8.0" />
    -      <point x="1482.5" y="8.0" />
    -      <point x="-7.5" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.SharedPatternFactory" target="it.polimi.is23am10.items.bookshelf.Bookshelf" relationship="DEPENDENCY">
    -      <point x="0.0" y="14.0" />
    -      <point x="1017.0" y="191.0" />
    -      <point x="560.0" y="191.0" />
    -      <point x="560.0" y="-307.0" />
    -      <point x="61.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.gamehandler.GameHandler" target="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" relationship="TO_MANY">
    -      <point x="-33.25" y="14.0" />
    -      <point x="164.5" y="337.0" />
    -      <point x="94.5" y="337.0" />
    -      <point x="-71.5" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PrivatePatternFactory" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="TO_MANY">
    -      <point x="-15.0" y="-14.0" />
    -      <point x="623.0" y="-30.0" />
    -      <point x="854.0" y="-30.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" target="it.polimi.is23am10.player.Player" relationship="TO_ONE">
    -      <point x="0.0" y="-14.0" />
    -      <point x="166.0" y="-11.0" />
    -      <point x="299.5" y="-11.0" />
    -      <point x="299.5" y="-170.0" />
    -      <point x="-48.0" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.ChatMessage" target="it.polimi.is23am10.messages.AbstractMessage" relationship="GENERALIZATION">
    -      <point x="0.0" y="14.0" />
    -      <point x="-57.0" y="218.0" />
    -      <point x="-28.5" y="218.0" />
    -      <point x="-28.5" y="388.5" />
    -      <point x="-365.5" y="388.5" />
    -      <point x="-365.5" y="-63.0" />
    -      <point x="-89.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.playerconnector.PlayerConnectorRmi" target="it.polimi.is23am10.playerconnector.AbstractPlayerConnector" relationship="GENERALIZATION">
    -      <point x="8.25" y="-14.0" />
    -      <point x="296.5" y="281.0" />
    -      <point x="455.5" y="281.0" />
    -      <point x="455.5" y="156.0" />
    -      <point x="117.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.items.tile.Tile" relationship="DEPENDENCY">
    -      <point x="15.0" y="14.0" />
    -      <point x="492.5" y="119.5" />
    -      <point x="-325.0" y="119.5" />
    -      <point x="-15.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerAction" target="it.polimi.is23am10.controller.interfaces.IServerControllerAction" relationship="REALIZATION">
    -      <point x="-15.0" y="-14.0" />
    -      <point x="1577.5" y="225.0" />
    -      <point x="-111.0" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.player.Player" relationship="TO_MANY">
    -      <point x="0.0" y="14.0" />
    -      <point x="663.0" y="-11.0" />
    -      <point x="299.5" y="-11.0" />
    -      <point x="299.5" y="-170.0" />
    -      <point x="-48.0" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.player.Player" relationship="TO_MANY">
    -      <point x="0.0" y="-14.0" />
    -      <point x="477.5" y="-11.0" />
    -      <point x="299.5" y="-11.0" />
    -      <point x="299.5" y="-170.0" />
    -      <point x="-48.0" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.controller.ServerControllerSocket" target="it.polimi.is23am10.playerconnector.PlayerConnector" relationship="TO_ONE">
    -      <point x="-110.5" y="0.0" />
    -      <point x="505.25" y="449.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.items.card.SharedCard" target="it.polimi.is23am10.items.card.AbstractCard" relationship="GENERALIZATION">
    -      <point x="0.0" y="-14.0" />
    -      <point x="663.0" y="-216.5" />
    -      <point x="604.0" y="-216.5" />
    -      <point x="604.0" y="-413.0" />
    -      <point x="-98.5" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.factory.PlayerFactory" target="it.polimi.is23am10.player.Player" relationship="DEPENDENCY">
    -      <point x="-24.0" y="-14.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.player.Player" target="it.polimi.is23am10.items.card.PrivateCard" relationship="TO_ONE">
    -      <point x="-42.5" y="-14.0" />
    -      <point x="60.5" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.GameMessage" target="it.polimi.is23am10.virtualview.VirtualView" relationship="DEPENDENCY">
    -      <point x="-40.0" y="-14.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.game.Game" target="it.polimi.is23am10.pattern.PrivatePattern" relationship="TO_MANY">
    -      <point x="-15.0" y="-14.0" />
    -      <point x="462.5" y="-30.0" />
    -      <point x="854.0" y="-30.0" />
    -      <point x="0.0" y="14.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.messages.AbstractMessage" target="it.polimi.is23am10.player.Player" relationship="TO_ONE">
    -      <point x="0.0" y="14.0" />
    -      <point x="121.25" y="-11.0" />
    -      <point x="299.5" y="-11.0" />
    -      <point x="299.5" y="-170.0" />
    -      <point x="-48.0" y="0.0" />
    -    </edge>
    -    <edge source="it.polimi.is23am10.virtualview.VirtualView" target="it.polimi.is23am10.virtualview.VirtualPlayer" relationship="TO_MANY">
    -      <point x="-15.0" y="-14.0" />
    -      <point x="-15.0" y="14.0" />
    -    </edge>
    -  </edges>
    -  <settings layout="Hierarchic" zoom="0.43900661709466954" showDependencies="true" x="1021.3701329213784" y="-36.833319631404606" />
    -  <SelectedNodes />
    -  <Categories />
    -  <SCOPE>All</SCOPE>
    -  <VISIBILITY>private</VISIBILITY>
    -</Diagram>
    -
    diff --git a/src/main/java/it/polimi/is23am10/App.java b/src/main/java/it/polimi/is23am10/App.java
    index 516218b2..92b39b83 100644
    --- a/src/main/java/it/polimi/is23am10/App.java
    +++ b/src/main/java/it/polimi/is23am10/App.java
    @@ -75,7 +75,7 @@ public static void main(String[] args) {
             Client client = null;
             if (ctx.getUseRMI()) {
               try {
    -            Registry registry = LocateRegistry.getRegistry(ctx.getServerRmiPort());
    +            Registry registry = LocateRegistry.getRegistry(ctx.getServerAddress(), ctx.getServerRmiPort());
                 PlayerConnectorRmi playerConnector = new PlayerConnectorRmi(new LinkedBlockingQueue<>(), client);
                 IServerControllerAction serverControllerActionServerRef = (IServerControllerAction) registry
                     .lookup(IServerControllerAction.class.getName());
    diff --git a/src/main/java/it/polimi/is23am10/client/Client.java b/src/main/java/it/polimi/is23am10/client/Client.java
    index 5ebd6c6f..cea4071b 100644
    --- a/src/main/java/it/polimi/is23am10/client/Client.java
    +++ b/src/main/java/it/polimi/is23am10/client/Client.java
    @@ -8,6 +8,8 @@
     import com.google.gson.JsonObject;
     import com.google.gson.JsonParseException;
     import com.google.gson.reflect.TypeToken;
    +
    +import it.polimi.is23am10.client.exceptions.ForceCloseApplicationException;
     import it.polimi.is23am10.client.interfaces.AlarmConsumer;
     import it.polimi.is23am10.client.userinterface.UserInterface;
     import it.polimi.is23am10.server.model.game.Game.GameStatus;
    @@ -93,6 +95,7 @@ public abstract class Client extends UnicastRemoteObject implements IClient {
        * @param pc Player connector.
        * @param ui User interface.
        * @throws UnknownHostException On localhost retrieval failure.
    +   * @throws RemoteException
        */
       protected Client(IPlayerConnector pc, UserInterface ui)
           throws UnknownHostException, RemoteException {
    @@ -106,6 +109,7 @@ protected Client(IPlayerConnector pc, UserInterface ui)
         requestedDisconnection = false;
         alarm = new Timer();
         clientStatus = ClientGameStatus.INIT;
    +    forceCloseApplication = false;
       }
     
       /**
    @@ -124,6 +128,9 @@ protected Client(IPlayerConnector pc, UserInterface ui)
       /** Clean disconnection request. */
       protected boolean requestedDisconnection;
     
    +  /** Force application close request, for example when gui is closed. */
    +  protected static boolean forceCloseApplication;
    +
       /** Duplicate name error flag. */
       private boolean hasDuplicateName;
     
    @@ -152,6 +159,11 @@ public enum ClientGameStatus {
        */
       protected static IPlayerConnector playerConnector;
     
    +  /**
    +   * Maximum player name length.
    +   */
    +  private final Integer MAX_PLAYER_NAME_LENGTH = 15;
    +
       /**
        * Retrieve the player connector intance.
        *
    @@ -196,6 +208,17 @@ protected boolean hasRequestedDisconnection() {
         return requestedDisconnection;
       }
     
    +  /**
    +   * Set a force close application request.
    +   * This method is defined as static as JavaFX thread must have access.
    +   *
    +   * @param flag The request flag.
    +   *
    +   */
    +  public static void setForceCloseApplication(boolean flag) {
    +    forceCloseApplication = flag;
    +  }
    +
       /**
        * Show the received message to the client.
        *
    @@ -276,7 +299,11 @@ protected void setGameIdRef(UUID id) {
         }
       }
     
    -  /** GameIdRef getter. */
    +  /**
    +   * Game id ref getter.
    +   * 
    +   * @return game id.
    +   */
       protected UUID getGameIdRef() {
         synchronized (gameRefLock) {
           return gameIdRef;
    @@ -334,7 +361,11 @@ protected VirtualView getVirtualView() {
         }
       }
     
    -  /** Virtual view setter. */
    +  /**
    +   * Virtual view setter.
    +   * 
    +   * @param vv virtual view to set.
    +   */
       protected void setVirtualView(VirtualView vv) {
         synchronized (virtualViewLock) {
           this.virtualView = vv;
    @@ -427,7 +458,7 @@ protected void setConnectorGameId(boolean reset) {
        *
        * @param name The player name.
        * @throws NullPlayerIdException
    -   * @throws NullPlayerIdException
    +   * @throws NullPlayerNameException
        */
       protected void setConnectorPlayer(String name)
           throws NullPlayerNameException, NullPlayerIdException {
    @@ -482,7 +513,7 @@ protected void handleCommands() throws IOException {
               }
               break;
             case "logout":
    -          terminateClient();
    +          setForceCloseApplication(true);
               break;
             case "move":
               if (getVirtualView() == null) {
    @@ -588,6 +619,9 @@ protected boolean handlePlayerNameSelection() throws IOException {
         String selectedPlayerName = userInterface.getUserInput();
         if (selectedPlayerName != null) {
           selectedPlayerName = selectedPlayerName.stripLeading().split(" ")[0];
    +      if (selectedPlayerName.length() > MAX_PLAYER_NAME_LENGTH){
    +        selectedPlayerName = selectedPlayerName.substring(0, MAX_PLAYER_NAME_LENGTH);
    +      }
           try {
             setConnectorPlayer(selectedPlayerName);
           } catch (NullPlayerNameException | NullPlayerIdException e) {
    @@ -704,9 +738,15 @@ protected void handleGameSelection() throws IOException, InterruptedException {
        * @throws IOException
        * @throws NullPlayerIdException
        * @throws InterruptedException
    +   * @throws ForceCloseApplicationException
        */
       protected void clientRunnerCore()
    -      throws IOException, InterruptedException, NullPlayerIdException {
    +      throws IOException, InterruptedException, NullPlayerIdException, ForceCloseApplicationException {
    +
    +    //this flag is raised by external threads, as JavaFX
    +    if (forceCloseApplication) {
    +      throw new ForceCloseApplicationException();
    +    }
     
         Player connectorPlayer;
         UUID connectorGameId;
    diff --git a/src/main/java/it/polimi/is23am10/client/RMIClient.java b/src/main/java/it/polimi/is23am10/client/RMIClient.java
    index 0bbfa6c7..9fe5181f 100644
    --- a/src/main/java/it/polimi/is23am10/client/RMIClient.java
    +++ b/src/main/java/it/polimi/is23am10/client/RMIClient.java
    @@ -1,5 +1,6 @@
     package it.polimi.is23am10.client;
     
    +import it.polimi.is23am10.client.exceptions.ForceCloseApplicationException;
     import it.polimi.is23am10.client.interfaces.AlarmConsumer;
     import it.polimi.is23am10.client.userinterface.UserInterface;
     import it.polimi.is23am10.server.command.AbstractCommand;
    @@ -101,6 +102,10 @@ public void run() {
                     "Internal module error, please report this message: " + e.getMessage(),
                     ErrorSeverity.CRITICAL));
             terminateClient();
    +        return;
    +      } catch(ForceCloseApplicationException e) {
    +        terminateClient();
    +        return;
           }
         }
       }
    diff --git a/src/main/java/it/polimi/is23am10/client/SocketClient.java b/src/main/java/it/polimi/is23am10/client/SocketClient.java
    index c5440277..11fe76aa 100644
    --- a/src/main/java/it/polimi/is23am10/client/SocketClient.java
    +++ b/src/main/java/it/polimi/is23am10/client/SocketClient.java
    @@ -1,5 +1,6 @@
     package it.polimi.is23am10.client;
     
    +import it.polimi.is23am10.client.exceptions.ForceCloseApplicationException;
     import it.polimi.is23am10.client.interfaces.AlarmConsumer;
     import it.polimi.is23am10.client.userinterface.UserInterface;
     import it.polimi.is23am10.server.command.AddPlayerCommand;
    @@ -146,6 +147,13 @@ public void run() {
                     ErrorSeverity.CRITICAL));
             terminateClient();
             return;
    +      } catch (ForceCloseApplicationException e) {
    +        terminateClient();
    +        //close the socket to unbock the buffer reader thread, that may be in a blocked state
    +        try {
    +          ((PlayerConnectorSocket) playerConnector).getConnector().close();
    +        } catch(IOException socketException) {}
    +        return;
           }
         }
       }
    @@ -275,14 +283,20 @@ public void runInputMessageHandler() throws IOException {
                     }
                   }
                 } catch (IOException | NullPointerException e) {
    -              userInterface.displayError(
    -                  new ErrorMessage(
    -                      "Internal module error, please report this message:" + e.getMessage(),
    -                      ErrorSeverity.ERROR));
    +              //notify this only if the error is not raised by a wanted action
    +              if (!forceCloseApplication) {
    +                userInterface.displayError(
    +                    new ErrorMessage(
    +                        "Internal module error, please report this message:" + e.getMessage(),
    +                        ErrorSeverity.ERROR));
    +              }
    +              if (!hasRequestedDisconnection()) {
    +                terminateClient();
    +                return;
    +              }
                 }
               }
             });
         messageHandler.start();
       }
    -
     }
    diff --git a/src/main/java/it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.java b/src/main/java/it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.java
    new file mode 100644
    index 00000000..412654c8
    --- /dev/null
    +++ b/src/main/java/it/polimi/is23am10/client/exceptions/ForceCloseApplicationException.java
    @@ -0,0 +1,15 @@
    +package it.polimi.is23am10.client.exceptions;
    +
    +/**
    + * Force application close.
    + *
    + * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
    + * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
    + * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
    + * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
    + */
    +public class ForceCloseApplicationException extends Exception {
    +  public ForceCloseApplicationException() {
    +    super();
    +  }
    +}
    diff --git a/src/main/java/it/polimi/is23am10/client/userinterface/CommandLineInterface.java b/src/main/java/it/polimi/is23am10/client/userinterface/CommandLineInterface.java
    index 121cd627..5383fce1 100644
    --- a/src/main/java/it/polimi/is23am10/client/userinterface/CommandLineInterface.java
    +++ b/src/main/java/it/polimi/is23am10/client/userinterface/CommandLineInterface.java
    @@ -4,11 +4,13 @@
     import java.io.IOException;
     import java.io.InputStreamReader;
     import java.io.Serializable;
    +import java.rmi.RemoteException;
     import java.util.Comparator;
     import java.util.List;
     import java.util.concurrent.BlockingQueue;
     import java.util.concurrent.LinkedBlockingQueue;
     
    +import it.polimi.is23am10.client.Client;
     import it.polimi.is23am10.client.userinterface.helpers.CLIStrings;
     import it.polimi.is23am10.client.userinterface.helpers.OutputWrapper;
     import it.polimi.is23am10.server.model.game.Game.GameStatus;
    @@ -152,13 +154,40 @@ public void displayVirtualView(VirtualView old, VirtualView vw) {
         }
       }
     
    +  /**
    +   * Helper function that returns a well-formatted chat message string.
    +   * 
    +   * @param message The message item.
    +   * @return The string representation of the message.
    +   */
    +  public String getFormattedChatMessage(ChatMessage message){
    +    String msgString;
    +    String playerActor = message.getSender().getPlayerName();
    +    if (message.isBroadcast()) {
    +      msgString = CLIStrings.broadcastMessageString;
    +    } else {
    +      try {
    +        if (message.getReceiverName().equals(Client.getPlayerConnector().getPlayer().getPlayerName())){
    +          msgString = CLIStrings.messageStringReceiver;
    +        } else {
    +          msgString = CLIStrings.messageStringSender;
    +          playerActor = message.getReceiverName();
    +        }
    +      } catch (RemoteException e) {
    +        e.printStackTrace();
    +        return "";
    +      }
    +    }
    +
    +    return String.format(msgString, playerActor, message.getMessage());
    +  }
    +
       /**
        * {@inheritDoc}
        */
       public void displayChatMessage(ChatMessage message) {
         ow.debug(message.toString(), false);
    -    final String msgString = message.isBroadcast() ? CLIStrings.broadcastMessageString : CLIStrings.messageString;
    -    ow.chat(String.format(msgString, message.getSender().getPlayerName(), message.getMessage()), false);
    +    ow.chat(getFormattedChatMessage(message), false);
       }
     
       /**
    diff --git a/src/main/java/it/polimi/is23am10/client/userinterface/GraphicUserInterface.java b/src/main/java/it/polimi/is23am10/client/userinterface/GraphicUserInterface.java
    index 8c9895b2..ab6b462a 100644
    --- a/src/main/java/it/polimi/is23am10/client/userinterface/GraphicUserInterface.java
    +++ b/src/main/java/it/polimi/is23am10/client/userinterface/GraphicUserInterface.java
    @@ -4,22 +4,157 @@
     import it.polimi.is23am10.client.userinterface.guifactory.GuiFactory;
     import it.polimi.is23am10.client.userinterface.guifactory.GuiFactory.SCENE;
     import it.polimi.is23am10.server.model.game.Game.GameStatus;
    +
     import java.io.Serializable;
    +import java.util.LinkedList;
     import java.util.List;
     
    -import it.polimi.is23am10.server.network.messages.AbstractMessage;
     import it.polimi.is23am10.server.network.messages.ChatMessage;
     import it.polimi.is23am10.server.network.messages.ErrorMessage;
     import it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity;
     import it.polimi.is23am10.server.network.virtualview.VirtualView;
     import java.util.Map;
    +import java.util.Queue;
     import java.util.concurrent.BlockingQueue;
     import java.util.concurrent.LinkedBlockingQueue;
     import javafx.application.Application;
    +import javafx.application.Platform;
     import javafx.scene.Scene;
     import javafx.scene.layout.StackPane;
     import javafx.stage.Stage;
     
    +/**
    + * A VirtualView pair class definition.
    + *
    + * @author Alessandro Amandonico (alessandro.amandonico@mail.polimi.it)
    + * @author Francesco Buccoliero (francesco.buccoliero@mail.polimi.it)
    + * @author Kaixi Matteo Chen (kaiximatteo.chen@mail.polimi.it)
    + * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
    + */
    +class VirtualViewPair {
    +  /**
    +   * The new {@link VirtualView}.
    +   */
    +  VirtualView newVw;
    +
    +  /**
    +   * The old {@link VirtualView}.
    +   */
    +  VirtualView oldVw;
    +
    +  /**
    +   * Constructor.
    +   *
    +   * @param o The old {@link VirtualView} instance.
    +   * @param n The new {@link VirtualView} instance.
    +   */
    +  public VirtualViewPair(VirtualView o, VirtualView n) {
    +    newVw = n;
    +    oldVw = o;
    +  }
    +}
    +
    +class VirtualViewSceneHandler {
    +
    +  /**
    +   * A list {@link VirtualViewPair} to be shown.
    +   */
    +  private static final Queue<VirtualViewPair> gameSnapshots = new LinkedList<VirtualViewPair>();
    +
    +  /**
    +   * Custom lock object.
    +   *
    +   */
    +  protected static final Object queueLock = new Object();
    +
    +  /**
    +   * Utility flag to stop the handler thread.
    +   *
    +   */
    +  protected static volatile boolean stop = false;
    +
    +  /**
    +   * Add a new {@link VirtualViewPair} object to the {@link VirtualViewSceneHandler#gameSnapshots}.
    +   *
    +   * @param vwp The {@link VirtualViewPair}.
    +   */
    +  protected static void addVirtualViewPair(VirtualViewPair vwp) {
    +    synchronized(queueLock) {
    +      gameSnapshots.add(vwp);
    +      queueLock.notifyAll();
    +    }
    +  }
    +
    +  /**
    +   * Change the scene with the new {@link VirtualViewPair}.
    +   *
    +   * @param vwp The {@link VirtualViewPair}.
    +   */
    +  private static void setScene(VirtualViewPair vwp) {
    +    if (vwp.newVw.getStatus() == GameStatus.ENDED) {
    +      GuiFactory.stages.put(SCENE.END_GAME, GuiFactory.getEndGameScene(vwp.newVw));
    +      GuiFactory.executeOnJavaFX(
    +          () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.END_GAME)));
    +    } else {
    +      if (vwp.newVw.getStatus() == GameStatus.WAITING_FOR_PLAYERS) {
    +        GuiFactory.executeOnJavaFX(
    +            () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.WAIT_GAME)));
    +      } else {
    +        if (GuiFactory.stages.get(SCENE.GAME_SNAPSHOT) == null) {
    +          GuiFactory.stages.put(SCENE.GAME_SNAPSHOT, GuiFactory.getGameSnapshotScene(vwp.newVw));
    +          GuiFactory.executeOnJavaFX(
    +              () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.GAME_SNAPSHOT)));
    +        } else {
    +          StackPane root = (StackPane) GuiFactory.mainStage.getScene().getRoot();
    +          final VirtualView oldVw = vwp.oldVw;
    +          final VirtualView newVw = vwp.newVw;
    +          GuiFactory.executeOnJavaFX(() -> GuiFactory.GameSnapshotFactory.updateGameWidget(root, oldVw, newVw));
    +        }
    +      }
    +    }
    +  }
    +
    +  /**
    +   * Run the game scene handler thread.
    +   *
    +   */
    +  protected static void runGameSnapShotHandler() {
    +    new Thread(() -> {
    +        while(!stop) {
    +          VirtualViewPair vwp = null;
    +          try {
    +            synchronized(queueLock) {
    +              while(gameSnapshots.size() == 0) {
    +                queueLock.wait();
    +              }
    +              if (stop) {
    +                return;
    +              }
    +              vwp = gameSnapshots.poll();
    +            }
    +            if (vwp != null) {
    +              setScene(vwp); 
    +            }
    +          } catch(NullPointerException | InterruptedException e) {
    +            System.out.println("Internal error occured. You have been shut down");
    +            Platform.exit(); 
    +            terminateHandler();
    +          }
    +        }
    +    }).start();
    +  }
    +
    +  /**
    +   * Terminate the handler.
    +   *
    +   */
    +  protected static void terminateHandler() {
    +    stop = true;
    +    //wake up the thread
    +    addVirtualViewPair(null);
    +  }
    +}
    +
     /**
      * A client interface using a graphic UI as I/O.
      *
    @@ -31,11 +166,19 @@
     public final class GraphicUserInterface extends Application implements UserInterface, Serializable {
     
       /**
    -   * Queue containing all the inputs the user sent trough readline. Content to be consumed by client
    +   * Queue containing all the inputs the user sent trough readline. Content to be
    +   * consumed by client
        * controller on premise.
        */
       private static final BlockingQueue<String> userInputQueue = new LinkedBlockingQueue<>();
     
    +  /**
    +   * Constructor.
    +   */
    +  public GraphicUserInterface() {
    +    VirtualViewSceneHandler.runGameSnapShotHandler();
    +  }
    +
       /**
        * Add a new message to the input list queue.
        *
    @@ -63,18 +206,21 @@ public static String takeMsgQueue() {
       public void start(Stage stage) {
         GuiFactory.mainStage = stage;
         stage.setResizable(false);
    -    Map<SCENE, Scene> m =
    -        Map.of(
    -            SCENE.SPLASH_SCREEN, GuiFactory.getSplashScreenScene(),
    -            SCENE.ENTER_GAME_SELECTION, GuiFactory.getEnterGameSelectionScene(),
    -            SCENE.CREATE_GAME, GuiFactory.getCreateNewGameSelectionScene(),
    -            SCENE.WAIT_GAME, GuiFactory.getWaitGameScene()
    -            // some scenes require the {@link VirtualView}, they are built later
    -            );
    +    Map<SCENE, Scene> m = Map.of(
    +        SCENE.SPLASH_SCREEN, GuiFactory.getSplashScreenScene(),
    +        SCENE.ENTER_GAME_SELECTION, GuiFactory.getEnterGameSelectionScene(),
    +        SCENE.CREATE_GAME, GuiFactory.getCreateNewGameSelectionScene(),
    +        SCENE.WAIT_GAME, GuiFactory.getWaitGameScene()
    +    // some scenes require the {@link VirtualView}, they are built later
    +    );
         GuiFactory.stages.putAll(m);
     
         stage.setTitle("MyShelfie - IS23AM10");
         stage.setScene(GuiFactory.stages.get(SCENE.SPLASH_SCREEN));
    +    stage.setOnCloseRequest(e -> {
    +      Client.setForceCloseApplication(true);
    +      VirtualViewSceneHandler.terminateHandler();
    +    });
         stage.show();
       }
     
    @@ -86,7 +232,9 @@ public String getUserInput() {
       /** {@inheritDoc} */
       public void displaySplashScreen() {
         // this will perform javaFX init process and show the first scene
    -    new Thread(() -> launch()).start();
    +    new Thread(() -> {
    +      launch();
    +    }).start();
       }
     
       /** {@inheritDoc} */
    @@ -97,35 +245,14 @@ public void displayAvailableGames(List<VirtualView> availableGames) {
     
       /** {@inheritDoc} */
       public void displayVirtualView(VirtualView old, VirtualView vw) {
    -    if (vw.getStatus() == GameStatus.ENDED) {
    -      GuiFactory.stages.put(SCENE.END_GAME, GuiFactory.getEndGameScene(vw));
    -      GuiFactory.executeOnJavaFX(
    -          () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.END_GAME)));
    -    } else {
    -      if (vw.getStatus() == GameStatus.WAITING_FOR_PLAYERS) {
    -        GuiFactory.executeOnJavaFX(
    -            () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.WAIT_GAME)));
    -      } else {
    -        if (GuiFactory.stages.get(SCENE.GAME_SNAPSHOT) == null){
    -          GuiFactory.stages.put(SCENE.GAME_SNAPSHOT, GuiFactory.getGameSnapshotScene(vw));
    -          GuiFactory.executeOnJavaFX(
    -            () -> GuiFactory.mainStage.setScene(GuiFactory.stages.get(SCENE.GAME_SNAPSHOT)));
    -        } else {
    -          StackPane root = (StackPane) GuiFactory.mainStage.getScene().getRoot();
    -          GuiFactory.executeOnJavaFX( () ->
    -            GuiFactory.GameSnapshotFactory.updateGameWidget(root, old, vw)
    -          );
    -        }
    -      }
    -    }
    +    VirtualViewSceneHandler.addVirtualViewPair(new VirtualViewPair(old, vw));
       }
     
       /** {@inheritDoc} */
       public void displayChatMessage(ChatMessage message) {
         StackPane root = (StackPane) GuiFactory.mainStage.getScene().getRoot();
         GuiFactory.executeOnJavaFX(
    -      () -> GuiFactory.GameSnapshotFactory.updateChatHistory(root, message)
    -    );
    +        () -> GuiFactory.GameSnapshotFactory.updateChatHistory(root, message));
       }
     
       /** {@inheritDoc}} */
    @@ -135,6 +262,13 @@ public void displayError(ErrorMessage errorMessage) {
           GuiFactory.executeOnJavaFX(
             () -> GuiFactory.getErrorMessage(root, errorMessage)
           );
    +      if (errorMessage.getMessage().contains("You have been disconnected")) {
    +        try {
    +          Thread.sleep(2000);
    +        } catch (InterruptedException e) {
    +        }
    +        Client.setForceCloseApplication(true); 
    +      }
         } else {
           GuiFactory.executeOnJavaFX(
             () -> GuiFactory.GameSnapshotFactory.updateChatHistory(root, errorMessage)
    @@ -144,7 +278,8 @@ public void displayError(ErrorMessage errorMessage) {
     
       /** {@inheritDoc} */
       public void terminateUserInterface() {
    -    // TODO Auto-generated method stub
    +    VirtualViewSceneHandler.terminateHandler();
    +    Platform.exit();
       }
     
       /** {@inheritDoc} */
    diff --git a/src/main/java/it/polimi/is23am10/client/userinterface/UserInterface.java b/src/main/java/it/polimi/is23am10/client/userinterface/UserInterface.java
    index de370329..9ef256f9 100644
    --- a/src/main/java/it/polimi/is23am10/client/userinterface/UserInterface.java
    +++ b/src/main/java/it/polimi/is23am10/client/userinterface/UserInterface.java
    @@ -2,7 +2,6 @@
     
     import java.util.List;
     
    -import it.polimi.is23am10.server.network.messages.AbstractMessage;
     import it.polimi.is23am10.server.network.messages.ChatMessage;
     import it.polimi.is23am10.server.network.messages.ErrorMessage;
     import it.polimi.is23am10.server.network.virtualview.VirtualView;
    @@ -73,6 +72,4 @@ public interface UserInterface {
        *
        */
       void terminateUserInterface();
    -
    -  //TODO: Add other needed display methods if needed
     }
    diff --git a/src/main/java/it/polimi/is23am10/client/userinterface/guifactory/CallBack.java b/src/main/java/it/polimi/is23am10/client/userinterface/guifactory/CallBack.java
    index 3309916c..8285d2ba 100644
    --- a/src/main/java/it/polimi/is23am10/client/userinterface/guifactory/CallBack.java
    +++ b/src/main/java/it/polimi/is23am10/client/userinterface/guifactory/CallBack.java
    @@ -1,7 +1,6 @@
     package it.polimi.is23am10.client.userinterface.guifactory;
     
     import it.polimi.is23am10.client.userinterface.GraphicUserInterface;
    -import it.polimi.is23am10.client.userinterface.UserInterface;
     import it.polimi.is23am10.client.userinterface.guifactory.GuiFactory.SCENE;
     import it.polimi.is23am10.client.userinterface.guifactory.interfaces.BookShelfSelectionCallBack;
     import it.polimi.is23am10.client.userinterface.guifactory.interfaces.ButtonCallBack;
    diff --git a/src/main/java/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.java b/src/main/java/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.java
    index 793d0a1b..4bd650fc 100644
    --- a/src/main/java/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.java
    +++ b/src/main/java/it/polimi/is23am10/client/userinterface/guifactory/GuiFactory.java
    @@ -47,6 +47,7 @@
     import javafx.scene.layout.GridPane;
     import javafx.scene.layout.HBox;
     import javafx.scene.layout.StackPane;
    +import javafx.scene.layout.TilePane;
     import javafx.scene.layout.VBox;
     import javafx.scene.paint.Color;
     import javafx.scene.text.Font;
    @@ -212,6 +213,8 @@ protected static TextField getTextField(
         TextField t = new TextField(placeholder);
         t.setMaxWidth(w);
         t.setMinWidth(h);
    +    t.setStyle("-fx-background-radius: 16px;" +
    +      "-fx-padding: 6px 14px; ");
         t.setFont(Font.font("Arial", weight, size));
         if (cb != null) {
           t.setOnAction(event -> cb.call(t.getText()));
    @@ -233,6 +236,14 @@ protected static TextField getTextField(
        */
       protected static Button getButton(String content, ButtonCallBack cb, TextField... tfs) {
         Button b = new Button(content);
    +    b.setStyle(
    +      "-fx-padding: 6px 14px; " +
    +      "-fx-border-width: 0px; " +
    +      "-fx-text-fill: rgb(51,51,51); " +
    +      "-fx-font-weight: 800; " +
    +      "-fx-background-radius: 16px; " +
    +      "-fx-background-color: #ffffff;"
    +    );
         if (cb != null) {
           b.setOnAction(event -> cb.call(tfs));
         }
    @@ -388,7 +399,7 @@ public static Scene getEndGameScene(VirtualView vv) {
        * static.
        */
       class SplashScreenFactory {
    -    private static final String SPLASH_SCREEN_IMG_PATH = "/assets/bg/in_lobby.png";
    +    private static final String SPLASH_SCREEN_IMG_PATH = "/assets/bg/in_lobby1.png";
     
         protected static TextField textField;
     
    @@ -410,7 +421,7 @@ protected static BackgroundImage getSplashScreenBg() {
          * @return The created Label object for the input name.
          */
         protected static Label getInputNameLabel() {
    -      return getLabel("Please choose your name", FontWeight.BOLD, 40);
    +      return getLabel("Please choose your name", FontWeight.BOLD, 40,Color.BLACK);
         }
     
         /**
    @@ -435,7 +446,7 @@ protected static TextField getInputNameTextField() {
         protected static VBox getInputNameWidget() {
           VBox box = new VBox();
           box.setAlignment(Pos.CENTER);
    -      box.setSpacing(10);
    +      box.setSpacing(30);
           box.getChildren()
               .addAll(
                   getInputNameLabel(),
    @@ -450,7 +461,7 @@ protected static VBox getInputNameWidget() {
        * screen.
        */
       class EndGameSceneFactory {
    -    private static final String SELECTION_SCREEN_IMG_PATH = "/assets/bg/in_game.png";
    +    private static final String SELECTION_SCREEN_IMG_PATH = "/assets/bg/in_lobby1.png";
     
         /**
          * Retrieves the background image for the end game selection screen.
    @@ -467,7 +478,7 @@ protected static BackgroundImage getBg() {
          * @return The label for the enter game selection screen.
          */
         protected static Label getEndGameLabel() {
    -      return getLabel(CLIStrings.gameOverString, FontWeight.BOLD, 40);
    +      return getLabel(CLIStrings.gameOverString, FontWeight.BOLD, 40,Color.BLACK);
         }
     
         /**
    @@ -491,7 +502,7 @@ protected static VBox getScores(VirtualView vv) {
                                   p.getPlayerName(),
                                   p.getScore().getTotalScore()),
                               FontWeight.BOLD,
    -                          30)));
    +                          30,Color.BLACK)));
           return root;
         }
     
    @@ -515,7 +526,7 @@ protected static VBox getEndWidget(VirtualView vv) {
        * screen.
        */
       class EnterGameSelectionScreenFactory {
    -    private static final String SELECTION_SCREEN_IMG_PATH = "/assets/bg/in_lobby.png";
    +    private static final String SELECTION_SCREEN_IMG_PATH = "/assets/bg/in_lobby1.png";
     
         /**
          * Retrieves the background image for the enter game selection screen.
    @@ -532,7 +543,7 @@ protected static BackgroundImage getSelectionBg() {
          * @return The label for the enter game selection screen.
          */
         protected static Label getSelectionOptionLabel() {
    -      return getLabel("Please choose your one option", FontWeight.BOLD, 40);
    +      return getLabel("Please choose your one option", FontWeight.BOLD, 40,Color.BLACK);
         }
     
         /**
    @@ -562,7 +573,7 @@ protected static VBox getSelectionWidget() {
        * a new game.
        */
       class NewGameFactory {
    -    private static final String SPLASH_SCREEN_IMG_PATH = "/assets/bg/in_lobby.png";
    +    private static final String SPLASH_SCREEN_IMG_PATH = "/assets/bg/in_lobby1.png";
     
         /** A map of text fields associated with player numbers. */
         protected static Map<String, TextField> textFields = Map.of(
    @@ -585,7 +596,7 @@ protected static BackgroundImage getBg() {
          * @return The label for inputting the player number.
          */
         protected static Label getInputPlayerNumberLabel() {
    -      return getLabel("Choose max players number", FontWeight.BOLD, 40);
    +      return getLabel("Choose max players number", FontWeight.BOLD, 40,Color.BLACK);
         }
     
         /**
    @@ -625,7 +636,7 @@ protected static VBox getCreateGameWidget() {
        * up a game to join.
        */
       class JoinGameFactory {
    -    private static final String SPLASH_SCREEN_IMG_PATH = "/assets/bg/in_lobby.png";
    +    private static final String SPLASH_SCREEN_IMG_PATH = "/assets/bg/in_join.png";
     
         /**
          * Retrieves the background image.
    @@ -642,7 +653,7 @@ protected static BackgroundImage getBg() {
          * @return The label for inputting the game server selection.
          */
         protected static Label getInputJoinGameLabel() {
    -      return getLabel("Select a game server", FontWeight.BOLD, 40);
    +      return getLabel("Select a game server", FontWeight.BOLD, 40,Color.BLACK);
         }
     
         /**
    @@ -652,11 +663,16 @@ protected static Label getInputJoinGameLabel() {
          * @param vv    The game server virtual view.
          * @return The button for selecting the game server.
          */
    -    protected static Button getGameIdButton(String index, VirtualView vv) {
    +    protected static Button getGameIdButton(Integer index, VirtualView vv) {
           String id = vv.getGameId().toString();
           TextField tf = new TextField(id);
    -      tf.setText(index);
    -      return getButton(id, CallBack.confirmJoinGameCallBack, tf);
    +      tf.setText(String.valueOf(index));
    +      String disconnectedPlayers = (vv.getDisconnectedPlayersNum() > 0)
    +          ? String.format(CLIStrings.disconnectedPlayers, vv.getDisconnectedPlayersNum())
    +          : "";
    +      return getButton(String.format(CLIStrings.availableGameString,
    +          index, vv.getPlayers().size(), vv.getMaxPlayers(), disconnectedPlayers, vv.getGameId()),
    +          CallBack.confirmJoinGameCallBack, tf);
         }
     
         /**
    @@ -669,27 +685,29 @@ protected static Button getGameIdButton(String index, VirtualView vv) {
         protected static VBox getJoinGameWidget(List<VirtualView> vvs) {
           List<Button> buttons = new ArrayList<>();
           for (int i = 0; i < vvs.size(); i++) {
    -        buttons.add(getGameIdButton(String.valueOf(i), vvs.get(i)));
    +        buttons.add(getGameIdButton(i, vvs.get(i)));
           }
     
           ListView<Button> listView = new ListView<>();
     
    -      HBox hbox = new HBox();
    +      TilePane hbox = new TilePane();
           hbox.setAlignment(Pos.CENTER);
    -      hbox.setSpacing(30);
    +      hbox.setHgap(30);
           if (buttons.size() > 0) {
             listView.setItems(FXCollections.observableArrayList(buttons));
    -        listView.setPrefWidth(400);
    +        listView.setPrefWidth(600);
    +        listView.setStyle("-fx-focus-color: -fx-control-inner-background ; -fx-faint-focus-color: -fx-control-inner-background ;");
           }
           hbox.getChildren()
               .add(
                   buttons.size() > 0
                       ? listView
    -                  : getLabel("No available servers!", FontWeight.BOLD, 30, Color.RED));
    +                  : getLabel("No available games!", FontWeight.BOLD, 30, Color.RED));
    +
           VBox vbox = new VBox();
           vbox.setAlignment(Pos.CENTER);
           vbox.setSpacing(10);
    -      vbox.getChildren().addAll(getInputJoinGameLabel(), hbox);
    +      vbox.getChildren().addAll(hbox);
           return vbox;
         }
       }
    @@ -699,7 +717,7 @@ protected static VBox getJoinGameWidget(List<VirtualView> vvs) {
        * phase.
        */
       class WaitGameFactory {
    -    private static final String SELECTION_SCREEN_IMG_PATH = "/assets/bg/in_wait.png";
    +    private static final String SELECTION_SCREEN_IMG_PATH = "/assets/bg/in_lobby1.png";
     
         /**
          * Retrieves the background image for the waiting game.
    @@ -716,7 +734,7 @@ protected static BackgroundImage getBg() {
          * @return The label for the waiting game.
          */
         protected static Label getWaitingLabel() {
    -      return getLabel("Waiting for other players...", FontWeight.BOLD, 40);
    +      return getLabel("Waiting for other players...", FontWeight.BOLD, 40,Color.BLACK);
         }
     
         /**
    @@ -738,14 +756,14 @@ protected static VBox getWaitingWidget() {
        * snapshot.
        */
       public class GameSnapshotFactory {
    -    private static final String SELECTION_SCREEN_IMG_PATH = "/assets/bg/in_game.png";
    +    private static final String SELECTION_SCREEN_IMG_PATH = "/assets/bg/in_game1.png";
         private static final String FRAME_IMG = "/assets/tiles/frame.png";
         private static final String CAT_IMG = "/assets/tiles/cat.png";
         private static final String BOOK_IMG = "/assets/tiles/book.png";
         private static final String GAME_IMG = "/assets/tiles/game.png";
         private static final String PLANT_IMG = "/assets/tiles/plant.png";
         private static final String TROPHY_IMG = "/assets/tiles/trophy.png";
    -    private static final String EMPTY_IMG = "/assets/tiles/empty.png";
    +    private static final String EMPTY_IMG = "/assets/tiles/empty1.png";
         private static final String PRIVATE_ONE = "/assets/private/p1.png";
         private static final String PRIVATE_TWO = "/assets/private/p2.png";
         private static final String PRIVATE_THREE = "/assets/private/p3.png";
    @@ -842,14 +860,14 @@ private static GridPane getGameBoard(VirtualView vv) {
           GridPane gp = new GridPane();
           gp.setHgap(5);
           gp.setVgap(5);
    -      gp.setPadding(new Insets(20));
    +      gp.setPadding(new Insets(0,20,0,20));
     
           Tile[][] b = vv.getGameBoard().getBoardGrid();
           for (int i = 0; i < Board.BOARD_GRID_ROWS; i++) {
             for (int j = 0; j < Board.BOARD_GRID_COLS; j++) {
               ImageView imgView = getImage(imagesMap.get(b[i][j].getType()));
    -          imgView.setFitWidth(55);
    -          imgView.setFitHeight(55);
    +          imgView.setFitWidth(50);
    +          imgView.setFitHeight(50);
               final int row = i;
               final int col = j;
               ColorAdjust caj = new ColorAdjust();
    @@ -883,7 +901,7 @@ private static GridPane getBookShelfGridPane(Bookshelf bs) {
           GridPane gp = new GridPane();
           gp.setHgap(5);
           gp.setVgap(5);
    -      gp.setPadding(new Insets(10));
    +      gp.setPadding(new Insets(5,10,0,10));
     
           Tile[][] b = bs.getBookshelfGrid();
           for (int i = 0; i < b.length; i++) {
    @@ -906,23 +924,6 @@ private static GridPane getBookShelfGridPane(Bookshelf bs) {
           return gp;
         }
     
    -    /**
    -     * Retrieves the bookshelf boards {@link Bookshelf} of all players with the
    -     * player name.
    -     *
    -     * @param vv The virtual view.
    -     * @return A list of bookshelf {@link VBox}.
    -     */
    -    private static GridPane getPlayerBookShelf(VirtualView vv) {
    -
    -      for (VirtualPlayer vp : vv.getPlayers()) {
    -        if (vp.getPlayerName().equals(getMyPlayerName())) {
    -          return getBookShelfGridPane(vp.getBookshelf());
    -        }
    -      }
    -      return null;
    -    }
    -
         /**
          * Retrieves the private card image.
          *
    @@ -971,47 +972,47 @@ protected static HBox getLeaderboard(VirtualView vv) {
           VBox status = new VBox();
           status.setAlignment(Pos.CENTER);
           status.setSpacing(5);
    -      status.getChildren().add(getLabel("Status", FontWeight.BLACK, 15));
    +      status.getChildren().add(getLabel("Status", FontWeight.BLACK, 15,Color.BLACK));
           VBox players = new VBox();
           players.setAlignment(Pos.CENTER);
           players.setSpacing(5);
    -      players.getChildren().add(getLabel("Players", FontWeight.BOLD, 15));
    +      players.getChildren().add(getLabel("Players", FontWeight.BOLD, 15,Color.BLACK));
           VBox firstPlayer = new VBox();
           firstPlayer.setAlignment(Pos.CENTER);
           firstPlayer.setSpacing(5);
           firstPlayer
               .getChildren()
               .addAll(
    -              getLabel("First player", FontWeight.BOLD, 15),
    -              getLabel(vv.getFirstPlayer().getPlayerName(), FontWeight.BOLD, 13));
    +              getLabel("First player", FontWeight.BOLD, 15,Color.BLACK),
    +              getLabel(vv.getFirstPlayer().getPlayerName(), FontWeight.BOLD, 13,Color.BLACK));
           VBox roles = new VBox();
           roles.setAlignment(Pos.CENTER);
           roles.setSpacing(5);
           roles
               .getChildren()
               .addAll(
    -              getLabel("Active turn", FontWeight.BOLD, 15),
    -              getLabel(vv.getActivePlayer().getPlayerName(), FontWeight.BOLD, 13));
    +              getLabel("Active turn", FontWeight.BOLD, 15,Color.BLACK),
    +              getLabel(vv.getActivePlayer().getPlayerName(), FontWeight.BOLD, 13,Color.BLACK));
           VBox bsPoints = new VBox();
           bsPoints.setAlignment(Pos.CENTER);
           bsPoints.setSpacing(5);
    -      bsPoints.getChildren().add(getLabel("BookShelf points", FontWeight.BOLD, 15));
    +      bsPoints.getChildren().add(getLabel("BookShelf points", FontWeight.BOLD, 15,Color.BLACK));
           VBox scoreBlocksPoints = new VBox();
           scoreBlocksPoints.setAlignment(Pos.CENTER);
           scoreBlocksPoints.setSpacing(5);
    -      scoreBlocksPoints.getChildren().add(getLabel("Score blocks points", FontWeight.BOLD, 15));
    +      scoreBlocksPoints.getChildren().add(getLabel("Score blocks points", FontWeight.BOLD, 15,Color.BLACK));
           VBox pvtPoints = new VBox();
           pvtPoints.setAlignment(Pos.CENTER);
           pvtPoints.setSpacing(5);
    -      pvtPoints.getChildren().add(getLabel("Private points", FontWeight.BOLD, 15));
    +      pvtPoints.getChildren().add(getLabel("Private points", FontWeight.BOLD, 15,Color.BLACK));
           VBox extraPoints = new VBox();
           extraPoints.setAlignment(Pos.CENTER);
           extraPoints.setSpacing(5);
    -      extraPoints.getChildren().add(getLabel("Extra points", FontWeight.BOLD, 15));
    +      extraPoints.getChildren().add(getLabel("Extra points", FontWeight.BOLD, 15,Color.BLACK));
           VBox totalScore = new VBox();
           totalScore.setAlignment(Pos.CENTER);
           totalScore.setSpacing(5);
    -      totalScore.getChildren().add(getLabel("Total score", FontWeight.BOLD, 15));
    +      totalScore.getChildren().add(getLabel("Total score", FontWeight.BOLD, 15,Color.BLACK));
           for (VirtualPlayer vp : vv.getPlayers()) {
             status
                 .getChildren()
    @@ -1020,14 +1021,14 @@ protected static HBox getLeaderboard(VirtualView vv) {
                         vp.getIsConnected() ? "ONLINE" : "OFFLINE",
                         FontWeight.BOLD,
                         13,
    -                    vp.getIsConnected() ? Color.GREEN : Color.RED));
    -        players.getChildren().add(getLabel(vp.getPlayerName(), FontWeight.BOLD, 13));
    +                    vp.getIsConnected() ? Color.DARKGREEN : Color.DARKRED));
    +        players.getChildren().add(getLabel(vp.getPlayerName(), FontWeight.BOLD, 13,Color.BLACK));
             bsPoints
                 .getChildren()
    -            .add(getLabel(vp.getScore().getBookshelfPoints().toString(), FontWeight.BOLD, 13));
    +            .add(getLabel(vp.getScore().getBookshelfPoints().toString(), FontWeight.BOLD, 13,Color.BLACK));
             scoreBlocksPoints
                 .getChildren()
    -            .add(getLabel(vp.getScore().getScoreBlockPoints().toString(), FontWeight.BOLD, 13));
    +            .add(getLabel(vp.getScore().getScoreBlockPoints().toString(), FontWeight.BOLD, 13,Color.BLACK));
             pvtPoints
                 .getChildren()
                 .add(
    @@ -1036,13 +1037,13 @@ protected static HBox getLeaderboard(VirtualView vv) {
                             ? "?"
                             : vp.getScore().getPrivatePoints().toString(),
                         FontWeight.BOLD,
    -                    13));
    +                    13,Color.BLACK));
             extraPoints
                 .getChildren()
    -            .add(getLabel(vp.getScore().getExtraPoint().toString(), FontWeight.BOLD, 13));
    +            .add(getLabel(vp.getScore().getExtraPoint().toString(), FontWeight.BOLD, 13,Color.BLACK));
             totalScore
                 .getChildren()
    -            .add(getLabel(vp.getScore().getStringTotalScore(), FontWeight.BOLD, 13));
    +            .add(getLabel(vp.getScore().getStringTotalScore(), FontWeight.BOLD, 13,Color.BLACK));
           }
           HBox root = new HBox();
           root.setSpacing(30);
    @@ -1068,6 +1069,7 @@ protected static HBox getLeaderboard(VirtualView vv) {
          */
         protected static TextField getChatTextField() {
           textField = getTextField("Enter your message here", 180, 100, FontWeight.NORMAL, 12, null);
    +      textField.setStyle("-fx-focus-color: -fx-control-inner-background ; -fx-faint-focus-color: -fx-control-inner-background ;");
           return textField;
         }
     
    @@ -1095,8 +1097,11 @@ protected static HBox getSendMessageBox() {
         protected static VBox getChatHistory() {
           VBox chatHistory = new VBox();
           chatMessagesListView = new ListView<String>();
    -      chatMessagesListView.setStyle("-fx-control-inner-background: #B0721E");
    +      //chatMessagesListView.setStyle("-fx-control-inner-background: #A9562A");
    +      chatMessagesListView.setPadding(new Insets(0));
    +      chatMessagesListView.setStyle("-fx-focus-color: -fx-control-inner-background ; -fx-faint-focus-color: -fx-control-inner-background ;");
           chatMessagesListView.setPrefWidth(300);
    +      chatMessagesListView.setPrefHeight(550);
     
           // this 'magheggio' is needed to have a message that doesn't overflow in chat
           chatMessagesListView.setCellFactory(list -> new ListCell<String>() {
    @@ -1132,7 +1137,7 @@ protected void updateItem(String item, boolean empty) {
         protected static VBox getChat() {
           VBox chat = new VBox();
           chat.setSpacing(10);
    -      chat.setAlignment(Pos.BOTTOM_RIGHT);
    +      chat.setAlignment(Pos.TOP_RIGHT);
           chat.getChildren().addAll(
               getChatHistory(),
               getSendMessageBox());
    @@ -1163,30 +1168,30 @@ private static VBox getBSButtons(VirtualView vv) {
          */
         protected static VBox getGameWidget(VirtualView vv) {
           VBox commonGoals = new VBox();
    -      commonGoals.setAlignment(Pos.CENTER);
    +      commonGoals.setAlignment(Pos.BOTTOM_CENTER);
           commonGoals.setSpacing(10);
           commonGoals.getChildren().addAll(getCommonGoalCard(vv));
           VBox playerItems = new VBox();
    -      playerItems.setAlignment(Pos.CENTER);
    -      playerItems.setSpacing(10);
    -      playerItems.getChildren().add(getLabel("Your Private Card", FontWeight.BOLD, 20));
    +      playerItems.setAlignment(Pos.TOP_CENTER);
    +      playerItems.setSpacing(5);
    +      playerItems.getChildren().add(getLabel("Your Private Card", FontWeight.BOLD, 20,Color.BLACK));
           playerItems.getChildren().add(getPrivateCard(vv));
    -      playerItems.getChildren().add(getLabel("Common Goals", FontWeight.BOLD, 20));
    +      playerItems.getChildren().add(getLabel("Common Goals", FontWeight.BOLD, 20,Color.BLACK));
           playerItems.getChildren().add(commonGoals);
           VBox gameBoard = new VBox();
           gameBoard.setSpacing(10);
    -      gameBoard.setAlignment(Pos.CENTER);
    -      gameBoard.getChildren().addAll(getLabel("Game Board", FontWeight.BOLD, 20), getGameBoard(vv));
    +      gameBoard.setAlignment(Pos.TOP_CENTER);
    +      gameBoard.getChildren().addAll(getLabel("Game Board", FontWeight.BOLD, 20,Color.BLACK), getGameBoard(vv));
           VBox bookShelf = new VBox();
           bookShelf.setSpacing(10);
    -      bookShelf.setAlignment(Pos.CENTER);
    +      bookShelf.setAlignment(Pos.TOP_CENTER);
           bookShelf
               .getChildren()
    -          .addAll(getLabel(String.format("%s's Bookshelf", vv.getActivePlayer().getPlayerName()), FontWeight.BOLD, 20), getBookShelfGridPane(vv.getActivePlayer().getBookshelf()), getBSButtons(vv));
    +          .addAll(getLabel(String.format("%s's Bookshelf", vv.getActivePlayer().getPlayerName()), FontWeight.BOLD, 20,Color.BLACK), getBookShelfGridPane(vv.getActivePlayer().getBookshelf()), getBSButtons(vv));
           VBox chat = new VBox();
    -      chat.setAlignment(Pos.BOTTOM_RIGHT);
    -      chat.setPadding(new Insets(0, 15, 15, 0));
    -      chat.getChildren().addAll(getLabel("Chat", FontWeight.BOLD, 20), getChat());
    +      chat.setAlignment(Pos.TOP_RIGHT);
    +      chat.setPadding(new Insets(10, 15, 10, 10));
    +      chat.getChildren().addAll(getLabel("Chat", FontWeight.BOLD, 20,Color.BLACK), getChat());
           HBox gameStage = new HBox();
           gameStage.setAlignment(Pos.CENTER);
           gameStage.getChildren().addAll(gameBoard, bookShelf, playerItems, chat);
    @@ -1304,7 +1309,6 @@ public static void removeTile(int row, int col) {
           int index = move.indexOf(m);
           if (index < 0) {
             return;
    -        // TODO: show internal error
           }
           move = move.replaceAll(move.substring(index, index + m.length()), "");
         }
    diff --git a/src/main/java/it/polimi/is23am10/client/userinterface/helpers/CLIStrings.java b/src/main/java/it/polimi/is23am10/client/userinterface/helpers/CLIStrings.java
    index 5e38f082..f06a4f79 100644
    --- a/src/main/java/it/polimi/is23am10/client/userinterface/helpers/CLIStrings.java
    +++ b/src/main/java/it/polimi/is23am10/client/userinterface/helpers/CLIStrings.java
    @@ -39,7 +39,8 @@ public final class CLIStrings {
       public final static String nowPlaying = "Now playing: %s";
       public final static String moveTilesInviteString =  "Now make your move specifying the `XY` of the tile you want to pick from board (max 3) followed by the column index of the bookshelf you want to put the tile in.";
       public final static String moveTilesExampleString =  "E.g. `move 12 22 25 A` moves the tiles with coordinates (1,2),(2,5) and (5,7) to the bookshelf first three available spots in your bookshelf column 'A' in that order.";
    -  public final static String messageString =  "(%s -> You): %s";
    +  public final static String messageStringReceiver =  "(%s -> You): %s";
    +  public final static String messageStringSender =  "(You -> %s): %s";
       public final static String broadcastMessageString = "(%s -> All): %s";
       public final static String errorMessage = "(Server -> You): %s";
       public final static String broadcastErrorString = "(Server -> All): %s";
    diff --git a/src/main/java/it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.java b/src/main/java/it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.java
    index 4b58ae78..53ba9afa 100644
    --- a/src/main/java/it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.java
    +++ b/src/main/java/it/polimi/is23am10/client/userinterface/helpers/CommandsBuilder.java
    @@ -9,7 +9,6 @@
      * @author Lorenzo Cavallero (lorenzo1.cavallero@mail.polimi.it)
      */
     public final class CommandsBuilder {
    -  //TODO: integrate missing commands
     
       /**
        * The command string for creating a game.
    diff --git a/src/main/java/it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.java b/src/main/java/it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.java
    index 51907953..d2f884ba 100644
    --- a/src/main/java/it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.java
    +++ b/src/main/java/it/polimi/is23am10/client/userinterface/helpers/OutputWrapper.java
    @@ -1,8 +1,5 @@
     package it.polimi.is23am10.client.userinterface.helpers;
     
    -import java.io.BufferedReader;
    -import java.io.IOException;
    -import java.io.InputStreamReader;
     import java.io.Serializable;
     import java.time.ZoneId;
     import java.time.ZonedDateTime;
    @@ -11,36 +8,13 @@
     import java.util.List;
     import java.util.Map;
     
    -import it.polimi.is23am10.client.userinterface.CommandLineInterface;
    -import it.polimi.is23am10.server.model.factory.GameFactory;
    -import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
    -import it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException;
    -import it.polimi.is23am10.server.model.game.Game;
    -import it.polimi.is23am10.server.model.game.exceptions.FullGameException;
    -import it.polimi.is23am10.server.model.game.exceptions.InvalidMaxPlayerException;
    -import it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException;
    -import it.polimi.is23am10.server.model.game.exceptions.NullMaxPlayerException;
    -import it.polimi.is23am10.server.model.game.exceptions.PlayerNotFoundException;
    +
     import it.polimi.is23am10.server.model.items.board.Board;
    -import it.polimi.is23am10.server.model.items.board.exceptions.InvalidNumOfPlayersException;
    -import it.polimi.is23am10.server.model.items.board.exceptions.NullNumOfPlayersException;
     import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
     import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
     import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
    -import it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException;
    -import it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException;
     import it.polimi.is23am10.server.model.items.tile.Tile;
     import it.polimi.is23am10.server.model.items.tile.Tile.TileType;
    -import it.polimi.is23am10.server.model.player.Player;
    -import it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException;
    -import it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException;
    -import it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException;
    -import it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException;
    -import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException;
    -import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
    -import it.polimi.is23am10.server.network.messages.ChatMessage;
    -import it.polimi.is23am10.server.network.messages.ErrorMessage;
    -import it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity;
     import it.polimi.is23am10.server.network.virtualview.VirtualPlayer;
     import it.polimi.is23am10.server.network.virtualview.VirtualView;
     import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
    @@ -255,9 +229,8 @@ public void show(VirtualView vw, boolean cleanFirst) {
         // Name.
         StringBuilder name = new StringBuilder();
         name.append(CLIStrings.newLine); // New Line for aesthetic purpose.
    -    pos = 1;
    -    for (VirtualPlayer vp : players) {
    -      name.append(String.format(CLIStrings.playerIdx, pos++));
    +    for (int i = 1; i < players.size() + 1; i++) {
    +      name.append(String.format(CLIStrings.playerIdx, pos));
         }
         info(name.toString(), false);
     
    @@ -489,56 +462,4 @@ public void setDebug(boolean toSet) {
         showDebug = toSet;
       }
     
    -  // Runnable method to eyeball the various outputs.
    -  // TODO: Remove in prod / once all outputs are testable from actual client.
    -  public static void main(String[] args)
    -      throws NullPlayerNameException, IOException, NullMaxPlayerException,
    -      InvalidMaxPlayerException,
    -      NullPlayerIdException, NullPlayerBookshelfException,
    -      NullPlayerScoreException, NullPlayerPrivateCardException,
    -      NullPlayerScoreBlocksException, DuplicatePlayerNameException,
    -      AlreadyInitiatedPatternException,
    -      NullPlayerNamesException, InvalidNumOfPlayersException,
    -      NullNumOfPlayersException, NullAssignedPatternException,
    -      FullGameException, NotValidScoreBlockValueException, PlayerNotFoundException,
    -      NullPointerException {
    -    OutputWrapper ow = new OutputWrapper(true);
    -
    -    ow.debug("THIS IS A DEBUG MESSAGE", false);
    -    ow.info("THIS IS A INFO MESSAGE", false);
    -    ow.chat("THIS IS A CHAT MESSAGE", false);
    -    ow.warning("THIS IS A WARNING!!", false);
    -    ow.error("THIS IS AN ERROR!!!", false);
    -    ow.critical("THIS IS A CRITICAL ERROR!", false);
    -
    -    CommandLineInterface cli = new CommandLineInterface(false);
    -
    -    Player p1 = new Player();
    -    p1.setPlayerName("Ned Flanders");
    -
    -    cli.displaySplashScreen();
    -    BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    -    cli.displayChatMessage(new ChatMessage(p1, "Salve salvino"));
    -    String choice = reader.readLine();
    -
    -    Game g = GameFactory.getNewGame("Romolo", 4);
    -    g.addPlayer("Numa Pompilio");
    -    g.addPlayer("Anco Marzio");
    -    g.addPlayer("Lucio Tarquinio Prisco");
    -
    -    VirtualView vw1 = new VirtualView(GameFactory.getNewGame("bob", 2));
    -    VirtualView vw2 = new VirtualView(g);
    -
    -    vw2.getPlayers().get(0).obfuscatePrivateCard();
    -
    -    List<VirtualView> games = List.of(
    -        vw1, vw2);
    -    cli.displayAvailableGames(games);
    -
    -    cli.displayError(new ErrorMessage("L'ultimo che finisce è scemo", ErrorSeverity.WARNING));
    -
    -    String gameChoice = reader.readLine();
    -
    -    cli.displayVirtualView(null, vw2);
    -  }
     }
    diff --git a/src/main/java/it/polimi/is23am10/server/controller/ServerControllerSocket.java b/src/main/java/it/polimi/is23am10/server/controller/ServerControllerSocket.java
    index a0f190ee..2cacb53d 100644
    --- a/src/main/java/it/polimi/is23am10/server/controller/ServerControllerSocket.java
    +++ b/src/main/java/it/polimi/is23am10/server/controller/ServerControllerSocket.java
    @@ -153,7 +153,7 @@ protected void update() throws InterruptedException, IOException {
                 StandardCharsets.UTF_8);
             printer.println(gson.toJson(msg));
           }
    -      logger.info("{} sent to client {}", msg.getMessageType(), msg.getMessage());
    +      logger.info("{} sent to client {}", msg.getMessageType(), msg.getMessage() == null ? "": msg.getMessage());
         }
       }
     
    diff --git a/src/main/java/it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.java b/src/main/java/it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.java
    index 4ce6ff22..37021df4 100644
    --- a/src/main/java/it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.java
    +++ b/src/main/java/it/polimi/is23am10/server/controller/interfaces/IServerControllerAction.java
    @@ -47,8 +47,6 @@
     import it.polimi.is23am10.server.network.messages.SnoozeACKMessage;
     import it.polimi.is23am10.server.network.messages.ErrorMessage.ErrorSeverity;
     import it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector;
    -import it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket;
    -import it.polimi.is23am10.server.network.playerconnector.exceptions.NullSocketConnectorException;
     import it.polimi.is23am10.server.network.virtualview.VirtualView;
     import it.polimi.is23am10.utils.ErrorTypeString;
     import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
    @@ -150,8 +148,6 @@ public interface IServerControllerAction extends Remote {
               ErrorTypeString.ERROR_ADDING_HANDLER, e);
           errorMsg = new ErrorMessage(ErrorTypeString.ERROR_SERVER_SIDE, ErrorSeverity.CRITICAL);
         } catch (NullPlayerConnector e) {
    -      // TODO: as we have a null connector, the model should expose something to
    -      // remove the player.
           logger.fatal("{} {} {}",
               ServerDebugPrefixString.START_COMMAND_PREFIX,
               ErrorTypeString.ERROR_ADDING_CONNECTOR, e);
    @@ -262,8 +258,6 @@ public interface IServerControllerAction extends Remote {
               ErrorTypeString.ERROR_GAME_FULL, e);
           errorMsg = new ErrorMessage(ErrorTypeString.ERROR_GAME_FULL, ErrorSeverity.ERROR);
         } catch (NullPlayerConnector e) {
    -      // TODO: as we have a null connector, the model should expose something to
    -      // remove the player.
           logger.error("{} {} {}",
               ServerDebugPrefixString.START_COMMAND_PREFIX,
               ErrorTypeString.ERROR_ADDING_CONNECTOR, e);
    diff --git a/src/main/java/it/polimi/is23am10/server/model/factory/PlayerFactory.java b/src/main/java/it/polimi/is23am10/server/model/factory/PlayerFactory.java
    index cb6e5b81..40e16b93 100644
    --- a/src/main/java/it/polimi/is23am10/server/model/factory/PlayerFactory.java
    +++ b/src/main/java/it/polimi/is23am10/server/model/factory/PlayerFactory.java
    @@ -5,7 +5,6 @@
     import java.util.UUID;
     
     import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
    -import it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException;
     import it.polimi.is23am10.server.model.game.Game;
     import it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException;
     import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
    diff --git a/src/main/java/it/polimi/is23am10/server/model/score/Score.java b/src/main/java/it/polimi/is23am10/server/model/score/Score.java
    index 43121249..c75f1352 100644
    --- a/src/main/java/it/polimi/is23am10/server/model/score/Score.java
    +++ b/src/main/java/it/polimi/is23am10/server/model/score/Score.java
    @@ -122,7 +122,6 @@ public Score(Score toCopy) {
        * extraPoint setter. Value can be only set to 1.
        * 
        */
    -  // TODO: Check that extra points is given to only one player
       public void setExtraPoint() {
         this.extraPoint = 1;
       }
    diff --git a/src/main/java/it/polimi/is23am10/server/network/gamehandler/GameHandler.java b/src/main/java/it/polimi/is23am10/server/network/gamehandler/GameHandler.java
    index 06f4877c..c7707437 100644
    --- a/src/main/java/it/polimi/is23am10/server/network/gamehandler/GameHandler.java
    +++ b/src/main/java/it/polimi/is23am10/server/network/gamehandler/GameHandler.java
    @@ -192,15 +192,15 @@ public void addPlayerConnector(AbstractPlayerConnector playerConnector)
       /**
        * Push a new game state to the message queue for each connected player.
        *
    -   * @throws GameSnapshotUpdateException On queue message insertion failure.
    +   * @throws GameSnapshotUpdateException On notification failure.
        *
        */
       public void pushGameState() throws GameSnapshotUpdateException {
         // iterating over the Collections.synchronizedList requires synch.
         synchronized (playerConnectors) {
    -      for (AbstractPlayerConnector pc : playerConnectors) {
    +      playerConnectors.parallelStream().forEach((pc) -> {
             if (!pc.getPlayer().getIsConnected()) {
    -          continue;
    +          return;
             }
             VirtualView gameCopy = new VirtualView(game);
             if (game.getStatus() != GameStatus.ENDED) {
    @@ -213,9 +213,9 @@ public void pushGameState() throws GameSnapshotUpdateException {
             try {
               pc.notify(new GameMessage(gameCopy));
             } catch (InterruptedException | RemoteException e) {
    -          throw new GameSnapshotUpdateException(game);
    +          logger.error("Failed to notify game state {}", e.getMessage());
             }
    -      }
    +      });
         }
       }
     
    diff --git a/src/main/java/it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.java b/src/main/java/it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.java
    index 32236699..a8896a7c 100644
    --- a/src/main/java/it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.java
    +++ b/src/main/java/it/polimi/is23am10/server/network/playerconnector/interfaces/IPlayerConnector.java
    @@ -30,6 +30,7 @@ public interface IPlayerConnector extends Remote {
        * Setter for the associated player.
        *
        * @param p The player to be set.
    +   * @throws RemoteException
        *
        */
       void setPlayer(Player p) throws RemoteException;
    diff --git a/src/main/java/it/polimi/is23am10/server/network/virtualview/VirtualPlayer.java b/src/main/java/it/polimi/is23am10/server/network/virtualview/VirtualPlayer.java
    index a77bf2fd..49dafc67 100644
    --- a/src/main/java/it/polimi/is23am10/server/network/virtualview/VirtualPlayer.java
    +++ b/src/main/java/it/polimi/is23am10/server/network/virtualview/VirtualPlayer.java
    @@ -4,11 +4,8 @@
     import java.util.UUID;
     
     import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
    -import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
    -import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
     import it.polimi.is23am10.server.model.player.Player;
     import it.polimi.is23am10.server.model.score.Score;
    -import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
     
     /**
      * A virtual view with the state of a player, downscoped
    diff --git a/src/main/java/it/polimi/is23am10/utils/ArgParser.java b/src/main/java/it/polimi/is23am10/utils/ArgParser.java
    index c1c9f2b8..1ff50a04 100644
    --- a/src/main/java/it/polimi/is23am10/utils/ArgParser.java
    +++ b/src/main/java/it/polimi/is23am10/utils/ArgParser.java
    @@ -6,7 +6,6 @@
     import it.polimi.is23am10.utils.exceptions.InvalidArgumentException;
     import it.polimi.is23am10.utils.exceptions.MissingParameterException;
     
    -import java.util.regex.Matcher;
     import java.util.regex.Pattern;
     
     /**
    diff --git a/src/main/java/it/polimi/is23am10/utils/config/AppConfigContext.java b/src/main/java/it/polimi/is23am10/utils/config/AppConfigContext.java
    index c5c67892..6be0c3a4 100644
    --- a/src/main/java/it/polimi/is23am10/utils/config/AppConfigContext.java
    +++ b/src/main/java/it/polimi/is23am10/utils/config/AppConfigContext.java
    @@ -70,19 +70,20 @@ public class AppConfigContext {
        * The maximum inactivity time allowed to a player when playing a game turn.
        */
       private long maxInactivityTimeMs;
    -
    +  
       /**
        * Constructor.
        * 
    -   * @param serverSocketPort     The server port number.
    +   * @param serverSocketPort The server socket port number.
    +   * @param serverRmiPort The server rmi port number.
        * @param maxConnections The maximum allowed connections.
    -   * @param keepAlive      The socket keep alive flag.
    -   * @param serverRmiPort The server RMI port.
    +   * @param keepAlive The socket keep alive flag.
        * @param isServer Run app in server mode flag.
        * @param showGUI Show GUI client flag.
        * @param useRMI Use RMI over socket flag.
        * @param serverAddress Address where to find server.
        * @param showDebug Show debug infos flag.
    +   * @param maxInactivityTimeMs Milliseconds to wait for inactive players before disconnecting.
        */
       public AppConfigContext(Integer serverSocketPort, Integer serverRmiPort,
           Integer maxConnections, boolean keepAlive, boolean isServer, boolean showGUI, boolean useRMI, String serverAddress, boolean showDebug, long maxInactivityTimeMs) {
    diff --git a/src/main/resources/assets/bg/bg_leader.png b/src/main/resources/assets/bg/bg_leader.png
    new file mode 100644
    index 00000000..233402b6
    Binary files /dev/null and b/src/main/resources/assets/bg/bg_leader.png differ
    diff --git a/src/main/resources/assets/bg/in_game1.png b/src/main/resources/assets/bg/in_game1.png
    new file mode 100644
    index 00000000..cf38965d
    Binary files /dev/null and b/src/main/resources/assets/bg/in_game1.png differ
    diff --git a/src/main/resources/assets/bg/in_join.png b/src/main/resources/assets/bg/in_join.png
    new file mode 100644
    index 00000000..03e23cd2
    Binary files /dev/null and b/src/main/resources/assets/bg/in_join.png differ
    diff --git a/src/main/resources/assets/bg/in_lobby1.png b/src/main/resources/assets/bg/in_lobby1.png
    new file mode 100644
    index 00000000..6dd965fc
    Binary files /dev/null and b/src/main/resources/assets/bg/in_lobby1.png differ
    diff --git a/src/main/resources/assets/bg/splash_bg.png b/src/main/resources/assets/bg/splash_bg.png
    new file mode 100644
    index 00000000..c9f2c249
    Binary files /dev/null and b/src/main/resources/assets/bg/splash_bg.png differ
    diff --git a/src/main/resources/assets/tiles/empty1.png b/src/main/resources/assets/tiles/empty1.png
    new file mode 100644
    index 00000000..febb8333
    Binary files /dev/null and b/src/main/resources/assets/tiles/empty1.png differ
    diff --git a/src/test/java/it/polimi/is23am10/client/RMIClientTest.java b/src/test/java/it/polimi/is23am10/client/RMIClientTest.java
    index 910c8a7a..a9252a02 100644
    --- a/src/test/java/it/polimi/is23am10/client/RMIClientTest.java
    +++ b/src/test/java/it/polimi/is23am10/client/RMIClientTest.java
    @@ -1,7 +1,6 @@
     package it.polimi.is23am10.client;
     
     import static org.junit.Assert.assertNotNull;
    -import static org.junit.jupiter.api.Assertions.assertEquals;
     import static org.junit.jupiter.api.Assertions.assertTrue;
     import static org.mockito.Mockito.doNothing;
     import static org.mockito.Mockito.doReturn;
    @@ -16,12 +15,9 @@
     import java.rmi.NotBoundException;
     import java.rmi.RemoteException;
     import java.rmi.registry.Registry;
    -import java.util.List;
    -import java.util.UUID;
     import java.util.concurrent.LinkedBlockingQueue;
     
     import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Disabled;
     import org.junit.jupiter.api.Test;
     import org.junit.runner.RunWith;
     import org.mockito.InjectMocks;
    @@ -102,12 +98,11 @@ void constructor_should_create_RMIClientTest()
       }
     
       @Test
    -  @Disabled
       void run_should_runCoreCycle() throws IOException, InterruptedException, NullSocketConnectorException, NullBlockingQueueException, NullPlayerNameException {
         AbstractMessage msg = new ErrorMessage("New Message", null);
     
         doReturn(false, true).when(rmiClient).hasRequestedDisconnection();
    -    doReturn("ale").when(rmiClient).handlePlayerNameSelection();
    +    doReturn(true).when(rmiClient).handlePlayerNameSelection();
         doNothing().when(rmiClient).handleGameSelection();
         when(playerConnectorServer.getMessageFromQueue()).thenReturn(msg);
         doNothing().when(rmiClient).showServerMessage(msg);
    @@ -134,26 +129,6 @@ void handlePlayerNameSelection_should_run_playerNameSelection() throws IOExcepti
         assertTrue(rmiClient.handlePlayerNameSelection());
       }
     
    -  @Test
    -  @Disabled
    -  void handleGameSelection_should_run_gameSelection() throws IOException, InterruptedException, NullSocketConnectorException, NullBlockingQueueException, NullPlayerNameException, NotBoundException {
    -    List<VirtualView> ag = List.of(mock(VirtualView.class));
    -    String command = "c 2";
    -    UUID gId = UUID.randomUUID();
    -    UserInterface ui = mock(UserInterface.class);
    -
    -    rmiClient.setUserInterface(ui);
    -    doReturn(ui).when(rmiClient).getUserInterface();
    -    when(ui.getUserInput()).thenReturn(command);
    -    rmiClient.setActiveGameServers(ag);
    -    doNothing().when(rmiClient).getAvailableGames();
    -    when(rmiClient.getGameIdRef()).thenReturn(gId,gId);
    -
    -    rmiClient.handleGameSelection();
    -
    -    assertEquals(gId, playerConnectorRmi.getGameId());
    -  }
    -
       @Test
       void handleCommand_should_run_handleCommand() throws IOException, InterruptedException, NullSocketConnectorException, NullBlockingQueueException, NullPlayerNameException, NotBoundException, InvalidNumOfPlayersException, NullNumOfPlayersException, BoardGridRowIndexOutOfBoundsException, BoardGridColIndexOutOfBoundsException, NullIndexValueException {
         String pn = "Benny";
    diff --git a/src/test/java/it/polimi/is23am10/client/userinterface/CommandLineInterfaceTest.java b/src/test/java/it/polimi/is23am10/client/userinterface/CommandLineInterfaceTest.java
    index d4f230ba..9f325e46 100644
    --- a/src/test/java/it/polimi/is23am10/client/userinterface/CommandLineInterfaceTest.java
    +++ b/src/test/java/it/polimi/is23am10/client/userinterface/CommandLineInterfaceTest.java
    @@ -2,17 +2,27 @@
     
     import static org.junit.Assert.assertEquals;
     import static org.junit.Assert.assertTrue;
    +import static org.mockito.Mockito.doReturn;
    +import static org.mockito.Mockito.mockStatic;
    +import static org.mockito.Mockito.when;
     
     import java.io.ByteArrayOutputStream;
     import java.io.PrintStream;
    +import java.net.Socket;
     import java.util.List;
     import java.util.UUID;
    +import java.util.concurrent.LinkedBlockingQueue;
     
     import org.junit.jupiter.api.AfterEach;
     import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Disabled;
     import org.junit.jupiter.api.Test;
    +import org.mockito.InjectMocks;
    +import org.mockito.MockedStatic;
    +import org.mockito.Mockito;
    +import org.mockito.Spy;
     
    +import it.polimi.is23am10.client.Client;
    +import it.polimi.is23am10.client.SocketClient;
     import it.polimi.is23am10.client.userinterface.helpers.CLIStrings;
     import it.polimi.is23am10.client.userinterface.helpers.OutputWrapper.OutputLevel;
     import it.polimi.is23am10.server.model.factory.GameFactory;
    @@ -38,9 +48,13 @@
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
     import it.polimi.is23am10.server.model.score.Score;
     import it.polimi.is23am10.server.network.messages.ChatMessage;
    +import it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector;
    +import it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket;
    +import it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException;
    +import it.polimi.is23am10.server.network.playerconnector.exceptions.NullSocketConnectorException;
    +import it.polimi.is23am10.server.network.playerconnector.interfaces.IPlayerConnector;
     import it.polimi.is23am10.server.network.virtualview.VirtualView;
     
    -
     public class CommandLineInterfaceTest {
       private final PrintStream standardOut = System.out;
       private final ByteArrayOutputStream outputStreamCaptor = new ByteArrayOutputStream();
    @@ -84,7 +98,8 @@ void displayAvailableGames_should_display_games() throws NullMaxPlayerException,
     
         final String expectedString = String.format("%s\n%s\n%s",
             CLIStrings.listGamesString,
    -        String.format(CLIStrings.availableGameString, 0, vw1.getPlayers().size(), vw1.getMaxPlayers(), "", vw1.getGameId()),
    +        String.format(CLIStrings.availableGameString, 0, vw1.getPlayers().size(), vw1.getMaxPlayers(), "",
    +            vw1.getGameId()),
             String.format(CLIStrings.availableGameString, 1, vw2.getPlayers().size(), vw2.getMaxPlayers(), "",
                 vw2.getGameId()));
     
    @@ -151,33 +166,33 @@ void displayVirtualView_should_display_game_state()
         VirtualView vw = new VirtualView(g);
         cli.displayVirtualView(null, vw);
     
    -    // .show(VirtualView) method doesn't return the dynamic strings like other OW methods.
    +    // .show(VirtualView) method doesn't return the dynamic strings like other OW
    +    // methods.
         // Sample-testing cli strings to ensure the whole method gets executed.
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.currentStateString));
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.boardStatus));
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.indexBoard));
     
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.topPaddingBoard));
    -    assertTrue(outputStreamCaptor.toString().contains(CLIStrings.tabBlackSquare));    
    +    assertTrue(outputStreamCaptor.toString().contains(CLIStrings.tabBlackSquare));
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.bottomPaddingBoard));
    -    
    +
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.bookshelfPoints));
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.scoreBlockPoints));
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.privatePoints));
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.extraPoints));
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.totalScore));
    -    
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.yourTurn));
     
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.indexBookshelf));
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.paddingBookshelf));
    -    
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.moveTilesInviteString));
         assertTrue(outputStreamCaptor.toString().contains(CLIStrings.moveTilesExampleString));
       }
     
       @Test
    -  void displayChatMessage_should_display_private_message() throws NullPlayerNameException, NullPlayerIdException {
    +  void displayChatMessage_should_display_private_message()
    +      throws NullPlayerNameException, NullPlayerIdException, NullSocketConnectorException, NullBlockingQueueException {
         String textMessage = "valar";
         String playerName = "Jaqen";
         String receiverName = "Arya";
    @@ -188,12 +203,18 @@ void displayChatMessage_should_display_private_message() throws NullPlayerNameEx
         Player receiver = new Player();
         receiver.setPlayerID(UUID.nameUUIDFromBytes(receiverName.getBytes()));
         receiver.setPlayerName(receiverName);
    -    
    -    ChatMessage m = new ChatMessage(p, textMessage, receiverName);
    -    cli.displayChatMessage(m);
     
    -    final String expectedString = String.format(CLIStrings.messageString, playerName, textMessage);
    -    assertOutput(OutputLevel.CHAT, expectedString);
    +    try (MockedStatic<Client> clientMock = Mockito.mockStatic(Client.class)) {
    +      AbstractPlayerConnector pc = Mockito.mock(AbstractPlayerConnector.class);
    +      clientMock.when(Client::getPlayerConnector).thenReturn(pc);
    +      Mockito.when(pc.getPlayer()).thenReturn(receiver);
    +
    +      ChatMessage m = new ChatMessage(p, textMessage, receiverName);
    +      cli.displayChatMessage(m);
    +
    +      final String expectedString = cli.getFormattedChatMessage(m);
    +      assertOutput(OutputLevel.CHAT, expectedString);
    +    }
       }
     
       @Test
    @@ -203,7 +224,6 @@ void displayChatMessage_should_display_broadcast_message() throws NullPlayerName
         Player p = new Player();
         p.setPlayerID(UUID.nameUUIDFromBytes(playerName.getBytes()));
         p.setPlayerName(playerName);
    -    
         ChatMessage m = new ChatMessage(p, textMessage);
         cli.displayChatMessage(m);
     
    diff --git a/src/test/java/it/polimi/is23am10/server/ServerTest.java b/src/test/java/it/polimi/is23am10/server/ServerTest.java
    index ca5dc982..327b2e10 100644
    --- a/src/test/java/it/polimi/is23am10/server/ServerTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/ServerTest.java
    @@ -8,10 +8,8 @@
     import static org.mockito.Mockito.verify;
     import static org.mockito.Mockito.when;
     
    -import it.polimi.is23am10.server.Server;
     import it.polimi.is23am10.server.Server.ServerStatus;
     import it.polimi.is23am10.server.controller.interfaces.IServerControllerAction;
    -import it.polimi.is23am10.utils.config.AppConfig;
     import it.polimi.is23am10.utils.config.AppConfigContext;
     
     import java.io.IOException;
    diff --git a/src/test/java/it/polimi/is23am10/server/controller/ClientConnectionCheckerTest.java b/src/test/java/it/polimi/is23am10/server/controller/ClientConnectionCheckerTest.java
    index a8410e7b..aca3959d 100644
    --- a/src/test/java/it/polimi/is23am10/server/controller/ClientConnectionCheckerTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/controller/ClientConnectionCheckerTest.java
    @@ -3,11 +3,8 @@
     import it.polimi.is23am10.server.command.AbstractCommand;
     import it.polimi.is23am10.server.command.AddPlayerCommand;
     import it.polimi.is23am10.server.command.StartGameCommand;
    -import it.polimi.is23am10.server.model.factory.GameFactory;
    -import it.polimi.is23am10.server.model.game.Game;
     import it.polimi.is23am10.server.network.gamehandler.GameHandler;
     import it.polimi.is23am10.server.network.gamehandler.exceptions.GameSnapshotUpdateException;
    -import it.polimi.is23am10.server.network.messages.AbstractMessage;
     import it.polimi.is23am10.server.network.playerconnector.AbstractPlayerConnector;
     import it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket;
     import it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException;
    diff --git a/src/test/java/it/polimi/is23am10/server/controller/ServerControllerActionTest.java b/src/test/java/it/polimi/is23am10/server/controller/ServerControllerActionTest.java
    index 0c938c0b..49f7aeef 100644
    --- a/src/test/java/it/polimi/is23am10/server/controller/ServerControllerActionTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/controller/ServerControllerActionTest.java
    @@ -3,7 +3,6 @@
     import static org.junit.Assert.assertNotNull;
     import static org.junit.jupiter.api.Assertions.assertEquals;
     import static org.junit.jupiter.api.Assertions.assertFalse;
    -import static org.junit.jupiter.api.Assertions.assertThrows;
     import static org.junit.jupiter.api.Assertions.assertTrue;
     
     import it.polimi.is23am10.server.command.AbstractCommand;
    @@ -41,7 +40,6 @@
     import it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket;
     import it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException;
     import it.polimi.is23am10.server.network.playerconnector.exceptions.NullSocketConnectorException;
    -import it.polimi.is23am10.server.network.virtualview.VirtualView;
     import it.polimi.is23am10.utils.Coordinates;
     import it.polimi.is23am10.utils.ErrorTypeString;
     import it.polimi.is23am10.utils.exceptions.NullIndexValueException;
    @@ -49,7 +47,6 @@
     import java.io.IOException;
     import java.net.Socket;
     import java.util.HashMap;
    -import java.util.List;
     import java.util.Map;
     import java.util.Optional;
     import java.util.UUID;
    @@ -57,7 +54,6 @@
     import org.apache.logging.log4j.LogManager;
     import org.apache.logging.log4j.Logger;
     import org.junit.jupiter.api.BeforeEach;
    -import org.junit.jupiter.api.Disabled;
     import org.junit.jupiter.api.Test;
     import org.junit.runner.RunWith;
     import org.mockito.MockitoAnnotations;
    @@ -487,15 +483,11 @@ void GET_AVAILABLE_GAMES_RMI_should_return_gameList()
           InvalidNumOfPlayersException, NullNumOfPlayersException, NullAssignedPatternException, FullGameException,
           NotValidScoreBlockValueException, PlayerNotFoundException, NullGameHandlerInstance, InterruptedException {
     
    -    Socket mockSocket = new Socket();
    -    AbstractPlayerConnector playerConnector = new PlayerConnectorSocket(mockSocket, new LinkedBlockingQueue<>());
     
         GameHandler h1 = new GameHandler("bob", 2);
         GameHandler h2 = new GameHandler("frank zappa", 3);
         GameHandler h3 = new GameHandler("nicoletta", 4);
     
    -    List<VirtualView> availableGames = List.of(new VirtualView(h1.getGame()), new VirtualView(h2.getGame()),
    -        new VirtualView(h3.getGame()));
     
         ServerControllerState.addGameHandler(h1);
         ServerControllerState.addGameHandler(h2);
    @@ -527,9 +519,6 @@ void GET_AVAILABLE_GAMES_should_skip_full_games()
         // Adding one more player makes the game full, therefore unavailable
         h1.getGame().addPlayer("giovanni");
     
    -    List<VirtualView> availableGames = List.of(new VirtualView(h2.getGame()),
    -        new VirtualView(h3.getGame()));
    -
         ServerControllerState.addGameHandler(h1);
         ServerControllerState.addGameHandler(h2);
         ServerControllerState.addGameHandler(h3);
    @@ -600,9 +589,6 @@ void MOVE_TILES_should_Throw_BoardGridColIndexOutOfBoundsException() throws Null
     
         Map<Coordinates, Coordinates> moves = new HashMap<>();
         moves.put(new Coordinates(1, 15), new Coordinates(5, 0));
    -    AbstractCommand move = new MoveTilesCommand(
    -      handler.getGame().getActivePlayer().getPlayerName().equals("Steve") ? "Steve" : "Max",
    -      handler.getGame().getGameId(), moves);
         assertFalse(handler.getGame().getGameBoard().getTileAt(1, 3).isEmpty());
         playerConnector.getPlayer().setPlayerName(handler.getGame().getActivePlayer().getPlayerName().equals("Steve") ? "Steve" : "Max");
         playerConnector.getPlayer().setPlayerID(UUID.nameUUIDFromBytes(handler.getGame().getActivePlayer().getPlayerName().equals("Steve") ? "Steve".getBytes() : "Max".getBytes()));
    @@ -628,7 +614,6 @@ void SNOOZE_TIMER_CONSUMER_should_SNOOZE_TIMER()
       }
     
       @Test
    -  @Disabled
       void SNOOZE_TIMER_CONSUMER_should_NOT_SNOOZE_UNKNOWN_PLAYER_TIMER()
           throws NullSocketConnectorException, NullBlockingQueueException, InterruptedException {
         Socket socket = new Socket();
    @@ -636,13 +621,13 @@ void SNOOZE_TIMER_CONSUMER_should_NOT_SNOOZE_UNKNOWN_PLAYER_TIMER()
         AbstractCommand cmd = new StartGameCommand("Steve", 2);
         AbstractCommand snoozecmd = new SnoozeGameTimerCommand("Stevee");
     
    -    long snooze1 = playerConnector.getLastSnoozeMs();
         serverControllerAction.startConsumer.accept(logger, playerConnector, cmd);
    +    long snooze1 = playerConnector.getLastSnoozeMs();
     
         Thread.sleep(1000);
     
         serverControllerAction.snoozeTimerConsumer.accept(logger, playerConnector, snoozecmd);
         long snooze2 = playerConnector.getLastSnoozeMs();
    -    assertTrue(snooze2 == snooze1);
    +    assertEquals(snooze2 , snooze1);
       }
     }
    diff --git a/src/test/java/it/polimi/is23am10/server/controller/ServerControllerSocketTest.java b/src/test/java/it/polimi/is23am10/server/controller/ServerControllerSocketTest.java
    index d1230401..0ef353d1 100644
    --- a/src/test/java/it/polimi/is23am10/server/controller/ServerControllerSocketTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/controller/ServerControllerSocketTest.java
    @@ -56,12 +56,10 @@
     import java.io.IOException;
     import java.net.Socket;
     import java.util.HashMap;
    -import java.util.Optional;
     import java.util.Set;
     import java.util.UUID;
     import java.util.concurrent.LinkedBlockingQueue;
     
    -import org.junit.jupiter.api.AfterAll;
     import org.junit.jupiter.api.BeforeEach;
     import org.junit.jupiter.api.Test;
     import org.junit.jupiter.api.TestInstance;
    diff --git a/src/test/java/it/polimi/is23am10/server/controller/ServerControllerStateTest.java b/src/test/java/it/polimi/is23am10/server/controller/ServerControllerStateTest.java
    index f33e6199..0d565252 100644
    --- a/src/test/java/it/polimi/is23am10/server/controller/ServerControllerStateTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/controller/ServerControllerStateTest.java
    @@ -28,7 +28,6 @@
     import it.polimi.is23am10.server.network.gamehandler.GameHandler;
     import it.polimi.is23am10.server.network.gamehandler.exceptions.NullPlayerConnector;
     import it.polimi.is23am10.server.network.playerconnector.PlayerConnectorSocket;
    -import it.polimi.is23am10.server.network.playerconnector.PlayerConnectorRmi;
     import it.polimi.is23am10.server.network.playerconnector.exceptions.NullBlockingQueueException;
     import it.polimi.is23am10.server.network.playerconnector.exceptions.NullSocketConnectorException;
     
    diff --git a/src/test/java/it/polimi/is23am10/server/model/factory/GameFactoryTest.java b/src/test/java/it/polimi/is23am10/server/model/factory/GameFactoryTest.java
    index 05135a3b..2e703e75 100644
    --- a/src/test/java/it/polimi/is23am10/server/model/factory/GameFactoryTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/model/factory/GameFactoryTest.java
    @@ -11,7 +11,6 @@
     import org.junit.jupiter.api.BeforeEach;
     import org.junit.jupiter.api.Test;
     
    -import it.polimi.is23am10.server.model.factory.GameFactory;
     import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
     import it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException;
     import it.polimi.is23am10.server.model.game.Game;
    diff --git a/src/test/java/it/polimi/is23am10/server/model/factory/PlayerFactoryTest.java b/src/test/java/it/polimi/is23am10/server/model/factory/PlayerFactoryTest.java
    index 81561e20..cd61b218 100644
    --- a/src/test/java/it/polimi/is23am10/server/model/factory/PlayerFactoryTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/model/factory/PlayerFactoryTest.java
    @@ -5,11 +5,9 @@
     import static org.junit.Assert.assertTrue;
     import static org.junit.jupiter.api.Assertions.assertNotNull;
     
    -import java.util.ArrayList;
     import java.util.UUID;
     import org.junit.jupiter.api.Test;
     
    -import it.polimi.is23am10.server.model.factory.PlayerFactory;
     import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
     import it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException;
     import it.polimi.is23am10.server.model.game.Game;
    diff --git a/src/test/java/it/polimi/is23am10/server/model/factory/SharedPatternFactoryTest.java b/src/test/java/it/polimi/is23am10/server/model/factory/SharedPatternFactoryTest.java
    index c7081661..19ddc220 100644
    --- a/src/test/java/it/polimi/is23am10/server/model/factory/SharedPatternFactoryTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/model/factory/SharedPatternFactoryTest.java
    @@ -9,8 +9,6 @@
     import java.util.stream.Collectors;
     import org.junit.jupiter.api.Test;
     
    -import it.polimi.is23am10.server.model.factory.GameFactory;
    -import it.polimi.is23am10.server.model.factory.SharedPatternFactory;
     import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
     import it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException;
     import it.polimi.is23am10.server.model.game.Game;
    diff --git a/src/test/java/it/polimi/is23am10/server/model/game/GameTest.java b/src/test/java/it/polimi/is23am10/server/model/game/GameTest.java
    index ca6248c7..06d5c108 100644
    --- a/src/test/java/it/polimi/is23am10/server/model/game/GameTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/model/game/GameTest.java
    @@ -12,7 +12,6 @@
     import it.polimi.is23am10.server.model.factory.PlayerFactory;
     import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
     import it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException;
    -import it.polimi.is23am10.server.model.game.Game;
     import it.polimi.is23am10.server.model.game.Game.GameStatus;
     import it.polimi.is23am10.server.model.game.exceptions.FullGameException;
     import it.polimi.is23am10.server.model.game.exceptions.InvalidBoardTileSelectionException;
    diff --git a/src/test/java/it/polimi/is23am10/server/model/items/board/BoardTest.java b/src/test/java/it/polimi/is23am10/server/model/items/board/BoardTest.java
    index 2d10107b..a310f7e7 100644
    --- a/src/test/java/it/polimi/is23am10/server/model/items/board/BoardTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/model/items/board/BoardTest.java
    @@ -7,7 +7,6 @@
     import static org.junit.Assert.assertThrows;
     import static org.junit.Assert.assertTrue;
     
    -import it.polimi.is23am10.server.model.items.board.Board;
     import it.polimi.is23am10.server.model.items.board.exceptions.BoardGridColIndexOutOfBoundsException;
     import it.polimi.is23am10.server.model.items.board.exceptions.BoardGridRowIndexOutOfBoundsException;
     import it.polimi.is23am10.server.model.items.board.exceptions.InvalidNumOfPlayersException;
    diff --git a/src/test/java/it/polimi/is23am10/server/model/items/bookshelf/BookshelfTest.java b/src/test/java/it/polimi/is23am10/server/model/items/bookshelf/BookshelfTest.java
    index 52b5fb8e..139c5e0e 100644
    --- a/src/test/java/it/polimi/is23am10/server/model/items/bookshelf/BookshelfTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/model/items/bookshelf/BookshelfTest.java
    @@ -7,7 +7,6 @@
     import static org.junit.jupiter.api.Assertions.assertEquals;
     import static org.junit.jupiter.api.Assertions.assertNotEquals;
     
    -import it.polimi.is23am10.server.model.items.bookshelf.Bookshelf;
     import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridColIndexOutOfBoundsException;
     import it.polimi.is23am10.server.model.items.bookshelf.exceptions.BookshelfGridRowIndexOutOfBoundsException;
     import it.polimi.is23am10.server.model.items.bookshelf.exceptions.NullTileException;
    diff --git a/src/test/java/it/polimi/is23am10/server/model/items/tile/TileTest.java b/src/test/java/it/polimi/is23am10/server/model/items/tile/TileTest.java
    index 8a82fc33..7d9df56a 100644
    --- a/src/test/java/it/polimi/is23am10/server/model/items/tile/TileTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/model/items/tile/TileTest.java
    @@ -6,7 +6,6 @@
     
     import org.junit.jupiter.api.Test;
     
    -import it.polimi.is23am10.server.model.items.tile.Tile;
     import it.polimi.is23am10.server.model.items.tile.Tile.TileType;
     
     @SuppressWarnings({ "checkstyle:methodname", "checkstyle:abbreviationaswordinnamecheck", "checkstyle:linelengthcheck",
    diff --git a/src/test/java/it/polimi/is23am10/server/model/player/PlayerTest.java b/src/test/java/it/polimi/is23am10/server/model/player/PlayerTest.java
    index 6cd8be88..46509638 100644
    --- a/src/test/java/it/polimi/is23am10/server/model/player/PlayerTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/model/player/PlayerTest.java
    @@ -25,7 +25,6 @@
     import it.polimi.is23am10.server.model.items.scoreblock.ScoreBlock;
     import it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException;
     import it.polimi.is23am10.server.model.pattern.PrivatePattern;
    -import it.polimi.is23am10.server.model.player.Player;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException;
    diff --git a/src/test/java/it/polimi/is23am10/server/network/messages/AvailableGamesMessageTest.java b/src/test/java/it/polimi/is23am10/server/network/messages/AvailableGamesMessageTest.java
    index 7e1e647f..33381f02 100644
    --- a/src/test/java/it/polimi/is23am10/server/network/messages/AvailableGamesMessageTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/network/messages/AvailableGamesMessageTest.java
    @@ -1,12 +1,10 @@
     package it.polimi.is23am10.server.network.messages;
     
    -import static org.junit.Assert.assertTrue;
     import static org.junit.jupiter.api.Assertions.assertEquals;
     import static org.junit.jupiter.api.Assertions.assertNotNull;
     
     import java.util.List;
     
    -import org.junit.jupiter.api.Disabled;
     import org.junit.jupiter.api.Test;
     
     import it.polimi.is23am10.server.model.factory.GameFactory;
    diff --git a/src/test/java/it/polimi/is23am10/server/network/messages/ChatMessageTest.java b/src/test/java/it/polimi/is23am10/server/network/messages/ChatMessageTest.java
    index 0dc756cf..434be06f 100644
    --- a/src/test/java/it/polimi/is23am10/server/network/messages/ChatMessageTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/network/messages/ChatMessageTest.java
    @@ -19,7 +19,6 @@
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
    -import it.polimi.is23am10.server.network.messages.ChatMessage;
     import it.polimi.is23am10.server.network.messages.AbstractMessage.MessageType;
     
     /**
    diff --git a/src/test/java/it/polimi/is23am10/server/network/messages/GameMessageTest.java b/src/test/java/it/polimi/is23am10/server/network/messages/GameMessageTest.java
    index 3105fe2c..b59fea9e 100644
    --- a/src/test/java/it/polimi/is23am10/server/network/messages/GameMessageTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/network/messages/GameMessageTest.java
    @@ -18,14 +18,12 @@
     import it.polimi.is23am10.server.model.items.board.exceptions.NullNumOfPlayersException;
     import it.polimi.is23am10.server.model.items.card.exceptions.AlreadyInitiatedPatternException;
     import it.polimi.is23am10.server.model.items.scoreblock.exceptions.NotValidScoreBlockValueException;
    -import it.polimi.is23am10.server.model.player.Player;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerBookshelfException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerIdException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerNameException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
    -import it.polimi.is23am10.server.network.messages.GameMessage;
     import it.polimi.is23am10.server.network.messages.AbstractMessage.MessageType;
     import it.polimi.is23am10.server.network.virtualview.VirtualView;
     
    @@ -43,7 +41,6 @@ public void constructor_should_create_GameMessage()
         final Game game = GameFactory.getNewGame("sender", 4);
         game.assignPlayers();
         final VirtualView virtualView = new VirtualView(game);
    -    final Player sp = game.getPlayerByName("sender");
         final GameMessage gm = new GameMessage(virtualView);
         final String chatMessage = gm.gson.toJson(virtualView);
     
    diff --git a/src/test/java/it/polimi/is23am10/server/network/virtualview/VirtualPlayerTest.java b/src/test/java/it/polimi/is23am10/server/network/virtualview/VirtualPlayerTest.java
    index c366457f..32ada150 100644
    --- a/src/test/java/it/polimi/is23am10/server/network/virtualview/VirtualPlayerTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/network/virtualview/VirtualPlayerTest.java
    @@ -17,7 +17,6 @@
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
    -import it.polimi.is23am10.server.network.virtualview.VirtualPlayer;
     
     /**
      * Tests for virtual player class
    diff --git a/src/test/java/it/polimi/is23am10/server/network/virtualview/VirtualViewTest.java b/src/test/java/it/polimi/is23am10/server/network/virtualview/VirtualViewTest.java
    index f1753af9..15f32ed9 100644
    --- a/src/test/java/it/polimi/is23am10/server/network/virtualview/VirtualViewTest.java
    +++ b/src/test/java/it/polimi/is23am10/server/network/virtualview/VirtualViewTest.java
    @@ -11,7 +11,6 @@
     import it.polimi.is23am10.server.model.factory.exceptions.DuplicatePlayerNameException;
     import it.polimi.is23am10.server.model.factory.exceptions.NullPlayerNamesException;
     import it.polimi.is23am10.server.model.game.Game;
    -import it.polimi.is23am10.server.model.game.Game.GameStatus;
     import it.polimi.is23am10.server.model.game.exceptions.FullGameException;
     import it.polimi.is23am10.server.model.game.exceptions.InvalidMaxPlayerException;
     import it.polimi.is23am10.server.model.game.exceptions.NullAssignedPatternException;
    @@ -27,8 +26,6 @@
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerPrivateCardException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreBlocksException;
     import it.polimi.is23am10.server.model.player.exceptions.NullPlayerScoreException;
    -import it.polimi.is23am10.server.network.virtualview.VirtualPlayer;
    -import it.polimi.is23am10.server.network.virtualview.VirtualView;
     
     /**
      * Tests for virtual view class.