@Override
    public void addPlayer(Player player) {
        debug("Attempting to add player " + player.getName());
        if (getPlayers().size() >= getMaxPlayers()) {
            player.sendMessage(prefix + "This game is full");
            debug("Game is full, player denied");
            return;
        }
        player.setSaturation(10f);
        player.setFireTicks(0);
        player.setFlying(false);
        player.setFoodLevel(20);
        getPlayers().add(player.getName());
        if (lastKeepKits) {
            pd.put(player.getName(), new PlayerData(player, lastKits.get(player.getName())));
        } else {
            pd.put(player.getName(), new PlayerData(player, getKit(player.getName())));
        }
        if (b.getPlayers().size() > r.getPlayers().size()) {
            r.getPlayers().add(player.getName());
            resetPlayerInventory(player, pd.get(player.getName()).getKit());
            player.teleport(this.getTeamSpawns().get(1));
            if (!reset) {
                sendGameMessage(player.getDisplayName() + ChatColor.GOLD + " has joined the " + r.getName() + ChatColor.GOLD + "!");
            }
        } else {
            b.getPlayers().add(player.getName());
            resetPlayerInventory(player, pd.get(player.getName()).getKit());
            player.teleport(this.getTeamSpawns().get(0));
            if (!reset) {
                sendGameMessage(player.getDisplayName() + ChatColor.GOLD + " has joined the " + b.getName() + ChatColor.GOLD + "!");
            }
        }
        debug(player.getName() + " has been successfully added to the game");
    }