mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
Refactoring Settings.cs
This commit is contained in:
parent
f16b1c118b
commit
16c1d1fd77
59 changed files with 3425 additions and 2180 deletions
|
|
@ -1,5 +1,6 @@
|
|||
using System;
|
||||
using System.Text;
|
||||
using Tomlet.Attributes;
|
||||
|
||||
namespace MinecraftClient.ChatBots
|
||||
{
|
||||
|
|
@ -8,11 +9,59 @@ namespace MinecraftClient.ChatBots
|
|||
/// </summary>
|
||||
public class AutoRelog : ChatBot
|
||||
{
|
||||
public static Configs Config = new();
|
||||
|
||||
[TomlDoNotInlineObject]
|
||||
public class Configs
|
||||
{
|
||||
[NonSerialized]
|
||||
private const string BotName = "AutoRelog";
|
||||
|
||||
public bool Enabled = false;
|
||||
|
||||
[TomlInlineComment("$config.ChatBot.AutoRelog.Delay$")]
|
||||
public Range Delay = new(10);
|
||||
|
||||
[TomlInlineComment("$config.ChatBot.AutoRelog.Retries$")]
|
||||
public int Retries = 3;
|
||||
|
||||
[TomlInlineComment("$config.ChatBot.AutoRelog.Ignore_Kick_Message$")]
|
||||
public bool Ignore_Kick_Message = false;
|
||||
|
||||
[TomlInlineComment("$config.ChatBot.AutoRelog.Kick_Messages_File$")]
|
||||
public string Kick_Messages_File = @"kickmessages.txt";
|
||||
|
||||
public void OnSettingUpdate()
|
||||
{
|
||||
if (Delay.min > Delay.max)
|
||||
(Delay.min, Delay.max) = (Delay.max, Delay.min);
|
||||
|
||||
if (Retries == -1)
|
||||
Retries = int.MaxValue;
|
||||
}
|
||||
|
||||
public struct Range
|
||||
{
|
||||
public int min, max;
|
||||
|
||||
public Range(int value)
|
||||
{
|
||||
value = Math.Max(value, 1);
|
||||
min = max = value;
|
||||
}
|
||||
|
||||
public Range(int min, int max)
|
||||
{
|
||||
min = Math.Max(min, 1);
|
||||
max = Math.Max(max, 1);
|
||||
this.min = min;
|
||||
this.max = max;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static readonly Random random = new();
|
||||
private string[] dictionary = Array.Empty<string>();
|
||||
private readonly int attempts;
|
||||
private readonly int delayMin;
|
||||
private readonly int delayMax;
|
||||
|
||||
/// <summary>
|
||||
/// This bot automatically re-join the server if kick message contains predefined string
|
||||
|
|
@ -20,34 +69,25 @@ namespace MinecraftClient.ChatBots
|
|||
/// <param name="DelayBeforeRelogMin">Minimum delay before re-joining the server (in seconds)</param>
|
||||
/// <param name="DelayBeforeRelogMax">Maximum delay before re-joining the server (in seconds)</param>
|
||||
/// <param name="retries">Number of retries if connection fails (-1 = infinite)</param>
|
||||
public AutoRelog(int DelayBeforeRelogMin, int DelayBeforeRelogMax, int retries)
|
||||
public AutoRelog()
|
||||
{
|
||||
attempts = retries;
|
||||
if (attempts == -1) { attempts = int.MaxValue; }
|
||||
McClient.ReconnectionAttemptsLeft = attempts;
|
||||
delayMin = DelayBeforeRelogMin;
|
||||
delayMax = DelayBeforeRelogMax;
|
||||
if (delayMin < 1)
|
||||
delayMin = 1;
|
||||
if (delayMax < delayMin)
|
||||
delayMax = delayMin;
|
||||
LogDebugToConsoleTranslated("bot.autoRelog.launch", attempts);
|
||||
LogDebugToConsoleTranslated("bot.autoRelog.launch", Config.Retries);
|
||||
}
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
McClient.ReconnectionAttemptsLeft = attempts;
|
||||
if (Settings.AutoRelog_IgnoreKickMessage)
|
||||
McClient.ReconnectionAttemptsLeft = Config.Retries;
|
||||
if (Config.Ignore_Kick_Message)
|
||||
{
|
||||
LogDebugToConsoleTranslated("bot.autoRelog.no_kick_msg");
|
||||
}
|
||||
else
|
||||
{
|
||||
if (System.IO.File.Exists(Settings.AutoRelog_KickMessagesFile))
|
||||
if (System.IO.File.Exists(Config.Kick_Messages_File))
|
||||
{
|
||||
LogDebugToConsoleTranslated("bot.autoRelog.loading", System.IO.Path.GetFullPath(Settings.AutoRelog_KickMessagesFile));
|
||||
LogDebugToConsoleTranslated("bot.autoRelog.loading", System.IO.Path.GetFullPath(Config.Kick_Messages_File));
|
||||
|
||||
dictionary = System.IO.File.ReadAllLines(Settings.AutoRelog_KickMessagesFile, Encoding.UTF8);
|
||||
dictionary = System.IO.File.ReadAllLines(Config.Kick_Messages_File, Encoding.UTF8);
|
||||
|
||||
for (int i = 0; i < dictionary.Length; i++)
|
||||
{
|
||||
|
|
@ -57,7 +97,7 @@ namespace MinecraftClient.ChatBots
|
|||
}
|
||||
else
|
||||
{
|
||||
LogToConsoleTranslated("bot.autoRelog.not_found", System.IO.Path.GetFullPath(Settings.AutoRelog_KickMessagesFile));
|
||||
LogToConsoleTranslated("bot.autoRelog.not_found", System.IO.Path.GetFullPath(Config.Kick_Messages_File));
|
||||
|
||||
LogDebugToConsoleTranslated("bot.autoRelog.curr_dir", System.IO.Directory.GetCurrentDirectory());
|
||||
}
|
||||
|
|
@ -77,7 +117,7 @@ namespace MinecraftClient.ChatBots
|
|||
|
||||
LogDebugToConsoleTranslated("bot.autoRelog.disconnect_msg", message);
|
||||
|
||||
if (Settings.AutoRelog_IgnoreKickMessage)
|
||||
if (Config.Ignore_Kick_Message)
|
||||
{
|
||||
LaunchDelayedReconnection(null);
|
||||
return true;
|
||||
|
|
@ -100,7 +140,7 @@ namespace MinecraftClient.ChatBots
|
|||
|
||||
private void LaunchDelayedReconnection(string? msg)
|
||||
{
|
||||
int delay = random.Next(delayMin, delayMax);
|
||||
int delay = random.Next(Config.Delay.min, Config.Delay.max);
|
||||
LogDebugToConsoleTranslated(String.IsNullOrEmpty(msg) ? "bot.autoRelog.reconnect_always" : "bot.autoRelog.reconnect", msg);
|
||||
LogToConsoleTranslated("bot.autoRelog.wait", delay);
|
||||
System.Threading.Thread.Sleep(delay * 1000);
|
||||
|
|
@ -109,9 +149,9 @@ namespace MinecraftClient.ChatBots
|
|||
|
||||
public static bool OnDisconnectStatic(DisconnectReason reason, string message)
|
||||
{
|
||||
if (Settings.AutoRelog_Enabled)
|
||||
if (Config.Enabled)
|
||||
{
|
||||
AutoRelog bot = new(Settings.AutoRelog_Delay_Min, Settings.AutoRelog_Delay_Max, Settings.AutoRelog_Retries);
|
||||
AutoRelog bot = new();
|
||||
bot.Initialize();
|
||||
return bot.OnDisconnect(reason, message);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue