From 88a0c58081f47c858b6514aa982926defdfb5307 Mon Sep 17 00:00:00 2001 From: qwqtoday Date: Sun, 9 Jun 2024 12:37:21 +0800 Subject: [PATCH 1/2] Add disconnect exception --- .../Exceptions/DisconnectedException.cs | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 Components/MineSharp.Protocol/Exceptions/DisconnectedException.cs diff --git a/Components/MineSharp.Protocol/Exceptions/DisconnectedException.cs b/Components/MineSharp.Protocol/Exceptions/DisconnectedException.cs new file mode 100644 index 00000000..13460b61 --- /dev/null +++ b/Components/MineSharp.Protocol/Exceptions/DisconnectedException.cs @@ -0,0 +1,10 @@ +namespace MineSharp.Protocol.Exceptions; + +/// +public class DisconnectedException(string message, string reason) : MineSharpHostException(message) +{ + /// + /// The reason of the disconnect + /// + public string Reason { get; private set; } = reason; +} From 527c94a02220beb20b37a0c50d6cf6df3e416a6d Mon Sep 17 00:00:00 2001 From: qwqtoday Date: Sun, 9 Jun 2024 12:38:29 +0800 Subject: [PATCH 2/2] set disconnect exception to _gameJoinedTsc when the bot is disconnected if it is not completed --- Components/MineSharp.Protocol/MinecraftClient.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/Components/MineSharp.Protocol/MinecraftClient.cs b/Components/MineSharp.Protocol/MinecraftClient.cs index 16bad91d..edb21c6b 100644 --- a/Components/MineSharp.Protocol/MinecraftClient.cs +++ b/Components/MineSharp.Protocol/MinecraftClient.cs @@ -202,6 +202,10 @@ public Task SendPacket(IPacket packet, CancellationToken? cancellation = null) public async Task Disconnect(string reason = "disconnect.quitting") { Logger.Info($"Disconnecting: {reason}"); + + if (!_gameJoinedTsc.Task.IsCompleted) + _gameJoinedTsc.SetException(new DisconnectedException($"Client has been disconnected", reason)); + if (this._client is null) throw new InvalidOperationException("MinecraftClient is not connected.");