Skip to content

Commit

Permalink
Merge pull request MCCTeam#2700 from breadbyte/master
Browse files Browse the repository at this point in the history
  • Loading branch information
breadbyte authored Mar 12, 2024
2 parents ac9a70c + a72a8cf commit 60ba4bd
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 21 deletions.
7 changes: 4 additions & 3 deletions MinecraftClient/ChatBots/AutoRelog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,9 +137,10 @@ private void LaunchDelayedReconnection(string? msg)
{
double delay = random.NextDouble() * (Config.Delay.max - Config.Delay.min) + Config.Delay.min;
LogDebugToConsole(string.Format(string.IsNullOrEmpty(msg) ? Translations.bot_autoRelog_reconnect_always : Translations.bot_autoRelog_reconnect, msg));
LogToConsole(string.Format(Translations.bot_autoRelog_wait, delay));
System.Threading.Thread.Sleep((int)Math.Floor(delay * 1000));
ReconnectToTheServer();

// TODO: Change this translation string to add the retries left text
LogToConsole(string.Format(Translations.bot_autoRelog_wait, delay) + $" ({Config.Retries - Configs._BotRecoAttempts} retries left)");
ReconnectToTheServer(Config.Retries - Configs._BotRecoAttempts, (int)Math.Floor(delay), true);
}

public static bool OnDisconnectStatic(DisconnectReason reason, string message)
Expand Down
51 changes: 36 additions & 15 deletions MinecraftClient/McClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ public enum MovementType { Sneak, Walk, Sprint }

private static IMinecraftComHandler? instance;
public static IMinecraftComHandler? Instance => instance;

/// <summary>
/// Starts the main chat client, wich will login to the server using the MinecraftCom class.
/// </summary>
Expand Down Expand Up @@ -245,28 +246,48 @@ public McClient(SessionToken session, PlayerKeyPair? playerKeyPair, string serve

return;

Retry:
Retry:
if (timeoutdetector != null)
{
timeoutdetector.Item2.Cancel();
timeoutdetector = null;
}
if (ReconnectionAttemptsLeft > 0)

if (!Config.ChatBot.AutoRelog.Enabled)
{
Log.Info(string.Format(Translations.mcc_reconnect, ReconnectionAttemptsLeft));
Thread.Sleep(5000);
ReconnectionAttemptsLeft--;
Program.Restart();
}
else if (InternalConfig.InteractiveMode)
if (ReconnectionAttemptsLeft > 0)
{
Log.Info(string.Format(Translations.mcc_reconnect, ReconnectionAttemptsLeft));
Thread.Sleep(5000);
ReconnectionAttemptsLeft--;
Program.Restart();
}
else if (InternalConfig.InteractiveMode)
{
ConsoleInteractive.ConsoleReader.StopReadThread();
ConsoleInteractive.ConsoleReader.MessageReceived -= ConsoleReaderOnMessageReceived;
ConsoleInteractive.ConsoleReader.OnInputChange -= ConsoleIO.AutocompleteHandler;
Program.HandleFailure();
}

throw new Exception("Initialization failed.");
}
else
{
ConsoleInteractive.ConsoleReader.StopReadThread();
ConsoleInteractive.ConsoleReader.MessageReceived -= ConsoleReaderOnMessageReceived;
ConsoleInteractive.ConsoleReader.OnInputChange -= ConsoleIO.AutocompleteHandler;
Program.HandleFailure();
}
// The AutoRelog ChatBot will handle reconnection at this point.
// This is important, or else we'll have multiple instances of the client running at the same time.

throw new Exception("Initialization failed.");
if (ReconnectionAttemptsLeft == 0)
{
if (InternalConfig.InteractiveMode)
{
ConsoleInteractive.ConsoleReader.StopReadThread();
ConsoleInteractive.ConsoleReader.MessageReceived -= ConsoleReaderOnMessageReceived;
ConsoleInteractive.ConsoleReader.OnInputChange -= ConsoleIO.AutocompleteHandler;
Program.HandleFailure();
}
}
}
}

/// <summary>
Expand Down Expand Up @@ -572,7 +593,7 @@ public void OnConnectionLost(ChatBot.DisconnectReason reason, string message)
ConsoleInteractive.ConsoleReader.StopReadThread();
ConsoleInteractive.ConsoleReader.MessageReceived -= ConsoleReaderOnMessageReceived;
ConsoleInteractive.ConsoleReader.OnInputChange -= ConsoleIO.AutocompleteHandler;
Program.HandleFailure();
Program.HandleFailure(message, false, reason);
}
}

Expand Down
11 changes: 8 additions & 3 deletions MinecraftClient/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -398,15 +398,20 @@ private static void RequestPassword()
/// </summary>
private static void InitializeClient()
{
InternalConfig.MinecraftVersion = Config.Main.Advanced.MinecraftVersion;
// Ensure that we use the provided Minecraft version if we can't connect automatically.
//
// useMcVersionOnce is set to true on HandleFailure()
// whenever we are unable to connect to the server and the user provides a version number.
if (!useMcVersionOnce)
InternalConfig.MinecraftVersion = Config.Main.Advanced.MinecraftVersion;

SessionToken session = new();
PlayerKeyPair? playerKeyPair = null;

ProtocolHandler.LoginResult result = ProtocolHandler.LoginResult.LoginRequired;

string loginLower = ToLowerIfNeed(InternalConfig.Account.Login);
if (InternalConfig.Account.Password == "-")
if (InternalConfig.Account.Password == "-" || InternalConfig.Account.Password == string.Empty)
{
ConsoleIO.WriteLineFormatted("§8" + Translations.mcc_offline, acceptnewlines: true);
result = ProtocolHandler.LoginResult.Success;
Expand Down Expand Up @@ -749,7 +754,7 @@ public static void HandleFailure(string? errorMessage = null, bool versionError
if (InternalConfig.MinecraftVersion != "")
{
useMcVersionOnce = true;
Restart();
Restart(0, true);
return;
}
}
Expand Down

0 comments on commit 60ba4bd

Please sign in to comment.