diff --git a/osu.Game/Online/Multiplayer/IMultiplayerLoungeServer.cs b/osu.Game/Online/Multiplayer/IMultiplayerLoungeServer.cs
index a04ec53578..0a618c8f5c 100644
--- a/osu.Game/Online/Multiplayer/IMultiplayerLoungeServer.cs
+++ b/osu.Game/Online/Multiplayer/IMultiplayerLoungeServer.cs
@@ -25,6 +25,6 @@ namespace osu.Game.Online.Multiplayer
/// The password for the join request.
/// If the user is already in the requested (or another) room.
/// If the room provided password was incorrect.
- Task JoinRoom(long roomId, string password);
+ Task JoinRoomWithPassword(long roomId, string password);
}
}
diff --git a/osu.Game/Online/Multiplayer/MultiplayerClient.cs b/osu.Game/Online/Multiplayer/MultiplayerClient.cs
index a9f4dc9e2f..543b3cd752 100644
--- a/osu.Game/Online/Multiplayer/MultiplayerClient.cs
+++ b/osu.Game/Online/Multiplayer/MultiplayerClient.cs
@@ -152,8 +152,9 @@ namespace osu.Game.Online.Multiplayer
/// Joins the with a given ID.
///
/// The room ID.
+ /// An optional password to use when joining the room.
/// The joined .
- protected abstract Task JoinRoom(long roomId);
+ protected abstract Task JoinRoom(long roomId, string? password = null);
public Task LeaveRoom()
{
diff --git a/osu.Game/Online/Multiplayer/OnlineMultiplayerClient.cs b/osu.Game/Online/Multiplayer/OnlineMultiplayerClient.cs
index cf1e18e059..726e26ebe1 100644
--- a/osu.Game/Online/Multiplayer/OnlineMultiplayerClient.cs
+++ b/osu.Game/Online/Multiplayer/OnlineMultiplayerClient.cs
@@ -62,12 +62,12 @@ namespace osu.Game.Online.Multiplayer
}
}
- protected override Task JoinRoom(long roomId)
+ protected override Task JoinRoom(long roomId, string? password = null)
{
if (!IsConnected.Value)
return Task.FromCanceled(new CancellationToken(true));
- return connection.InvokeAsync(nameof(IMultiplayerServer.JoinRoom), roomId);
+ return connection.InvokeAsync(nameof(IMultiplayerServer.JoinRoomWithPassword), roomId, password ?? string.Empty);
}
protected override Task LeaveRoomInternal()
diff --git a/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs b/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs
index b0c8d6d19b..adc632a2b1 100644
--- a/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs
+++ b/osu.Game/Tests/Visual/Multiplayer/TestMultiplayerClient.cs
@@ -115,7 +115,7 @@ namespace osu.Game.Tests.Visual.Multiplayer
((IMultiplayerClient)this).UserBeatmapAvailabilityChanged(userId, newBeatmapAvailability);
}
- protected override Task JoinRoom(long roomId)
+ protected override Task JoinRoom(long roomId, string? password = null)
{
var apiRoom = roomManager.Rooms.Single(r => r.RoomID.Value == roomId);
@@ -134,7 +134,8 @@ namespace osu.Game.Tests.Visual.Multiplayer
BeatmapChecksum = apiRoom.Playlist.Last().Beatmap.Value.MD5Hash,
RequiredMods = apiRoom.Playlist.Last().RequiredMods.Select(m => new APIMod(m)).ToArray(),
AllowedMods = apiRoom.Playlist.Last().AllowedMods.Select(m => new APIMod(m)).ToArray(),
- PlaylistItemId = apiRoom.Playlist.Last().ID
+ PlaylistItemId = apiRoom.Playlist.Last().ID,
+ Password = password ?? string.Empty,
},
Users = { localUser },
Host = localUser