diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index f9c97a90..a900097b 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -7,11 +7,12 @@ on: env: PROJECT: "MinecraftClient" target-version: "net6.0" - compile-flags: "--no-self-contained -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=None" + compile-flags: "--self-contained=true -c Release -p:UseAppHost=true -p:IncludeNativeLibrariesForSelfExtract=true -p:DebugType=None" jobs: build: runs-on: ubuntu-latest + if: ${{ !contains(github.event.head_commit.message, 'README') }} steps: - name: Setup Project Path diff --git a/ConsoleInteractive b/ConsoleInteractive index 225b10ec..42074c44 160000 --- a/ConsoleInteractive +++ b/ConsoleInteractive @@ -1 +1 @@ -Subproject commit 225b10ec96af5c8f179a008cc442b502d23bc601 +Subproject commit 42074c449b8cf32e035f982bd83af6dcf75bc764 diff --git a/MinecraftClient/ChatBots/AutoRelog.cs b/MinecraftClient/ChatBots/AutoRelog.cs index ba16264a..a62dbd8a 100644 --- a/MinecraftClient/ChatBots/AutoRelog.cs +++ b/MinecraftClient/ChatBots/AutoRelog.cs @@ -129,10 +129,10 @@ namespace MinecraftClient.ChatBots private void LaunchDelayedReconnection(string? msg) { - int delay = random.Next(Settings.DoubleToTick(Config.Delay.min), Settings.DoubleToTick(Config.Delay.max)); - LogDebugToConsoleTranslated(String.IsNullOrEmpty(msg) ? "bot.autoRelog.reconnect_always" : "bot.autoRelog.reconnect", msg); + double delay = random.NextDouble() * (Config.Delay.max - Config.Delay.min) + Config.Delay.min; + LogDebugToConsoleTranslated(string.IsNullOrEmpty(msg) ? "bot.autoRelog.reconnect_always" : "bot.autoRelog.reconnect", msg); LogToConsoleTranslated("bot.autoRelog.wait", delay); - System.Threading.Thread.Sleep(delay * 1000); + System.Threading.Thread.Sleep((int)Math.Floor(delay * 1000)); ReconnectToTheServer(); } diff --git a/MinecraftClient/ChatBots/FollowPlayer.cs b/MinecraftClient/ChatBots/FollowPlayer.cs index 5d202ab1..d5616aab 100644 --- a/MinecraftClient/ChatBots/FollowPlayer.cs +++ b/MinecraftClient/ChatBots/FollowPlayer.cs @@ -18,7 +18,7 @@ namespace MinecraftClient.ChatBots public bool Enabled = false; [TomlInlineComment("$config.ChatBot.FollowPlayer.Update_Limit$")] - public double Update_Limit = 1; + public double Update_Limit = 1.5; [TomlInlineComment("$config.ChatBot.FollowPlayer.Stop_At_Distance$")] public double Stop_At_Distance = 3.0; diff --git a/MinecraftClient/ChatBots/Map.cs b/MinecraftClient/ChatBots/Map.cs index c589b6b6..2b994c16 100644 --- a/MinecraftClient/ChatBots/Map.cs +++ b/MinecraftClient/ChatBots/Map.cs @@ -1,11 +1,9 @@ using System; using System.Collections.Generic; -using System.Drawing; using System.Globalization; using System.IO; -using System.Runtime.Versioning; +using System.Text; using MinecraftClient.Mapping; -using MinecraftClient.Protocol.Handlers; using Tomlet.Attributes; namespace MinecraftClient.ChatBots @@ -22,11 +20,11 @@ namespace MinecraftClient.ChatBots public bool Enabled = false; - [TomlInlineComment("$config.ChatBot.Map.Should_Resize$")] - public bool Should_Resize = false; + [TomlInlineComment("$config.ChatBot.Map.Render_In_Console$")] + public bool Render_In_Console = true; - [TomlInlineComment("$config.ChatBot.Map.Resize_To$")] - public int Resize_To = 256; + [TomlInlineComment("$config.ChatBot.Map.Save_To_File$")] + public bool Save_To_File = false; [TomlInlineComment("$config.ChatBot.Map.Auto_Render_On_Update$")] public bool Auto_Render_On_Update = false; @@ -37,11 +35,7 @@ namespace MinecraftClient.ChatBots [TomlInlineComment("$config.ChatBot.Map.Notify_On_First_Update$")] public bool Notify_On_First_Update = true; - public void OnSettingUpdate() - { - if (Resize_To < 128) - Resize_To = 128; - } + public void OnSettingUpdate() { } } private readonly string baseDirectory = @"Rendered_Maps"; @@ -95,31 +89,26 @@ namespace MinecraftClient.ChatBots if (!cachedMaps.ContainsKey(mapId)) return Translations.TryGet("bot.map.cmd.not_found", mapId); - if (OperatingSystem.IsWindows()) + try { - try - { - McMap map = cachedMaps[mapId]; - GenerateMapImage(map); - } - catch (Exception e) - { - LogDebugToConsole(e.StackTrace!); - return Translations.TryGet("bot.map.failed_to_render", mapId); - } - } - else - { - LogToConsoleTranslated("bot.map.windows_only"); - } + McMap map = cachedMaps[mapId]; + if (Config.Save_To_File) + SaveToFile(map); - return ""; + if (Config.Render_In_Console) + RenderInConsole(map); + + return ""; + } + catch (Exception e) + { + LogDebugToConsole(e.StackTrace!); + return Translations.TryGet("bot.map.failed_to_render", mapId); + } } - return Translations.TryGet("bot.map.cmd.invalid_id"); } } - return ""; } @@ -138,8 +127,8 @@ namespace MinecraftClient.ChatBots TrackingPosition = trackingPosition, Locked = locked, MapIcons = icons, - Width = rowsUpdated, - Height = columnsUpdated, + Width = columnsUpdated, + Height = rowsUpdated, X = mapCoulmnX, Z = mapRowZ, Colors = colors, @@ -155,64 +144,132 @@ namespace MinecraftClient.ChatBots } else { - cachedMaps.Remove(mapid); - cachedMaps.Add(mapid, map); + McMap old_map = cachedMaps[mapid]; + lock (old_map) + { + for (int x = 0; x < map.Width; ++x) + for (int y = 0; y < map.Height; ++y) + old_map.Colors![(map.X + x) + (map.Z + y) * old_map.Width] = map.Colors![x + y * map.Width]; + } + map = old_map; } if (Config.Auto_Render_On_Update) { - if (OperatingSystem.IsWindows()) - GenerateMapImage(map); - else - LogToConsoleTranslated("bot.map.windows_only"); + if (Config.Save_To_File) + SaveToFile(map); + + if (Config.Render_In_Console) + RenderInConsole(map); } } - [SupportedOSPlatform("windows")] - private void GenerateMapImage(McMap map) + private void SaveToFile(McMap map) { - string fileName = baseDirectory + "/Map_" + map.MapId + ".jpg"; + string fileName = baseDirectory + Path.DirectorySeparatorChar + "Map_" + map.MapId.ToString().PadLeft(5, '0') + ".bmp"; if (File.Exists(fileName)) File.Delete(fileName); - /** Warning CA1416: Bitmap is only support Windows **/ - /* https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/6.0/system-drawing-common-windows-only */ - Bitmap image = new(map.Width, map.Height); - - for (int x = 0; x < map.Width; ++x) + using FileStream file = File.OpenWrite(fileName); + file.Write(BitConverter.GetBytes((ushort)0x4d42)); // WORD File Header bfType: "BM" + file.Write(BitConverter.GetBytes((uint)(14 + 40 + 3 * map.Width * map.Height))); // DWORD File Header bfSize + file.Write(BitConverter.GetBytes((ushort)0)); // WORD File Header bfReserved1 + file.Write(BitConverter.GetBytes((ushort)0)); // WORD File Header bfReserved2 + file.Write(BitConverter.GetBytes((uint)54)); // DWORD File Header bfOffBits + file.Write(BitConverter.GetBytes((uint)40)); // DWORD Info Header biSize + file.Write(BitConverter.GetBytes((uint)map.Width)); // LONG Info Header biWidth + file.Write(BitConverter.GetBytes((uint)map.Height)); // LONG Info Header biHeight + file.Write(BitConverter.GetBytes((ushort)1)); // WORD Info Header biPlanes + file.Write(BitConverter.GetBytes((ushort)24)); // WORD Info Header biBitCount + file.Write(BitConverter.GetBytes((uint)0x00)); // DWORD Info Header biCompression: BI_RGB + file.Write(BitConverter.GetBytes((uint)0)); // DWORD Info Header biSizeImage + file.Write(BitConverter.GetBytes((uint)0)); // LONG Info Header biXPelsPerMeter + file.Write(BitConverter.GetBytes((uint)0)); // LONG Info Header biYPelsPerMeter + file.Write(BitConverter.GetBytes((uint)0)); // DWORD Info Header biClrUsed + file.Write(BitConverter.GetBytes((uint)0)); // DWORD Info Header biClrImportant + Span pixel = stackalloc byte[3]; + for (int y = map.Height - 1; y >= 0; --y) { - for (int y = 0; y < map.Height; ++y) + for (int x = 0; x < map.Width; ++x) { - byte inputColor = map.Colors![x + y * map.Width]; - ColorRGBA color = MapColors.ColorByteToRGBA(inputColor); - - if (color.Unknown) - { - string hexCode = new DataTypes(GetProtocolVersion()).ByteArrayToString(new byte[] { inputColor }); - LogDebugToConsole("Unknown color encountered: " + inputColor + " (Hex: " + hexCode + "), using: RGB(248, 0, 248)"); - } - - image.SetPixel(x, y, Color.FromArgb(color.A, color.R, color.G, color.B)); + ColorRGBA color = MapColors.ColorByteToRGBA(map.Colors![x + y * map.Width]); + pixel[0] = color.B; pixel[1] = color.G; pixel[2] = color.R; + file.Write(pixel); } } - - // Resize, double the image - - if (Config.Should_Resize) - image = ResizeBitmap(image, Config.Resize_To, Config.Resize_To); - - image.Save(fileName); + file.Close(); LogToConsole(Translations.TryGet("bot.map.rendered", map.MapId, fileName)); } - [SupportedOSPlatform("windows")] - private Bitmap ResizeBitmap(Bitmap sourceBMP, int width, int height) + private void RenderInConsole(McMap map) { - Bitmap result = new(width, height); - using (Graphics g = Graphics.FromImage(result)) - g.DrawImage(sourceBMP, 0, 0, width, height); - return result; + StringBuilder sb = new(); + + int consoleWidth = Math.Max(Console.BufferWidth, Settings.Config.Main.Advanced.MinTerminalWidth) / 2; + int consoleHeight = Math.Max(Console.BufferHeight, Settings.Config.Main.Advanced.MinTerminalHeight) - 1; + + int scaleX = (map.Width + consoleWidth - 1) / consoleWidth; + int scaleY = (map.Height + consoleHeight - 1) / consoleHeight; + int scale = Math.Max(scaleX, scaleY); + if (scale > 1) + sb.AppendLine(Translations.Get("bot.map.scale", map.Width, map.Height, map.Width / scale, map.Height / scale)); + + for (int base_y = 0; base_y < map.Height; base_y += scale) + { + int last_R = -1, last_G = -1, last_B = -1; + for (int base_x = 0; base_x < map.Width; base_x += scale) + { + int RL = 0, GL = 0, BL = 0, RR = 0, GR = 0, BR = 0; + double mid_dx = (double)(scale - 1) / 2; + for (int dy = 0; dy < scale; ++dy) + { + for (int dx = 0; dx < scale; ++dx) + { + int x = Math.Min(base_x + dx, map.Width - 1); + int y = Math.Min(base_y + dy, map.Height - 1); + ColorRGBA color = MapColors.ColorByteToRGBA(map.Colors![x + y * map.Width]); + if (dx <= mid_dx) + { + RL += color.R; GL += color.G; BL += color.B; + } + if (dx >= mid_dx) + { + RR += color.R; GR += color.G; BR += color.B; + } + } + } + + int pixel_cnt = ((scale + 1) / 2) * scale; + RL = (int)Math.Round((double)RL / pixel_cnt); + GL = (int)Math.Round((double)GL / pixel_cnt); + BL = (int)Math.Round((double)BL / pixel_cnt); + RR = (int)Math.Round((double)RR / pixel_cnt); + GR = (int)Math.Round((double)GR / pixel_cnt); + BR = (int)Math.Round((double)BR / pixel_cnt); + + if (RL == last_R && GL == last_G && BL == last_B) + sb.Append(' '); + else + { + sb.Append(ColorHelper.GetColorEscapeCode((byte)RL, (byte)GL, (byte)BL, false)).Append(' '); + last_R = RL; last_G = GL; last_B = BL; + } + + if (RR == last_R && GR == last_G && BR == last_B) + sb.Append(' '); + else + { + sb.Append(ColorHelper.GetColorEscapeCode((byte)RR, (byte)GR, (byte)BR, false)).Append(' '); + last_R = RR; last_G = GR; last_B = BR; + } + } + if (base_y >= map.Height - scale) + sb.Append(ColorHelper.GetResetEscapeCode()); + else + sb.AppendLine(ColorHelper.GetResetEscapeCode()); + } + ConsoleIO.WriteLine(sb.ToString()); } } @@ -231,15 +288,6 @@ namespace MinecraftClient.ChatBots public DateTime LastUpdated { get; set; } } - class ColorRGBA - { - public byte R { get; set; } - public byte G { get; set; } - public byte B { get; set; } - public byte A { get; set; } - public bool Unknown { get; set; } = false; - } - class MapColors { // When colors are updated in a new update, you can get them using the game code: net\minecraft\world\level\material\MaterialColor.java @@ -318,7 +366,7 @@ namespace MinecraftClient.ChatBots // Any new colors that we haven't added will be purple like in the missing CS: Source Texture if (!Colors.ContainsKey(baseColorId)) - return new ColorRGBA { R = 248, G = 0, B = 248, A = 255, Unknown = true }; + return new(248, 0, 248, 255, true); byte shadeId = (byte)(receivedColorId % 4); byte shadeMultiplier = 255; @@ -339,13 +387,12 @@ namespace MinecraftClient.ChatBots break; } - return new ColorRGBA - { - R = (byte)((Colors[baseColorId][0] * shadeMultiplier) / 255), - G = (byte)((Colors[baseColorId][1] * shadeMultiplier) / 255), - B = (byte)((Colors[baseColorId][2] * shadeMultiplier) / 255), - A = 255 - }; + return new( + r: (byte)((Colors[baseColorId][0] * shadeMultiplier) / 255), + g: (byte)((Colors[baseColorId][1] * shadeMultiplier) / 255), + b: (byte)((Colors[baseColorId][2] * shadeMultiplier) / 255), + a: 255 + ); } } } diff --git a/MinecraftClient/ChatBots/ReplayCapture.cs b/MinecraftClient/ChatBots/ReplayCapture.cs index 4232e8a0..ea34e5cb 100644 --- a/MinecraftClient/ChatBots/ReplayCapture.cs +++ b/MinecraftClient/ChatBots/ReplayCapture.cs @@ -21,7 +21,7 @@ namespace MinecraftClient.ChatBots public bool Enabled = false; [TomlInlineComment("$config.ChatBot.ReplayCapture.Backup_Interval$")] - public int Backup_Interval = 3000; + public double Backup_Interval = 300.0; public void OnSettingUpdate() { @@ -38,7 +38,7 @@ namespace MinecraftClient.ChatBots SetNetworkPacketEventEnabled(true); replay = new ReplayHandler(GetProtocolVersion()); replay.MetaData.serverName = GetServerHost() + GetServerPort(); - backupCounter = Config.Backup_Interval * 10; + backupCounter = Settings.DoubleToTick(Config.Backup_Interval); RegisterChatBotCommand("replay", Translations.Get("bot.replayCapture.cmd"), "replay ", Command); } @@ -55,7 +55,7 @@ namespace MinecraftClient.ChatBots if (backupCounter <= 0) { replay.CreateBackupReplay(@"recording_cache\REPLAY_BACKUP.mcpr"); - backupCounter = Config.Backup_Interval * 10; + backupCounter = Settings.DoubleToTick(Config.Backup_Interval); } else backupCounter--; } diff --git a/MinecraftClient/ColorHelper.cs b/MinecraftClient/ColorHelper.cs new file mode 100644 index 00000000..3f35b304 --- /dev/null +++ b/MinecraftClient/ColorHelper.cs @@ -0,0 +1,184 @@ +using System; +using static MinecraftClient.Settings.MainConfigHealper.MainConfig.AdvancedConfig; + +namespace MinecraftClient +{ + public static class ColorHelper + { + // ANSI escape code - Colors: https://en.wikipedia.org/wiki/ANSI_escape_code#Colors + + private static readonly Tuple[] ColorMap4 = new Tuple[] + { + new(new(0, 0, 0), 40), + new(new(128, 0, 0), 41), + new(new(0, 128, 0), 42), + new(new(151, 109, 77), 43), + new(new(45, 45, 180), 44), + new(new(128, 0, 128), 45), + new(new(138, 138, 220), 46), + new(new(174, 164, 115), 47), + new(new(96, 96, 96), 100), + new(new(255, 0, 0), 101), + new(new(127, 178, 56), 102), + new(new(213, 201, 140), 103), + new(new(64, 64, 255), 104), + new(new(255, 0, 255), 105), + new(new(0, 255, 255), 106), + new(new(255, 255, 255), 107), + }; + + private static readonly Tuple[] ColorMap8 = new Tuple[] + { + new(new(0, 0, 0), 0), + new(new(128, 0, 0), 1), + new(new(0, 128, 0), 2), + new(new(128, 128, 0), 3), + new(new(0, 0, 128), 4), + new(new(128, 0, 128), 5), + new(new(0, 128, 128), 6), + new(new(192, 192, 192), 7), + new(new(128, 128, 128), 8), + new(new(255, 0, 0), 9), + new(new(0, 255, 0), 10), + new(new(255, 255, 0), 11), + new(new(0, 0, 255), 12), + new(new(255, 0, 255), 13), + new(new(0, 255, 255), 14), + new(new(255, 255, 255), 15), + new(new(8, 8, 8), 232), + new(new(18, 18, 18), 233), + new(new(28, 28, 28), 234), + new(new(38, 38, 38), 235), + new(new(48, 48, 48), 236), + new(new(58, 58, 58), 237), + new(new(68, 68, 68), 238), + new(new(78, 78, 78), 239), + new(new(88, 88, 88), 240), + new(new(98, 98, 98), 241), + new(new(108, 108, 108), 242), + new(new(118, 118, 118), 243), + new(new(128, 128, 128), 244), + new(new(138, 138, 138), 245), + new(new(148, 148, 148), 246), + new(new(158, 158, 158), 247), + new(new(168, 168, 168), 248), + new(new(178, 178, 178), 249), + new(new(188, 188, 188), 250), + new(new(198, 198, 198), 251), + new(new(208, 208, 208), 252), + new(new(218, 218, 218), 253), + new(new(228, 228, 228), 254), + new(new(238, 238, 238), 255), + }; + + private static readonly byte[] ColorMap8_Step = new byte[] { 0, 95, 135, 175, 215, 255 }; + + public static string GetColorEscapeCode(byte R, byte G, byte B, bool foreground) + { + return GetColorEscapeCode(R, G, B, foreground, Settings.Config.Main.Advanced.TerminalColorDepth); + } + + public static string GetColorEscapeCode(byte R, byte G, byte B, bool foreground, TerminalColorDepthType colorDepth) + { + switch (colorDepth) + { + case TerminalColorDepthType.bit_4: + { + ColorRGBA color = new(R, G, B); + int best_idx = 0; + double min_distance = ColorMap4[0].Item1.Distance(color); + for (int i = 1; i < ColorMap4.Length; ++i) + { + double distance = ColorMap4[i].Item1.Distance(color); + if (distance < min_distance) + { + min_distance = distance; + best_idx = i; + } + } + return string.Format("\u001b[{0}m", ColorMap4[best_idx].Item2 - (foreground ? 10 : 0)); + } + + case TerminalColorDepthType.bit_8: + { + ColorRGBA color = new(R, G, B); + int R_idx = (int)(R <= 95 ? Math.Round(R / 95.0) : 1 + Math.Round((R - 95.0) / 40.0)); + int G_idx = (int)(G <= 95 ? Math.Round(G / 95.0) : 1 + Math.Round((G - 95.0) / 40.0)); + int B_idx = (int)(B <= 95 ? Math.Round(B / 95.0) : 1 + Math.Round((B - 95.0) / 40.0)); + + int best_idx = -1; + double min_distance = color.Distance(new ColorRGBA(ColorMap8_Step[R_idx], + ColorMap8_Step[G_idx], + ColorMap8_Step[B_idx])); + for (int i = 0; i < ColorMap8.Length; ++i) + { + double distance = ColorMap8[i].Item1.Distance(color); + if (distance < min_distance) + { + min_distance = distance; + best_idx = i; + } + } + + if (best_idx == -1) + return string.Format("\u001B[{0};5;{1}m", (foreground ? 38 : 48), 16 + (36 * R_idx) + (6 * G_idx) + B_idx); + else + return string.Format("\u001B[{0};5;{1}m", (foreground ? 38 : 48), ColorMap8[best_idx].Item2); + } + + case TerminalColorDepthType.bit_24: + return string.Format("\u001B[{0};2;{1};{2};{3}m", (foreground ? 38 : 48), R, G, B); + + default: + return string.Empty; + } + } + + public static string GetResetEscapeCode() + { + return "\u001b[0m"; + } + } + + public class ColorRGBA + { + public byte R { get; set; } + public byte G { get; set; } + public byte B { get; set; } + public byte A { get; set; } + public bool Unknown { get; set; } = false; + + public double Distance(ColorRGBA color) + { + double r_mean = (double)(this.R + color.R) / 2.0; + double R = this.R - color.R; + double G = this.G - color.G; + double B = this.B - color.B; + return Math.Sqrt((2.0 + r_mean / 256.0) * (R * R) + 4.0 * (G * G) + (2.0 + (255 - r_mean) / 256.0) * (B * B)); + } + public ColorRGBA(byte r, byte g, byte b, byte a, bool unknown) + { + R = r; + G = g; + B = b; + A = a; + Unknown = unknown; + } + + public ColorRGBA(byte r, byte g, byte b, byte a) + { + R = r; + G = g; + B = b; + A = a; + } + + public ColorRGBA(byte r, byte g, byte b) + { + R = r; + G = g; + B = b; + A = 255; + } + } +} diff --git a/MinecraftClient/Commands/Chunk.cs b/MinecraftClient/Commands/Chunk.cs index 8d606e25..4007d4e2 100644 --- a/MinecraftClient/Commands/Chunk.cs +++ b/MinecraftClient/Commands/Chunk.cs @@ -44,11 +44,11 @@ namespace MinecraftClient.Commands sb.AppendLine(Translations.Get("cmd.chunk.chunk_pos", markChunkX, markChunkZ));; } - int consoleHeight = Math.Max(Console.BufferHeight - 2, 25); + int consoleHeight = Math.Max(Math.Max(Console.BufferHeight, Settings.Config.Main.Advanced.MinTerminalHeight) - 2, 25); if (consoleHeight % 2 == 0) --consoleHeight; - int consoleWidth = Math.Max(Console.BufferWidth / 2, 17); + int consoleWidth = Math.Max(Math.Max(Console.BufferWidth, Settings.Config.Main.Advanced.MinTerminalWidth) / 2, 17); if (consoleWidth % 2 == 0) --consoleWidth; diff --git a/MinecraftClient/Program.cs b/MinecraftClient/Program.cs index c0ad8e90..42033a58 100644 --- a/MinecraftClient/Program.cs +++ b/MinecraftClient/Program.cs @@ -352,7 +352,36 @@ namespace MinecraftClient //Test line to troubleshoot invisible colors if (Config.Logging.DebugMessages) { - ConsoleIO.WriteLineFormatted(Translations.Get("debug.color_test", "[0123456789ABCDEF]: [§00§11§22§33§44§55§66§77§88§99§aA§bB§cC§dD§eE§fF§r]")); + ConsoleIO.WriteLineFormatted(Translations.Get("debug.color_test", "[0123456789ABCDEF]: (4bit)[§00§11§22§33§44§55§66§77§88§99§aA§bB§cC§dD§eE§fF§r]")); + Random random = new(); + { // Test 8 bit color + StringBuilder sb = new(); + sb.Append("[0123456789]: (8bit)["); + for (int i = 0; i < 10; ++i) + { + sb.Append(ColorHelper.GetColorEscapeCode((byte)random.Next(255), + (byte)random.Next(255), + (byte)random.Next(255), + true, + TerminalColorDepthType.bit_8)).Append(i); + } + sb.Append(ColorHelper.GetResetEscapeCode()).Append(']'); + ConsoleIO.WriteLine(Translations.Get("debug.color_test", sb.ToString())); + } + { // Test 24 bit color + StringBuilder sb = new(); + sb.Append("[0123456789]: (24bit)["); + for (int i = 0; i < 10; ++i) + { + sb.Append(ColorHelper.GetColorEscapeCode((byte)random.Next(255), + (byte)random.Next(255), + (byte)random.Next(255), + true, + TerminalColorDepthType.bit_24)).Append(i); + } + sb.Append(ColorHelper.GetResetEscapeCode()).Append(']'); + ConsoleIO.WriteLine(Translations.Get("debug.color_test", sb.ToString())); + } } //Load cached sessions from disk if necessary diff --git a/MinecraftClient/Protocol/Handlers/Packet/s2c/DeclareCommands.cs b/MinecraftClient/Protocol/Handlers/Packet/s2c/DeclareCommands.cs new file mode 100644 index 00000000..a850dd2a --- /dev/null +++ b/MinecraftClient/Protocol/Handlers/Packet/s2c/DeclareCommands.cs @@ -0,0 +1,561 @@ +using System; +using System.Collections.Generic; + +namespace MinecraftClient.Protocol.Handlers.packet.s2c +{ + internal static class DeclareCommands + { + private static int RootIdx; + private static CommandNode[] Nodes = Array.Empty(); + + public static void Read(DataTypes dataTypes, Queue packetData) + { + int count = dataTypes.ReadNextVarInt(packetData); + Nodes = new CommandNode[count]; + for (int i = 0; i < count; ++i) + { + byte flags = dataTypes.ReadNextByte(packetData); + + int childCount = dataTypes.ReadNextVarInt(packetData); + int[] childs = new int[childCount]; + for (int j = 0; j < childCount; ++j) + childs[j] = dataTypes.ReadNextVarInt(packetData); + + int redirectNode = ((flags & 0x08) > 0) ? dataTypes.ReadNextVarInt(packetData) : -1; + + string? name = ((flags & 0x03) == 1 || (flags & 0x03) == 2) ? dataTypes.ReadNextString(packetData) : null; + + int paserId = ((flags & 0x03) == 2) ? dataTypes.ReadNextVarInt(packetData) : -1; + Paser? paser = null; + if ((flags & 0x03) == 2) + { + paser = paserId switch + { + 1 => new PaserFloat(dataTypes, packetData), + 2 => new PaserDouble(dataTypes, packetData), + 3 => new PaserInteger(dataTypes, packetData), + 4 => new PaserLong(dataTypes, packetData), + 5 => new PaserString(dataTypes, packetData), + 6 => new PaserEntity(dataTypes, packetData), + 8 => new PaserBlockPos(dataTypes, packetData), + 9 => new PaserColumnPos(dataTypes, packetData), + 10 => new PaserVec3(dataTypes, packetData), + 11 => new PaserVec2(dataTypes, packetData), + 18 => new PaserMessage(dataTypes, packetData), + 27 => new PaserRotation(dataTypes, packetData), + 29 => new PaserScoreHolder(dataTypes, packetData), + 43 => new PaserResourceOrTag(dataTypes, packetData), + 44 => new PaserResource(dataTypes, packetData), + _ => new PaserEmpty(dataTypes, packetData), + }; + } + + string? suggestionsType = ((flags & 0x10) > 0) ? dataTypes.ReadNextString(packetData) : null; + + Nodes[i] = new(flags, childs, redirectNode, name, paser, suggestionsType); + } + RootIdx = dataTypes.ReadNextVarInt(packetData); + } + + public static List> CollectSignArguments(string command) + { + List> needSigned = new(); + CollectSignArguments(RootIdx, command, needSigned); + return needSigned; + } + + private static void CollectSignArguments(int NodeIdx, string command, List> arguments) + { + CommandNode node = Nodes[NodeIdx]; + string last_arg = command; + switch (node.Flags & 0x03) + { + case 0: // root + break; + case 1: // literal + { + string[] arg = command.Split(' ', 2, StringSplitOptions.None); + if (!(arg.Length == 2 && node.Name! == arg[0])) + return; + last_arg = arg[1]; + } + break; + case 2: // argument + { + int argCnt = (node.Paser == null) ? 1 : node.Paser.GetArgCnt(); + string[] arg = command.Split(' ', argCnt + 1, StringSplitOptions.None); + if ((node.Flags & 0x04) > 0) + { + if (node.Paser != null && node.Paser.GetName() == "minecraft:message") + arguments.Add(new(node.Name!, command)); + } + if (!(arg.Length == argCnt + 1)) + return; + last_arg = arg[^1]; + } + break; + default: + break; + } + + while (Nodes[NodeIdx].RedirectNode >= 0) + NodeIdx = Nodes[NodeIdx].RedirectNode; + + foreach (int childIdx in Nodes[NodeIdx].Clildren) + CollectSignArguments(childIdx, last_arg, arguments); + } + + internal class CommandNode + { + public byte Flags; + public int[] Clildren; + public int RedirectNode; + public string? Name; + public Paser? Paser; + public string? SuggestionsType; + + + public CommandNode(byte Flags, + int[] Clildren, + int RedirectNode = -1, + string? Name = null, + Paser? Paser = null, + string? SuggestionsType = null) + { + this.Flags = Flags; + this.Clildren = Clildren; + this.RedirectNode = RedirectNode; + this.Name = Name; + this.Paser = Paser; + this.SuggestionsType = SuggestionsType; + } + } + + internal abstract class Paser + { + public abstract string GetName(); + + public abstract int GetArgCnt(); + + public abstract bool Check(string text); + } + + internal class PaserEmpty : Paser + { + + public PaserEmpty(DataTypes dataTypes, Queue packetData) { } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return ""; + } + } + + internal class PaserFloat : Paser + { + private byte Flags; + private float Min = float.MinValue, Max = float.MaxValue; + + public PaserFloat(DataTypes dataTypes, Queue packetData) + { + Flags = dataTypes.ReadNextByte(packetData); + if ((Flags & 0x01) > 0) + Min = dataTypes.ReadNextFloat(packetData); + if ((Flags & 0x02) > 0) + Max = dataTypes.ReadNextFloat(packetData); + } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "brigadier:float"; + } + } + + internal class PaserDouble : Paser + { + private byte Flags; + private double Min = double.MinValue, Max = double.MaxValue; + + public PaserDouble(DataTypes dataTypes, Queue packetData) + { + Flags = dataTypes.ReadNextByte(packetData); + if ((Flags & 0x01) > 0) + Min = dataTypes.ReadNextDouble(packetData); + if ((Flags & 0x02) > 0) + Max = dataTypes.ReadNextDouble(packetData); + } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "brigadier:double"; + } + } + + internal class PaserInteger : Paser + { + private byte Flags; + private int Min = int.MinValue, Max = int.MaxValue; + + public PaserInteger(DataTypes dataTypes, Queue packetData) + { + Flags = dataTypes.ReadNextByte(packetData); + if ((Flags & 0x01) > 0) + Min = dataTypes.ReadNextInt(packetData); + if ((Flags & 0x02) > 0) + Max = dataTypes.ReadNextInt(packetData); + } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "brigadier:integer"; + } + } + + internal class PaserLong : Paser + { + private byte Flags; + private long Min = long.MinValue, Max = long.MaxValue; + + public PaserLong(DataTypes dataTypes, Queue packetData) + { + Flags = dataTypes.ReadNextByte(packetData); + if ((Flags & 0x01) > 0) + Min = dataTypes.ReadNextLong(packetData); + if ((Flags & 0x02) > 0) + Max = dataTypes.ReadNextLong(packetData); + } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "brigadier:long"; + } + } + + internal class PaserString : Paser + { + private StringType Type; + + private enum StringType { SINGLE_WORD, QUOTABLE_PHRASE, GREEDY_PHRASE }; + + public PaserString(DataTypes dataTypes, Queue packetData) + { + Type = (StringType)dataTypes.ReadNextVarInt(packetData); + } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "brigadier:string"; + } + } + + internal class PaserEntity : Paser + { + private byte Flags; + + public PaserEntity(DataTypes dataTypes, Queue packetData) + { + Flags = dataTypes.ReadNextByte(packetData); + } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "minecraft:entity"; + } + } + + internal class PaserBlockPos : Paser + { + + public PaserBlockPos(DataTypes dataTypes, Queue packetData) { } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 3; + } + + public override string GetName() + { + return "minecraft:block_pos"; + } + } + + internal class PaserColumnPos : Paser + { + + public PaserColumnPos(DataTypes dataTypes, Queue packetData) { } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 3; + } + + public override string GetName() + { + return "minecraft:column_pos"; + } + } + + internal class PaserVec3 : Paser + { + + public PaserVec3(DataTypes dataTypes, Queue packetData) { } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 3; + } + + public override string GetName() + { + return "minecraft:vec3"; + } + } + + internal class PaserVec2 : Paser + { + + public PaserVec2(DataTypes dataTypes, Queue packetData) { } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 2; + } + + public override string GetName() + { + return "minecraft:vec2"; + } + } + + internal class PaserRotation : Paser + { + + public PaserRotation(DataTypes dataTypes, Queue packetData) { } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 2; + } + + public override string GetName() + { + return "minecraft:rotation"; + } + } + + internal class PaserMessage : Paser + { + public PaserMessage(DataTypes dataTypes, Queue packetData) { } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "minecraft:message"; + } + } + + internal class PaserScoreHolder : Paser + { + private byte Flags; + + public PaserScoreHolder(DataTypes dataTypes, Queue packetData) + { + Flags = dataTypes.ReadNextByte(packetData); + } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "minecraft:score_holder"; + } + } + + internal class PaserRange : Paser + { + private bool Decimals; + + public PaserRange(DataTypes dataTypes, Queue packetData) + { + Decimals = dataTypes.ReadNextBool(packetData); + } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "minecraft:range"; + } + } + + internal class PaserResourceOrTag : Paser + { + private string Registry; + + public PaserResourceOrTag(DataTypes dataTypes, Queue packetData) + { + Registry = dataTypes.ReadNextString(packetData); + } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "minecraft:resource_or_tag"; + } + } + + internal class PaserResource : Paser + { + private string Registry; + + public PaserResource(DataTypes dataTypes, Queue packetData) + { + Registry = dataTypes.ReadNextString(packetData); + } + + public override bool Check(string text) + { + return true; + } + + public override int GetArgCnt() + { + return 1; + } + + public override string GetName() + { + return "minecraft:resource"; + } + } + } +} diff --git a/MinecraftClient/Protocol/Handlers/Protocol18.cs b/MinecraftClient/Protocol/Handlers/Protocol18.cs index 5b00b26e..56fe8d70 100644 --- a/MinecraftClient/Protocol/Handlers/Protocol18.cs +++ b/MinecraftClient/Protocol/Handlers/Protocol18.cs @@ -17,6 +17,7 @@ using MinecraftClient.Mapping; using MinecraftClient.Mapping.BlockPalettes; using MinecraftClient.Mapping.EntityPalettes; using MinecraftClient.Protocol.Handlers.Forge; +using MinecraftClient.Protocol.Handlers.packet.s2c; using MinecraftClient.Protocol.Handlers.PacketPalettes; using MinecraftClient.Protocol.Keys; using MinecraftClient.Protocol.Message; @@ -450,6 +451,10 @@ namespace MinecraftClient.Protocol.Handlers } } break; + case PacketTypesIn.DeclareCommands: + if (protocolVersion >= MC_1_19_Version) + DeclareCommands.Read(dataTypes, packetData); + break; case PacketTypesIn.ChatMessage: int messageType = 0; @@ -553,6 +558,19 @@ namespace MinecraftClient.Protocol.Handlers (messageTypeEnum == ChatParser.MessageType.TEAM_MSG_COMMAND_INCOMING || messageTypeEnum == ChatParser.MessageType.TEAM_MSG_COMMAND_OUTGOING)) senderTeamName = Json.ParseJson(targetName).Properties["with"].DataArray[0].Properties["text"].StringValue; + if (string.IsNullOrWhiteSpace(senderDisplayName)) + { + PlayerInfo? player = handler.GetPlayerInfo(senderUUID); + if (player != null && (player.DisplayName != null || player.Name != null) && string.IsNullOrWhiteSpace(senderDisplayName)) + { + senderDisplayName = ChatParser.ParseText(player.DisplayName ?? player.Name); + if (string.IsNullOrWhiteSpace(senderDisplayName)) + senderDisplayName = player.DisplayName ?? player.Name; + else + senderDisplayName += "§r"; + } + } + bool verifyResult; if (!isOnlineMode) verifyResult = false; @@ -1382,8 +1400,8 @@ namespace MinecraftClient.Protocol.Handlers byte windowID = dataTypes.ReadNextByte(packetData); short actionID = dataTypes.ReadNextShort(packetData); bool accepted = dataTypes.ReadNextBool(packetData); - if (!accepted && actionID > 0) - SendWindowConfirmation(windowID, actionID, accepted); + if (!accepted) + SendWindowConfirmation(windowID, actionID, true); } break; case PacketTypesIn.ResourcePackSend: @@ -2226,57 +2244,6 @@ namespace MinecraftClient.Protocol.Handlers } } - /// - /// The signable argument names and their values from command - /// Signature will used in Vanilla's say, me, msg, teammsg, ban, banip, and kick commands. - /// https://gist.github.com/kennytv/ed783dd244ca0321bbd882c347892874#signed-command-arguments - /// You can find all the commands that need to be signed by searching for "MessageArgumentType.getSignedMessage" in the source code. - /// Don't forget to handle the redirected commands, e.g. /tm, /w - /// - /// - /// Command - /// List< Argument Name, Argument Value > - private List>? CollectCommandArguments(string command) - { - if (!isOnlineMode || !Config.Signature.SignMessageInCommand) - return null; - - List> needSigned = new(); - - string[] argStage1 = command.Split(' ', 2, StringSplitOptions.None); - if (argStage1.Length == 2) - { - /* /me - /say - /teammsg - /tm */ - if (argStage1[0] == "me") - needSigned.Add(new("action", argStage1[1])); - else if (argStage1[0] == "say" || argStage1[0] == "teammsg" || argStage1[0] == "tm") - needSigned.Add(new("message", argStage1[1])); - else if (argStage1[0] == "msg" || argStage1[0] == "tell" || argStage1[0] == "w" || - argStage1[0] == "ban" || argStage1[0] == "ban-ip" || argStage1[0] == "kick") - { - /* /msg - /tell - /w - /ban [] - /ban-ip [] - /kick [] */ - string[] argStage2 = argStage1[1].Split(' ', 2, StringSplitOptions.None); - if (argStage2.Length == 2) - { - if (argStage1[0] == "msg" || argStage1[0] == "tell" || argStage1[0] == "w") - needSigned.Add(new("message", argStage2[1])); - else if (argStage1[0] == "ban" || argStage1[0] == "ban-ip" || argStage1[0] == "kick") - needSigned.Add(new("reason", argStage2[1])); - } - } - } - - return needSigned; - } - /// /// Send a chat command to the server - 1.19 and above /// @@ -2307,8 +2274,10 @@ namespace MinecraftClient.Protocol.Handlers DateTimeOffset timeNow = DateTimeOffset.UtcNow; fields.AddRange(dataTypes.GetLong(timeNow.ToUnixTimeMilliseconds())); - List>? needSigned = - playerKeyPair != null ? CollectCommandArguments(command) : null; // List< Argument Name, Argument Value > + List>? needSigned = null; // List< Argument Name, Argument Value > + if (playerKeyPair != null && isOnlineMode && Config.Signature.SignMessageInCommand && protocolVersion >= MC_1_19_Version) + needSigned = DeclareCommands.CollectSignArguments(command); + if (needSigned == null || needSigned!.Count == 0) { fields.AddRange(dataTypes.GetLong(0)); // Salt: Long @@ -2320,12 +2289,12 @@ namespace MinecraftClient.Protocol.Handlers byte[] salt = GenerateSalt(); fields.AddRange(salt); // Salt: Long fields.AddRange(dataTypes.GetVarInt(needSigned.Count)); // Signature Length: VarInt - foreach (var argument in needSigned) + foreach ((string argName, string message) in needSigned) { - fields.AddRange(dataTypes.GetString(argument.Item1)); // Argument name: String + fields.AddRange(dataTypes.GetString(argName)); // Argument name: String byte[] sign = (protocolVersion >= MC_1_19_2_Version) ? - playerKeyPair!.PrivateKey.SignMessage(argument.Item2, uuid, timeNow, ref salt, acknowledgment!.lastSeen) : - playerKeyPair!.PrivateKey.SignMessage(argument.Item2, uuid, timeNow, ref salt); + playerKeyPair!.PrivateKey.SignMessage(message, uuid, timeNow, ref salt, acknowledgment!.lastSeen) : + playerKeyPair!.PrivateKey.SignMessage(message, uuid, timeNow, ref salt); fields.AddRange(dataTypes.GetVarInt(sign.Length)); // Signature length: VarInt fields.AddRange(sign); // Signature: Byte Array } diff --git a/MinecraftClient/Protocol/Message/ChatParser.cs b/MinecraftClient/Protocol/Message/ChatParser.cs index dc29f421..367f948a 100644 --- a/MinecraftClient/Protocol/Message/ChatParser.cs +++ b/MinecraftClient/Protocol/Message/ChatParser.cs @@ -47,9 +47,20 @@ namespace MinecraftClient.Protocol /// Returns the translated text public static string ParseSignedChat(ChatMessage message, List? links = null) { - string chatContent = Config.Signature.ShowModifiedChat && message.unsignedContent != null ? message.unsignedContent : message.content; - string content = message.isJson ? ParseText(chatContent, links) : chatContent; string sender = message.displayName!; + string content; + if (Config.Signature.ShowModifiedChat && message.unsignedContent != null) + { + content = ParseText(message.unsignedContent!); + if (string.IsNullOrEmpty(content)) + content = message.unsignedContent!; + } + else + { + content = message.isJson ? ParseText(message.content) : message.content; + if (string.IsNullOrEmpty(content)) + content = message.content!; + } string text; List usingData = new(); diff --git a/MinecraftClient/Resources/lang/de.ini b/MinecraftClient/Resources/lang/de.ini index 32792f5d..c4ee32cc 100644 --- a/MinecraftClient/Resources/lang/de.ini +++ b/MinecraftClient/Resources/lang/de.ini @@ -50,6 +50,8 @@ mcc.realms_available=Du hast Zugang zu den folgenden Realms-Welten mcc.realms_join=Nutze realms:index als Server-IP, um der Realms-Welt beizutreten mcc.generator.generating= mcc.generator.done= +mcc.invaild_config= +mcc.gen_new_config= [debug] # Messages from MCC Debug Mode @@ -237,6 +239,12 @@ cmd.changeSlot.fail=Konnte Slot nicht ändern. # Chunk cmd.chunk.desc= +cmd.chunk.current= +cmd.chunk.marked= +cmd.chunk.chunk_pos= +cmd.chunk.outside= +cmd.chunk.icon= +cmd.chunk.for_debug= # Connect cmd.connect.desc=Verbinde zum angegebenen Server. @@ -487,6 +495,18 @@ bot.autoCraft.debug.no_config=Keine Config-Datei gefunden. Schreibe eine neue... bot.autocraft.invaild_slots= bot.autocraft.invaild_invaild_result= +# AutoDig +bot.autodig.start_delay= +bot.autodig.dig_timeout= +bot.autodig.not_allow= +bot.autodig.cmd= +bot.autodig.available_cmd= +bot.autodig.start= +bot.autodig.stop= +bot.autodig.help.start= +bot.autodig.help.stop= +bot.autodig.help.help= + # AutoDrop bot.autoDrop.cmd=AutoDrop ChatBot Befehl bot.autoDrop.alias=AutoDrop ChatBot Befehl alias @@ -528,7 +548,7 @@ bot.autoRelog.disconnect_msg=Verbindung wurde mit folgender Nachricht unterbroch bot.autoRelog.reconnect_always=Ignoriere Kick Nachricht und verbinde erneut. bot.autoRelog.reconnect=Nachricht enhält '{0}'. Verbinde erneut. bot.autoRelog.reconnect_ignore=Kick Nachricht enthält keine Schlüsselwörter. Wird ignoriert! -bot.autoRelog.wait=Warte {0} Sekunden vor erneuter Verbindung... +bot.autoRelog.wait=Warte {0:0.000} Sekunden vor erneuter Verbindung... # AutoRespond bot.autoRespond.loading=Loading matches from '{0}' @@ -584,6 +604,7 @@ bot.map.received_map= bot.map.rendered= bot.map.failed_to_render= bot.map.list_item= +bot.map.scale= # ReplayCapture bot.replayCapture.cmd=replay Befehl @@ -682,6 +703,9 @@ config.Main.Advanced.timeout= config.Main.Advanced.enable_emoji= config.Main.Advanced.movement_speed= config.Main.Advanced.language.invaild= +config.Main.Advanced.TerminalColorDepth= +config.Main.Advanced.MinTerminalWidth= +config.Main.Advanced.MinTerminalHeight= # Signature config.Signature= @@ -755,6 +779,7 @@ config.ChatBot.Alerts.Log_File= config.ChatBot.AntiAfk= config.ChatBot.AntiAfk.Delay= config.ChatBot.AntiAfk.Command= +config.ChatBot.AntiAfk.Use_Sneak= config.ChatBot.AntiAfk.Use_Terrain_Handling= config.ChatBot.AntiAfk.Walk_Range= config.ChatBot.AntiAfk.Walk_Retries= @@ -776,6 +801,19 @@ config.ChatBot.AutoCraft.CraftingTable= config.ChatBot.AutoCraft.OnFailure= config.ChatBot.AutoCraft.Recipes= +# AutoDig +config.ChatBot.AutoDig= +config.ChatBot.AutoDig.Auto_Tool_Switch= +config.ChatBot.AutoDig.Durability_Limit= +config.ChatBot.AutoDig.Drop_Low_Durability_Tools= +config.ChatBot.AutoDig.Mode= +config.ChatBot.AutoDig.Locations= +config.ChatBot.AutoDig.Location_Order= +config.ChatBot.AutoDig.Auto_Start_Delay= +config.ChatBot.AutoDig.Dig_Timeout= +config.ChatBot.AutoDig.Log_Block_Dig= +config.ChatBot.AutoDig.List_Type= + # ChatBot.AutoDrop config.ChatBot.AutoDrop= config.ChatBot.AutoDrop.Mode= @@ -826,11 +864,11 @@ config.ChatBot.Mailer= # ChatBot.Map config.ChatBot.Map= -config.ChatBot.Map.Should_Resize= -config.ChatBot.Map.Resize_To= config.ChatBot.Map.Auto_Render_On_Update= config.ChatBot.Map.Delete_All_On_Unload= config.ChatBot.Map.Notify_On_First_Update= +config.ChatBot.Map.Render_In_Console= +config.ChatBot.Map.Save_To_File= # ChatBot.PlayerListLogger config.ChatBot.PlayerListLogger= diff --git a/MinecraftClient/Resources/lang/en.ini b/MinecraftClient/Resources/lang/en.ini index f526e38f..138ca879 100644 --- a/MinecraftClient/Resources/lang/en.ini +++ b/MinecraftClient/Resources/lang/en.ini @@ -548,7 +548,7 @@ bot.autoRelog.disconnect_msg=Got disconnected with message: {0} bot.autoRelog.reconnect_always=Ignoring kick message, reconnecting anyway. bot.autoRelog.reconnect=Message contains '{0}'. Reconnecting. bot.autoRelog.reconnect_ignore=Message not containing any defined keywords. Ignoring. -bot.autoRelog.wait=Waiting {0} seconds before reconnecting... +bot.autoRelog.wait=Waiting {0:0.000} seconds before reconnecting... # AutoRespond bot.autoRespond.loading=Loading matches from '{0}' @@ -604,7 +604,7 @@ bot.map.received_map=Received a new Map, with Id: {0} bot.map.rendered=Succesfully rendered a map with id '{0}' to: '{1}' bot.map.failed_to_render=Failed to render the map with id: '{0}' bot.map.list_item=- Map id: {0} (Last Updated: {1}) -bot.map.windows_only=Save to file is currently only available for the windows platform. +bot.map.scale=The size of the map is reduced from ({0}x{1}) to ({2}x{3}) due to the size limitation of the current terminal. # ReplayCapture bot.replayCapture.cmd=replay command @@ -719,6 +719,9 @@ config.Main.Advanced.timeout=Customize the TCP connection timeout with the serve config.Main.Advanced.enable_emoji=If turned off, the emoji will be replaced with a simpler character (for /chunk status). config.Main.Advanced.movement_speed=A movement speed higher than 2 may be considered cheating. config.Main.Advanced.language.invaild=The language code is invalid! +config.Main.Advanced.TerminalColorDepth=Use "none", "bit_4", "bit_8" or "bit_24". This can be checked by opening the debug log. +config.Main.Advanced.MinTerminalWidth=The minimum width used when calculating the image size from the width of the terminal. +config.Main.Advanced.MinTerminalHeight=The minimum height to use when calculating the image size from the height of the terminal. # Signature config.Signature=Chat signature related settings (affects minecraft 1.19+) @@ -814,8 +817,8 @@ config.ChatBot.AutoCraft.CraftingTable=Location of the crafting table if you int config.ChatBot.AutoCraft.OnFailure=What to do on crafting failure, "abort" or "wait". config.ChatBot.AutoCraft.Recipes=Recipes.Name: The name can be whatever you like and it is used to represent the recipe.\n# Recipes.Type: crafting table type: "player" or "table"\n# Recipes.Result: the resulting item\n# Recipes.Slots: All slots, counting from left to right, top to bottom. Please fill in "Null" for empty slots.\n# For the naming of the items, please see:\n# https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Inventory/ItemType.cs -# ChatBot.AutoDig -config.ChatBot.AutoDig=Auto-digging blocks.\n# You can use "/digbot start" and "/digbot stop" to control the start and stop of AutoDig.\n# Since MCC does not yet support accurate calculation of the collision volume of blocks, all blocks are considered as complete cubes when obtaining the position of the lookahead.\n# For the naming of the block, please see https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Mapping/Material.cs +# AutoDig +config.ChatBot.AutoDig=Auto-digging blocks.\n# You need to enable Terrain Handling to use this bot\n# You can use "/digbot start" and "/digbot stop" to control the start and stop of AutoDig.\n# Since MCC does not yet support accurate calculation of the collision volume of blocks, all blocks are considered as complete cubes when obtaining the position of the lookahead.\n# For the naming of the block, please see https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Mapping/Material.cs config.ChatBot.AutoDig.Auto_Tool_Switch=Automatically switch to the appropriate tool. config.ChatBot.AutoDig.Durability_Limit=Will not use tools with less durability than this. Set to zero to disable this feature. config.ChatBot.AutoDig.Drop_Low_Durability_Tools=Whether to drop the current tool when its durability is too low. @@ -881,8 +884,8 @@ config.ChatBot.Mailer=Relay messages between players and servers, like a mail pl # ChatBot.Map config.ChatBot.Map=Allows you to render maps into .jpg images\n# This is useful for solving captchas which use maps\n# The maps are rendered into Rendered_Maps folder.\n# NOTE:\n# This feature is currently only useful for solving captchas which use maps.\n# If some servers have a very short time for solving captchas, enabe Auto_Render_On_Update and prepare to open the file quickly.\n# On linux you can use FTP to access generated files.\n# In the future it might will be possible to display maps directly in the console with a separate command.\n# /!\ Make sure server rules allow bots to be used on the server, or you risk being punished. -config.ChatBot.Map.Should_Resize=Should the map be resized? (Default one is small 128x128) -config.ChatBot.Map.Resize_To=The size to resize the map to (Note: the bigger it is, the lower the quallity is) +config.ChatBot.Map.Render_In_Console=Whether to render the map in the console. +config.ChatBot.Map.Save_To_File=Whether to store the rendered map as a file. config.ChatBot.Map.Auto_Render_On_Update=Automatically render the map once it is received or updated from/by the server config.ChatBot.Map.Delete_All_On_Unload=Delete all rendered maps on unload/reload (Does not delete the images if you exit the client) config.ChatBot.Map.Notify_On_First_Update=Get a notification when you have gotten a map from the server for the first time diff --git a/MinecraftClient/Resources/lang/fr.ini b/MinecraftClient/Resources/lang/fr.ini index 8f29db97..a7514037 100644 --- a/MinecraftClient/Resources/lang/fr.ini +++ b/MinecraftClient/Resources/lang/fr.ini @@ -50,6 +50,8 @@ mcc.realms_available=Vous avez accès aux mondes Realms suivants mcc.realms_join=Utilisez realms: comme ip de serveur pour rejoindre un monde Realms mcc.generator.generating= mcc.generator.done= +mcc.invaild_config= +mcc.gen_new_config= [debug] # Messages from MCC Debug Mode @@ -237,6 +239,12 @@ cmd.changeSlot.fail=Le slot n'a pas pu être sélectionné # Chunk cmd.chunk.desc= +cmd.chunk.current= +cmd.chunk.marked= +cmd.chunk.chunk_pos= +cmd.chunk.outside= +cmd.chunk.icon= +cmd.chunk.for_debug= # Connect cmd.connect.desc=Se connecter au serveur spécifié @@ -487,6 +495,18 @@ bot.autoCraft.debug.no_config=Fichier de configuration introuvable. Création d' bot.autocraft.invaild_slots= bot.autocraft.invaild_invaild_result= +# AutoDig +bot.autodig.start_delay= +bot.autodig.dig_timeout= +bot.autodig.not_allow= +bot.autodig.cmd= +bot.autodig.available_cmd= +bot.autodig.start= +bot.autodig.stop= +bot.autodig.help.start= +bot.autodig.help.stop= +bot.autodig.help.help= + # AutoDrop bot.autoDrop.cmd=Commande du ChatBot AutoDrop bot.autoDrop.alias=Alias des commandes du ChatBot AutoDrop @@ -528,7 +548,7 @@ bot.autoRelog.disconnect_msg=Déconnection détectée avec le message : {0} bot.autoRelog.reconnect_always=Reconnexion quel que soit le contenu du message de kick. bot.autoRelog.reconnect=Le message contient '{0}'. Reconnexion. bot.autoRelog.reconnect_ignore=Le message ne contient aucun des mots clés définis. Pas de reconnexion automatique. -bot.autoRelog.wait=Attente de {0} secondes avant de se reconnecter... +bot.autoRelog.wait=Attente de {0:0.000} secondes avant de se reconnecter... # AutoRespond bot.autoRespond.loading=Chargement des règles depuis '{0}' @@ -584,6 +604,7 @@ bot.map.received_map= bot.map.rendered= bot.map.failed_to_render= bot.map.list_item= +bot.map.scale= # ReplayCapture bot.replayCapture.cmd=Commande de Replay @@ -682,6 +703,9 @@ config.Main.Advanced.timeout= config.Main.Advanced.enable_emoji= config.Main.Advanced.movement_speed= config.Main.Advanced.language.invaild= +config.Main.Advanced.TerminalColorDepth= +config.Main.Advanced.MinTerminalWidth= +config.Main.Advanced.MinTerminalHeight= # Signature config.Signature= @@ -755,6 +779,7 @@ config.ChatBot.Alerts.Log_File= config.ChatBot.AntiAfk= config.ChatBot.AntiAfk.Delay= config.ChatBot.AntiAfk.Command= +config.ChatBot.AntiAfk.Use_Sneak= config.ChatBot.AntiAfk.Use_Terrain_Handling= config.ChatBot.AntiAfk.Walk_Range= config.ChatBot.AntiAfk.Walk_Retries= @@ -776,6 +801,19 @@ config.ChatBot.AutoCraft.CraftingTable= config.ChatBot.AutoCraft.OnFailure= config.ChatBot.AutoCraft.Recipes= +# AutoDig +config.ChatBot.AutoDig= +config.ChatBot.AutoDig.Auto_Tool_Switch= +config.ChatBot.AutoDig.Durability_Limit= +config.ChatBot.AutoDig.Drop_Low_Durability_Tools= +config.ChatBot.AutoDig.Mode= +config.ChatBot.AutoDig.Locations= +config.ChatBot.AutoDig.Location_Order= +config.ChatBot.AutoDig.Auto_Start_Delay= +config.ChatBot.AutoDig.Dig_Timeout= +config.ChatBot.AutoDig.Log_Block_Dig= +config.ChatBot.AutoDig.List_Type= + # ChatBot.AutoDrop config.ChatBot.AutoDrop= config.ChatBot.AutoDrop.Mode= @@ -826,11 +864,11 @@ config.ChatBot.Mailer= # ChatBot.Map config.ChatBot.Map= -config.ChatBot.Map.Should_Resize= -config.ChatBot.Map.Resize_To= config.ChatBot.Map.Auto_Render_On_Update= config.ChatBot.Map.Delete_All_On_Unload= config.ChatBot.Map.Notify_On_First_Update= +config.ChatBot.Map.Render_In_Console= +config.ChatBot.Map.Save_To_File= # ChatBot.PlayerListLogger config.ChatBot.PlayerListLogger= diff --git a/MinecraftClient/Resources/lang/ru.ini b/MinecraftClient/Resources/lang/ru.ini index 3352c035..818441ec 100644 --- a/MinecraftClient/Resources/lang/ru.ini +++ b/MinecraftClient/Resources/lang/ru.ini @@ -50,6 +50,8 @@ mcc.realms_available=У вас есть доступ к следующим ми mcc.realms_join=Используйте realms:index как IP сервера, чтобы присоединиться к миру Realms mcc.generator.generating= mcc.generator.done= +mcc.invaild_config= +mcc.gen_new_config= [debug] # Messages from MCC Debug Mode @@ -237,6 +239,12 @@ cmd.changeSlot.fail=Не удалось изменить слот # Chunk cmd.chunk.desc= +cmd.chunk.current= +cmd.chunk.marked= +cmd.chunk.chunk_pos= +cmd.chunk.outside= +cmd.chunk.icon= +cmd.chunk.for_debug= # Connect cmd.connect.desc=подключиться к указанному серверу. @@ -487,6 +495,18 @@ bot.autoCraft.debug.no_config=Конфигурация не найдена. За bot.autocraft.invaild_slots= bot.autocraft.invaild_invaild_result= +# AutoDig +bot.autodig.start_delay= +bot.autodig.dig_timeout= +bot.autodig.not_allow= +bot.autodig.cmd= +bot.autodig.available_cmd= +bot.autodig.start= +bot.autodig.stop= +bot.autodig.help.start= +bot.autodig.help.stop= +bot.autodig.help.help= + # AutoDrop bot.autoDrop.cmd=Команда автоудаления ЧатБота bot.autoDrop.alias=Псевдоним команды автоудаления ЧатБота @@ -528,7 +548,7 @@ bot.autoRelog.disconnect_msg=Произошло отключение с сооб bot.autoRelog.reconnect_always=Игнорирует сообщение о пинке, все равно переподключается. bot.autoRelog.reconnect=Сообщение содержит '{0}'. Переподключаемся. bot.autoRelog.reconnect_ignore=Сообщение не содержит определенных ключевых слов. Игнорирование. -bot.autoRelog.wait=Ожидание {0} секунд перед переподключением... +bot.autoRelog.wait=Ожидание {0:0.000} секунд перед переподключением... # AutoRespond bot.autoRespond.loading=Загрузка совпадений из '{0}' @@ -584,6 +604,7 @@ bot.map.received_map= bot.map.rendered= bot.map.failed_to_render= bot.map.list_item= +bot.map.scale= # ReplayCapture bot.replayCapture.cmd=команда воспроизведения @@ -682,6 +703,9 @@ config.Main.Advanced.timeout= config.Main.Advanced.enable_emoji= config.Main.Advanced.movement_speed= config.Main.Advanced.language.invaild= +config.Main.Advanced.TerminalColorDepth= +config.Main.Advanced.MinTerminalWidth= +config.Main.Advanced.MinTerminalHeight= # Signature config.Signature= @@ -755,6 +779,7 @@ config.ChatBot.Alerts.Log_File= config.ChatBot.AntiAfk= config.ChatBot.AntiAfk.Delay= config.ChatBot.AntiAfk.Command= +config.ChatBot.AntiAfk.Use_Sneak= config.ChatBot.AntiAfk.Use_Terrain_Handling= config.ChatBot.AntiAfk.Walk_Range= config.ChatBot.AntiAfk.Walk_Retries= @@ -776,6 +801,19 @@ config.ChatBot.AutoCraft.CraftingTable= config.ChatBot.AutoCraft.OnFailure= config.ChatBot.AutoCraft.Recipes= +# AutoDig +config.ChatBot.AutoDig= +config.ChatBot.AutoDig.Auto_Tool_Switch= +config.ChatBot.AutoDig.Durability_Limit= +config.ChatBot.AutoDig.Drop_Low_Durability_Tools= +config.ChatBot.AutoDig.Mode= +config.ChatBot.AutoDig.Locations= +config.ChatBot.AutoDig.Location_Order= +config.ChatBot.AutoDig.Auto_Start_Delay= +config.ChatBot.AutoDig.Dig_Timeout= +config.ChatBot.AutoDig.Log_Block_Dig= +config.ChatBot.AutoDig.List_Type= + # ChatBot.AutoDrop config.ChatBot.AutoDrop= config.ChatBot.AutoDrop.Mode= @@ -826,11 +864,11 @@ config.ChatBot.Mailer= # ChatBot.Map config.ChatBot.Map= -config.ChatBot.Map.Should_Resize= -config.ChatBot.Map.Resize_To= config.ChatBot.Map.Auto_Render_On_Update= config.ChatBot.Map.Delete_All_On_Unload= config.ChatBot.Map.Notify_On_First_Update= +config.ChatBot.Map.Render_In_Console= +config.ChatBot.Map.Save_To_File= # ChatBot.PlayerListLogger config.ChatBot.PlayerListLogger= diff --git a/MinecraftClient/Resources/lang/vi.ini b/MinecraftClient/Resources/lang/vi.ini index c84b9047..b1da5b23 100644 --- a/MinecraftClient/Resources/lang/vi.ini +++ b/MinecraftClient/Resources/lang/vi.ini @@ -50,6 +50,8 @@ mcc.realms_available=Bạn có quyền tham gia vào những máy chủ Realm n mcc.realms_join=Dùng realm:[thứ tự] để tham gia máy chủ Realm mcc.generator.generating= mcc.generator.done= +mcc.invaild_config= +mcc.gen_new_config= [debug] # Messages from MCC Debug Mode @@ -237,6 +239,12 @@ cmd.changeSlot.fail=Could not change slot # Chunk cmd.chunk.desc= +cmd.chunk.current= +cmd.chunk.marked= +cmd.chunk.chunk_pos= +cmd.chunk.outside= +cmd.chunk.icon= +cmd.chunk.for_debug= # Connect cmd.connect.desc=connect to the specified server. @@ -487,6 +495,18 @@ bot.autoCraft.debug.no_config=No config found. Writing a new one. bot.autocraft.invaild_slots= bot.autocraft.invaild_invaild_result= +# AutoDig +bot.autodig.start_delay= +bot.autodig.dig_timeout= +bot.autodig.not_allow= +bot.autodig.cmd= +bot.autodig.available_cmd= +bot.autodig.start= +bot.autodig.stop= +bot.autodig.help.start= +bot.autodig.help.stop= +bot.autodig.help.help= + # AutoDrop bot.autoDrop.cmd=AutoDrop ChatBot command bot.autoDrop.alias=AutoDrop ChatBot command alias @@ -528,7 +548,7 @@ bot.autoRelog.disconnect_msg=Got disconnected with message: {0} bot.autoRelog.reconnect_always=Ignoring kick message, reconnecting anyway. bot.autoRelog.reconnect=Message contains '{0}'. Reconnecting. bot.autoRelog.reconnect_ignore=Message not containing any defined keywords. Ignoring. -bot.autoRelog.wait=Waiting {0} seconds before reconnecting... +bot.autoRelog.wait=Waiting {0:0.000} seconds before reconnecting... # AutoRespond bot.autoRespond.loading=Loading matches from '{0}' @@ -584,6 +604,7 @@ bot.map.received_map= bot.map.rendered= bot.map.failed_to_render= bot.map.list_item= +bot.map.scale= # ReplayCapture bot.replayCapture.cmd=replay command @@ -682,6 +703,9 @@ config.Main.Advanced.timeout= config.Main.Advanced.enable_emoji= config.Main.Advanced.movement_speed= config.Main.Advanced.language.invaild= +config.Main.Advanced.TerminalColorDepth= +config.Main.Advanced.MinTerminalWidth= +config.Main.Advanced.MinTerminalHeight= # Signature config.Signature= @@ -755,6 +779,7 @@ config.ChatBot.Alerts.Log_File= config.ChatBot.AntiAfk= config.ChatBot.AntiAfk.Delay= config.ChatBot.AntiAfk.Command= +config.ChatBot.AntiAfk.Use_Sneak= config.ChatBot.AntiAfk.Use_Terrain_Handling= config.ChatBot.AntiAfk.Walk_Range= config.ChatBot.AntiAfk.Walk_Retries= @@ -776,6 +801,19 @@ config.ChatBot.AutoCraft.CraftingTable= config.ChatBot.AutoCraft.OnFailure= config.ChatBot.AutoCraft.Recipes= +# AutoDig +config.ChatBot.AutoDig= +config.ChatBot.AutoDig.Auto_Tool_Switch= +config.ChatBot.AutoDig.Durability_Limit= +config.ChatBot.AutoDig.Drop_Low_Durability_Tools= +config.ChatBot.AutoDig.Mode= +config.ChatBot.AutoDig.Locations= +config.ChatBot.AutoDig.Location_Order= +config.ChatBot.AutoDig.Auto_Start_Delay= +config.ChatBot.AutoDig.Dig_Timeout= +config.ChatBot.AutoDig.Log_Block_Dig= +config.ChatBot.AutoDig.List_Type= + # ChatBot.AutoDrop config.ChatBot.AutoDrop= config.ChatBot.AutoDrop.Mode= @@ -826,11 +864,11 @@ config.ChatBot.Mailer= # ChatBot.Map config.ChatBot.Map= -config.ChatBot.Map.Should_Resize= -config.ChatBot.Map.Resize_To= config.ChatBot.Map.Auto_Render_On_Update= config.ChatBot.Map.Delete_All_On_Unload= config.ChatBot.Map.Notify_On_First_Update= +config.ChatBot.Map.Render_In_Console= +config.ChatBot.Map.Save_To_File= # ChatBot.PlayerListLogger config.ChatBot.PlayerListLogger= diff --git a/MinecraftClient/Resources/lang/zh-Hans.ini b/MinecraftClient/Resources/lang/zh-Hans.ini index 2ecc2f1c..5f787397 100644 --- a/MinecraftClient/Resources/lang/zh-Hans.ini +++ b/MinecraftClient/Resources/lang/zh-Hans.ini @@ -1,883 +1,886 @@ [mcc] # Messages from MCC itself -mcc.help_us_translate=帮助我们翻译MCC:{0} -mcc.run_with_default_settings=\nMCC正在使用默认配置运行。 -mcc.settings_generated=§c配置文件 MinecraftClient.ini 已经生成。 -mcc.has_update=§e新版本的MCC已经推出:{0} -mcc.login=账户名: -mcc.login_basic_io=请输入用户名或邮箱。 -mcc.password=密码: -mcc.password_basic_io=请输入用户 {0} 的密码。 -mcc.password_hidden=密码(不会显示):{0} -mcc.offline=§8您正在使用离线模式。 -mcc.session_invalid=§8会话缓存无效或已过期。 -mcc.session_valid=§8{0}的会话缓存仍然有效。 -mcc.profile_key_invalid=§8缓存的聊天签名密钥需要刷新。 -mcc.profile_key_valid=§8{0}的聊天签名密钥缓存仍然有效. -mcc.connecting=正在连接至{0}... -mcc.fetching_key=正在从微软获取聊天签名密钥。 -mcc.ip=服务器IP: -mcc.use_version=§8正在运行Minecraft版本{0} (v{1}协议) -mcc.unknown_version=§8未知或不受支持的Minecraft版本{0}。\n正在切换至自动检测模式。 -mcc.forge=检查服务器是否正在运行Forge... -mcc.forgeforce=正在强制启动Forge支持。 -mcc.resolve=正在解析{0}... -mcc.found=§8已找到服务器{0}:{1},域名:{2} -mcc.not_found=§8无法执行{0}的SRV解析\n{1}:{2} -mcc.retrieve=正在获取服务器信息... -mcc.restart=正在重启Minecraft Console Client... -mcc.restart_delay=等待 {0} 秒后重启... -mcc.server_version=服务器版本: -mcc.disconnected=未连接至任何服务器。输入 '{0}help' 获得帮助。 -mcc.press_exit=或者敲击回车退出Minecraft Console Client。 -mcc.version_supported=该版本受到支持\n正在登录... -mcc.single_cmd=§7已发送命令§8 {0} -mcc.joined=已成功加入服务器。\n输入 '{0}quit' 离开服务器。 -mcc.reconnect=等待5秒 (剩余{0}次尝试)... -mcc.disconnect.lost=失去连接。 -mcc.disconnect.server=从服务器断开连接: -mcc.disconnect.login=连接失败: -mcc.link=链接:{0} -mcc.player_dead_respawn=你死了!1秒后自动重生。 -mcc.player_dead=你死了!输入 '{0}respawn' 重生。 -mcc.server_offline=§8服务器正处于离线模式。 -mcc.session=检查会话... -mcc.session_fail=检查会话失败 -mcc.server_protocol=§8服务器的Minecraft版本:{0} (协议v{1}) -mcc.with_forge=, 带有Forge -mcc.handshake=§8握手成功。 (服务器ID:{0}) -mcc.realms_available==您可以访问以下Realms世界 -mcc.realms_join=请使用"realms:<序号>"作为服务器IP加入Realms世界 -mcc.generator.generating=正在从 {1} 生成 {0} 信息。 -mcc.generator.done=已完成从 {0} 信息生成,使用 {1} -mcc.invaild_config=解析配置文件失败,输入 "{0}new" 以生成一个新的配置。 -mcc.gen_new_config=已生成新的配置文件 "{0}" 。 +mcc.help_us_translate=ǷMCC{0} +mcc.run_with_default_settings=\nMCCʹĬС +mcc.settings_generated=cļ MinecraftClient.ini Ѿɡ +mcc.has_update=e°汾MCCѾƳ{0} +mcc.login=˻ +mcc.login_basic_io=û䡣 +mcc.password=룺 +mcc.password_basic_io=û {0} 롣 +mcc.password_hidden=(ʾ){0} +mcc.offline=8ʹģʽ +mcc.session_invalid=8ỰЧѹڡ +mcc.session_valid=8{0}ĻỰȻЧ +mcc.profile_key_invalid=8ǩԿҪˢ¡ +mcc.profile_key_valid=8{0}ǩԿȻЧ. +mcc.connecting={0}... +mcc.fetching_key=ڴ΢ȡǩԿ +mcc.ip=IP +mcc.use_version=8Minecraft汾{0} (v{1}Э) +mcc.unknown_version=8δֵ֪֧Minecraft汾{0}\nлԶģʽ +mcc.forge=ǷForge... +mcc.forgeforce=ǿForge֧֡ +mcc.resolve=ڽ{0}... +mcc.found=8ҵ{0}:{1}{2} +mcc.not_found=8޷ִ{0}SRV\n{1}{2} +mcc.retrieve=ڻȡϢ... +mcc.restart=Minecraft Console Client... +mcc.restart_delay=ȴ {0} ... +mcc.server_version=汾 +mcc.disconnected=δκη '{0}help' ð +mcc.press_exit=ûس˳Minecraft Console Client +mcc.version_supported=ð汾֧ܵ\nڵ¼... +mcc.single_cmd=7ѷ8 {0} +mcc.joined=ѳɹ\n '{0}quit' 뿪 +mcc.reconnect=ȴ5 (ʣ{0}γ)... +mcc.disconnect.lost=ʧȥӡ +mcc.disconnect.server=ӷϿӣ +mcc.disconnect.login=ʧܣ +mcc.link=ӣ{0} +mcc.player_dead_respawn=ˣ1Զ +mcc.player_dead=ˣ '{0}respawn' +mcc.server_offline=8ģʽ +mcc.session=Ự... +mcc.session_fail=Ựʧ +mcc.server_protocol=8Minecraft汾{0} (Эv{1}) +mcc.with_forge=, Forge +mcc.handshake=8ֳɹ (ID{0}) +mcc.realms_available==ԷRealms +mcc.realms_join=ʹ"realms:<>"ΪIPRealms +mcc.generator.generating=ڴ {1} {0} Ϣ +mcc.generator.done=ɴ {0} Ϣɣʹ {1} +mcc.invaild_config=ļʧܣ "{0}new" һµá +mcc.gen_new_config=µļ "{0}" [debug] # Messages from MCC Debug Mode -debug.color_test=颜色测试:终端应该显示:{0} -debug.session_cache_ok=§8已成功从磁盘中加载会话数据。 -debug.session_cache_fail=§8无法从磁盘加载缓存的会话数据。 -debug.keys_cache_ok=§8已成功从磁盘中加载聊天签名密钥。 -debug.keys_cache_fail=§8无法从磁盘中加载聊天签名密钥。 -debug.session_id=成功!(会话ID:{0}) -debug.crypto=§8密钥和哈希值已生成: -debug.request=§8正在请求{0} +debug.color_test=ɫԣնӦʾ{0} +debug.session_cache_ok=8ѳɹӴмػỰݡ +debug.session_cache_fail=8޷Ӵ̼ػĻỰݡ +debug.keys_cache_ok=8ѳɹӴмǩԿ +debug.keys_cache_fail=8޷ӴмǩԿ +debug.session_id=ɹ(ỰID{0}) +debug.crypto=8Կ͹ϣֵɣ +debug.request=8{0} [error] # Error messages from MCC -error.ping=ping此IP失败。 -error.unsupported=无法连接到服务器:不支持此版本! -error.determine=无法确定服务器版本。 -error.forgeforce=无法为此Minecraft版本强制启动Forge支持! -error.login=登录失败: -error.login.migrated=帐户已迁移,请使用电子邮件作为用户名。 -error.login.server=登录服务器不可用。请稍后再试。 -error.login.blocked=用户名/密码错误、IP被禁用或登录次数过多。 -error.login.response=服务器返回了无效的响应。 -error.login.premium=不是Premium用户。 -error.login.network=网络错误。 -error.login.ssl=SSL错误。 -error.login.unknown=未知错误。 -error.login.cancel=用户取消。 -error.login_failed=无法登录到此服务器。 -error.join=加入服务器时发生错误。 -error.connect=无法连接到此IP。 -error.timeout=连接超时 -error.unexpect_response=§8来自服务器的意外响应(这是Minecraft服务器吗?) -error.invalid_response=§8对握手包的响应无效 -error.invalid_encrypt=§8对StartEncryption数据包的响应无效 -error.version_different=§8服务器报告的版本与手动设置的版本不同。登录可能无法工作。 -error.no_version_report=§8服务器未报告其协议版本,自动检测将不起作用。 -error.connection_timeout=§8尝试连接到此IP时超时。 -error.forge=§8Forge登录握手未成功完成 -error.forge_encrypt=§8Forge StartEncryption握手未成功完成 -error.setting.argument_syntax={0}:无效语法,应为 --argname=value 或 --section.argname=value -error.http_code=§8接收到服务器错误:{0} -error.auth=§8在刷新身份验证时接收到服务器错误:{0} -error.realms.ip_error=无法获取您Realms世界的服务器IP -error.realms.access_denied=此Realms世界不存在或访问被拒绝 -error.realms.server_unavailable=Realms服务器可能需要一些时间来启动。请稍后再试。 -error.realms.server_id=Realms服务器ID无效或未知。 -error.realms.disabled=正在尝试加入Realms世界,但配置中禁用了Realms支持 -error.missing.argument=缺少参数 {0} -error.usage=使用方法: -error.generator.invalid=该生成器命令用法无效! -error.generator.path=提供的数据路径无效! (路径不存在或是输入错误) -error.generator.json=提供的路径必须指向一个.json格式的文件! +error.ping=pingIPʧܡ +error.unsupported=޷ӵִ֧˰汾 +error.determine=޷ȷ汾 +error.forgeforce=޷ΪMinecraft汾ǿForge֧֣ +error.login=¼ʧܣ +error.login.migrated=ʻǨƣʹõʼΪû +error.login.server=¼áԺԡ +error.login.blocked=û/IPû¼ࡣ +error.login.response=ЧӦ +error.login.premium=Premiumû +error.login.network= +error.login.ssl=SSL +error.login.unknown=δ֪ +error.login.cancel=ûȡ +error.login_failed=޷¼˷ +error.join=ʱ +error.connect=޷ӵIP +error.timeout=ӳʱ +error.unexpect_response=8ԷӦMinecraft𣿣 +error.invalid_response=8ְӦЧ +error.invalid_encrypt=8StartEncryptionݰӦЧ +error.version_different=8İ汾ֶõİ汾ͬ¼޷ +error.no_version_report=8δЭ汾Զ⽫á +error.connection_timeout=8ӵIPʱʱ +error.forge=8Forge¼δɹ +error.forge_encrypt=8Forge StartEncryptionδɹ +error.setting.argument_syntax={0}Ч﷨ӦΪ --argname=value --section.argname=value +error.http_code=8յ{0} +error.auth=8ˢ֤ʱյ{0} +error.realms.ip_error=޷ȡRealmsķIP +error.realms.access_denied=Realms粻ڻʱܾ +error.realms.server_unavailable=RealmsҪһЩʱԺԡ +error.realms.server_id=RealmsIDЧδ֪ +error.realms.disabled=ڳԼRealms磬нRealms֧ +error.missing.argument=ȱٲ {0} +error.usage=ʹ÷ +error.generator.invalid=÷Ч +error.generator.path=ṩ·Ч! (·ڻ +error.generator.json=ṩ·ָһ.jsonʽļ! [internal command] # MCC internal help command -icmd.help=help <命令名称> :显示有关命令的简要帮助。 -icmd.unknown=未知命令 '{0}'。请使用 'help' 命令来获取命令列表。 -icmd.list=help <命令名称>。可用命令:{0}。在服务器上获取帮助,请改用 '{1}send /help'。 -icmd.error=OnInternalCommand: 来自{0}的错误{1} +icmd.help=help <> ʾйļҪ +icmd.unknown=δ֪ '{0}'ʹ 'help' ȡб +icmd.list=help <>{0}ڷϻȡ '{1}send /help' +icmd.error=OnInternalCommand: {0}Ĵ{1} [exception] # Exception messages threw by MCC -exception.user_logout=用户发起的注销应该通过调用Disconnect()来完成 -exception.unknown_direction=未知方向 -exception.palette.block=请为此Minecraft版本更新方块类型处理。详细请参考 Material.cs -exception.palette.entity=请为此Minecraft版本更新实体类型处理。详细请参考 EntityType.cs -exception.palette.item=请为此Minecraft版本更新物品类型处理。详细请参考 ItemType.cs -exception.palette.packet=请为此Minecraft版本更新数据包类型调色板。详细请参考 PacketTypePalette.cs -exception.packet_process=无法处理传入的{0}类型的数据包。(数据包ID:{1},协议:{2},登陆阶段:{3},内部异常:{4})。 -exception.version_unsupport=版本{0}的协议未被支持。 -exception.chatbot.init=不应在构造函数中调用ChatBot的方法,因为作为API处理程序的模块尚未初始化。请重写 Initialize() 或 AfterGameJoined() 来执行初始化任务。 -exception.csrunner.invalid_head=提供的脚本没有有效的MCCScript头 +exception.user_logout=ûעӦͨDisconnect() +exception.unknown_direction=δ֪ +exception.palette.block=ΪMinecraft汾·ʹϸο Material.cs +exception.palette.entity=ΪMinecraft汾ʵʹϸο EntityType.cs +exception.palette.item=ΪMinecraft汾Ʒʹϸο ItemType.cs +exception.palette.packet=ΪMinecraft汾ݰ͵ɫ塣ϸο PacketTypePalette.cs +exception.packet_process=޷{0}͵ݰ(ݰID{1}Э飺{2}½׶Σ{3}ڲ쳣{4}) +exception.version_unsupport=汾{0}Эδ֧֡ +exception.chatbot.init=Ӧڹ캯еChatBotķΪΪAPIģδʼд Initialize() AfterGameJoined() ִгʼ +exception.csrunner.invalid_head=ṩĽűûЧMCCScriptͷ [chatbot] # ChatBot API -chatbot.reconnect=[{0}] 断开并重新连接到服务器 +chatbot.reconnect=[{0}] Ͽӵ [filemonitor] # FileMonitor -filemonitor.init=§8[{0}] 正在为文件{1}初始化FileSystemWatcher -filemonitor.fail=§8[{0}] 无法初始化FileSystemWatcher,正在使用轮询重试 +filemonitor.init=8[{0}] Ϊļ{1}ʼFileSystemWatcher +filemonitor.fail=8[{0}] ޷ʼFileSystemWatcherʹѯ [extra] # Inventory, Terrain & Movements, Entity related messages # Terrain & Movements -extra.terrainandmovement_enabled=地形和移动处理现在已启用。 -extra.terrainandmovement_disabled=§c该游戏版本目前还不支持地形和移动处理。 -extra.terrainandmovement_required=请先在配置文件中启用地形和移动处理。 +extra.terrainandmovement_enabled=κƶá +extra.terrainandmovement_disabled=cϷ汾Ŀǰֵ֧κƶ +extra.terrainandmovement_required=ļõκƶ # Inventory -extra.inventory_enabled=库存(物品)处理现在已启用。 -extra.inventory_disabled=§c该MC版本目前未支持处理库存(物品)。 -extra.inventory_required=请先在配置文件中启用"Main.Advanced.inventory_handling"。 -extra.inventory_interact=请使用 /inventory 来与其交互。 -extra.inventory_open=容器# {0}已开启:{1} -extra.inventory_close=容器# {0}已关闭。 +extra.inventory_enabled=(Ʒ)á +extra.inventory_disabled=cMC汾Ŀǰδִ֧(Ʒ) +extra.inventory_required=ļ"Main.Advanced.inventory_handling" +extra.inventory_interact=ʹ /inventory 佻 +extra.inventory_open=# {0}ѿ{1} +extra.inventory_close=# {0}ѹرա # Entity -extra.entity_disabled=§c该MC版本当前还不支持处理实体。 -extra.entity_required=请先在配置文件中启用"Main.Advanced.entity_handling"。 +extra.entity_disabled=cMC汾ǰִ֧ʵ塣 +extra.entity_required=ļ"Main.Advanced.entity_handling" [forge] # Messages from Forge handler -forge.version=§8Forge协议版本:{0} -forge.send_mod=§8向服务器发送伪造的forge模组列表... -forge.accept=§8接受来自的服务器模组列表... -forge.registry=§8已接收的注册表包含{0}个条目 -forge.registry_2=§8已接收注册表{0},包含{1}个条目 -forge.accept_registry=§8接受服务器注册表... -forge.complete=Forge服务器连接完成! -forge.with_mod=§8服务器正在运行Forge,有{0}个模组。 -forge.no_mod=§8正在运行的服务器没有Forge模组。 -forge.mod_list=§8模组列表: +forge.version=8ForgeЭ汾{0} +forge.send_mod=8αforgeģб... +forge.accept=8Եķģб... +forge.registry=8ѽյע{0}Ŀ +forge.registry_2=8ѽע{0}{1}Ŀ +forge.accept_registry=8ܷע... +forge.complete=Forge! +forge.with_mod=8Forge{0}ģ顣 +forge.no_mod=8еķûForgeģ顣 +forge.mod_list=8ģб: # FML2 -forge.fml2.mod=§8收到FM2服务器模组列表 -forge.fml2.mod_send=§8发回FML2客户端的模组列表 -forge.fml2.registry=§8确认FML2服务器注册表:{0} -forge.fml2.config=§8确认FML2服务器配置:{0} -forge.fml2.unknown=§8收到未知的FML2握手信息,编号:{0} -forge.fml2.unknown_channel=§8忽略未知的FML2登录消息通道:{0} +forge.fml2.mod=8յFM2ģб +forge.fml2.mod_send=8FML2ͻ˵ģб +forge.fml2.registry=8ȷFML2ע{0} +forge.fml2.config=8ȷFML2ã{0} +forge.fml2.unknown=8յδ֪FML2Ϣţ{0} +forge.fml2.unknown_channel=8δ֪FML2¼Ϣͨ{0} [cache] # Session Cache -cache.loading=§8加载Minecraft配置文件:{0} -cache.loaded=§8已加载会话:{0}:{1} -cache.converting=§8从磁盘转换会话缓存:{0} -cache.read_fail=§8无法从磁盘读取序列化会话缓存:{0} -cache.malformed=§8从磁盘读取序列化会话缓存时,获取到格式错误的数据:{0} -cache.loading_session=§8从磁盘加载会话缓存:{0} -cache.ignore_string=§8忽略会话令牌字符串'{0}':{1} -cache.ignore_line=§8忽略无效的会话令牌行:{0} -cache.read_fail_plain=§8无法从磁盘读取会话缓存:{0} -cache.saving=§8将会话缓存保存到磁盘 -cache.save_fail=§8无法将会话缓存写入磁盘:{0} +cache.loading=8Minecraftļ{0} +cache.loaded=8ѼػỰ{0}:{1} +cache.converting=8ӴתỰ棺{0} +cache.read_fail=8޷Ӵ̶ȡлỰ棺{0} +cache.malformed=8Ӵ̶ȡлỰʱȡʽݣ{0} +cache.loading_session=8Ӵ̼ػỰ棺{0} +cache.ignore_string=8ԻỰַ'{0}'{1} +cache.ignore_line=8ЧĻỰУ{0} +cache.read_fail_plain=8޷Ӵ̶ȡỰ棺{0} +cache.saving=8Ự汣浽 +cache.save_fail=8޷Ựд̣{0} # Profile Key Cache -cache.loading_keys=§8从磁盘加载聊天签名密钥缓存: {0} -cache.loaded_keys=§8已加载签名密钥,下次刷新于 {0} -cache.ignore_string_keys=§8忽略聊天签名密钥字符串 '{0}':{1} -cache.ignore_line_keys=§8忽略无效的聊天签名密钥行:{0} -cache.read_fail_plain_keys=§8无法从磁盘读取聊天签名密钥缓存:{0} -cache.saving_keys=§8将聊天签名密钥保存到磁盘 -cache.save_fail_keys=§8无法将聊天签名密钥写入磁盘:{0} +cache.loading_keys=8Ӵ̼ǩԿ: {0} +cache.loaded_keys=8ѼǩԿ´ˢ {0} +cache.ignore_string_keys=8ǩԿַ '{0}'{1} +cache.ignore_line_keys=8ЧǩԿУ{0} +cache.read_fail_plain_keys=8޷Ӵ̶ȡǩԿ棺{0} +cache.saving_keys=8ǩԿ浽 +cache.save_fail_keys=8޷ǩԿд̣{0} [proxy] -proxy.connected=§8已连接到代理{0}:{1} +proxy.connected=8ӵ{0}:{1} [chat] # Chat Parser -chat.download=§8正在从Mojang服务器下载语言文件 '{0}.lang'... -chat.request=§8正在请求{0}... -chat.done=§8下载完成。文件另存为 '{0}' -chat.fail=§8下载文件失败。 -chat.from_dir=§8默认为你的Minecraft目录中的en_GB.lang -chat.loaded=§8已加载翻译文件。 -chat.not_found=§8找不到翻译文件:'{0}'\n如果没有此文件,某些信息将无法正确打印。 -chat.message_chain_broken=玩家 {0} 的消息签名链已经被破坏。(签名不在可信) +chat.download=8ڴMojangļ '{0}.lang'... +chat.request=8{0}... +chat.done=8ɡļΪ '{0}' +chat.fail=8ļʧܡ +chat.from_dir=8ĬΪMinecraftĿ¼еen_GB.lang +chat.loaded=8Ѽطļ +chat.not_found=8Ҳļ'{0}'\nûдļijЩϢ޷ȷӡ +chat.message_chain_broken= {0} ϢǩѾƻǩڿţ [general] # General message/information (i.e. Done) -general.done=完成 -general.fail=失败 -general.bot_unload=将会卸载此bot。 -general.available_cmd=可用命令:{0} +general.done= +general.fail=ʧ +general.bot_unload=жشbot +general.available_cmd={0} [cmd] # Commands. Naming style: cmd.. # Animation -cmd.animation.desc=挥动你的手臂。 +cmd.animation.desc=Ӷֱۡ # Bots -cmd.bots.desc=列出全部 ChatBot ,加载或卸载一个 ChatBot。 -cmd.bots.list=已加载的 ChatBot -cmd.bots.notfound=该 ChatBot 并未加载,请检查输入。 -cmd.bots.noloaded=没有 ChatBot 被加载。 -cmd.bots.unloaded=成功卸载 ChatBot:{0} -cmd.bots.unloaded_all=成功卸载所有 ChatBot。 +cmd.bots.desc=гȫ ChatBot ػжһ ChatBot +cmd.bots.list=Ѽص ChatBot +cmd.bots.notfound= ChatBot δأ롣 +cmd.bots.noloaded=û ChatBot ء +cmd.bots.unloaded=ɹж ChatBot{0} +cmd.bots.unloaded_all=ɹж ChatBot # ChangeSlot -cmd.changeSlot.desc=变更快捷栏栏位 -cmd.changeSlot.nan=无法变更栏位:不是数字 -cmd.changeSlot.changed=已变更为栏位{0} -cmd.changeSlot.fail=无法变更栏位 +cmd.changeSlot.desc=λ +cmd.changeSlot.nan=޷λ +cmd.changeSlot.changed=ѱΪλ{0} +cmd.changeSlot.fail=޷λ # Chunk -cmd.chunk.desc=显示区块加载状态。\n如果显示错乱竟在设置中更改 EnableEmoji=false 。 -cmd.chunk.current=当前位置:{0},所在区块:({1}, {2})。 -cmd.chunk.marked=标记的位置: -cmd.chunk.chunk_pos=区块:({0}, {1})。 -cmd.chunk.outside=§x§0由于被标记的区块距离玩家太远,它不会被显示在图中§r -cmd.chunk.icon=玩家:{0},标记的区块:{1},未收到:{2},加载中:{3},已加载:{4} -cmd.chunk.for_debug=§x§0此命令仅用于调试使用,确保你已经了解执行该命令会造成的影响。§r +cmd.chunk.desc=ʾ״̬\nʾҾи EnableEmoji=false +cmd.chunk.current=ǰλã{0}飺({1}, {2}) +cmd.chunk.marked=ǵλã +cmd.chunk.chunk_pos=飺({0}, {1}) +cmd.chunk.outside=x0ڱǵ̫ԶᱻʾͼСr +cmd.chunk.icon=:{0}ǵ:{1}δյ:{2}:{3}Ѽ:{4} +cmd.chunk.for_debug=x0ڵʹãȷѾ˽ִиɵӰ졣r # Connect -cmd.connect.desc=连接到指定的服务器。 -cmd.connect.unknown=未知帐户 '{0}'。 -cmd.connect.invalid_ip=无效的服务器IP '{0}'。 +cmd.connect.desc=ӵָķ +cmd.connect.unknown=δ֪ʻ '{0}' +cmd.connect.invalid_ip=ЧķIP '{0}' # Debug -cmd.debug.desc=切换调试消息。 -cmd.debug.state_on=调试消息现在已打开 -cmd.debug.state_off=调试消息现在已关闭 +cmd.debug.desc=лϢ +cmd.debug.state_on=ϢѴ +cmd.debug.state_off=Ϣѹر # Dig -cmd.dig.desc=试图破坏一个方块 -cmd.dig.too_far=你离这个方块太远了。 -cmd.dig.no_block=这个地方没有方块 (空气) -cmd.dig.dig=尝试挖掘位于({0}, {1}, {2})的方块({3})。 -cmd.dig.fail=无法开始挖掘方块。 +cmd.dig.desc=ͼƻһ +cmd.dig.too_far=̫Զˡ +cmd.dig.no_block=طûз () +cmd.dig.dig=ھλ({0}, {1}, {2})ķ({3}) +cmd.dig.fail=޷ʼھ򷽿顣 # Entitycmd -cmd.entityCmd.attacked=已攻击实体 -cmd.entityCmd.used=已使用实体 -cmd.entityCmd.not_found=找不到实体 +cmd.entityCmd.attacked=ѹʵ +cmd.entityCmd.used=ʹʵ +cmd.entityCmd.not_found=Ҳʵ -cmd.entityCmd.entity=实体 -cmd.entityCmd.entities=实体集 -cmd.entityCmd.nickname=昵称 -cmd.entityCmd.customname=自定义名称 -cmd.entityCmd.latency=延迟 -cmd.entityCmd.item=物品 -cmd.entityCmd.equipment=装备 -cmd.entityCmd.mainhand=主手 -cmd.entityCmd.offhane=副手 -cmd.entityCmd.helmet=头盔 -cmd.entityCmd.chestplate=胸甲 -cmd.entityCmd.leggings=护腿 -cmd.entityCmd.boots=靴子 -cmd.entityCmd.pose=姿势 -cmd.entityCmd.health=生命值 -cmd.entityCmd.distance=距离 -cmd.entityCmd.location=位置 -cmd.entityCmd.type=类型 +cmd.entityCmd.entity=ʵ +cmd.entityCmd.entities=ʵ弯 +cmd.entityCmd.nickname=dz +cmd.entityCmd.customname=Զ +cmd.entityCmd.latency=ӳ +cmd.entityCmd.item=Ʒ +cmd.entityCmd.equipment=װ +cmd.entityCmd.mainhand= +cmd.entityCmd.offhane= +cmd.entityCmd.helmet=ͷ +cmd.entityCmd.chestplate=ؼ +cmd.entityCmd.leggings= +cmd.entityCmd.boots=ѥ +cmd.entityCmd.pose= +cmd.entityCmd.health=ֵ +cmd.entityCmd.distance= +cmd.entityCmd.location=λ +cmd.entityCmd.type= # Exec If -cmd.execif.desc=允许你在某个条件成立时执行一个命令。(你可以使用"MinecraftClient.ini"中的变量和使用"/set"命令定义的变量,以及CSharp表达式)。 -cmd.execif.executed=条件'{0}'满足,已执行命令'{1}',得到结果'{2}'。 -cmd.execif.executed_no_output=条件'{0}'满足,已执行命令'{1}',该命令没有返回任何结果。 -cmd.execif.error_occured=在执行命令 {0} 时出现错误。 -cmd.execif.error=错误:{0} +cmd.execif.desc=ijʱִһ(ʹ"MinecraftClient.ini"еıʹ"/set"ıԼCSharpʽ +cmd.execif.executed='{0}'㣬ִ'{1}'õ'{2}' +cmd.execif.executed_no_output='{0}'㣬ִ'{1}'ûзκν +cmd.execif.error_occured=ִ {0} ʱִ +cmd.execif.error={0} # Exec Multi -cmd.execmulti.desc=依次执行多个命令。 -cmd.execmulti.executed=执行了命令 '{0}' , -cmd.execmulti.result=结果为 '{0}'! -cmd.execmulti.no_result=没有返回结果! +cmd.execmulti.desc=ִж +cmd.execmulti.executed=ִ '{0}' +cmd.execmulti.result=Ϊ '{0}' +cmd.execmulti.no_result=ûзؽ # Exit -cmd.exit.desc=断开与服务器的连接。 +cmd.exit.desc=Ͽӡ # Health -cmd.health.desc=显示生命值和饱食度。 -cmd.health.response=生命值:{0},饱食度:{1},等级:{2},总经验值:{3} +cmd.health.desc=ʾֵͱʳȡ +cmd.health.response=ֵ{0}ʳȣ{1}ȼ{2}ֵܾ{3} # Inventory -cmd.inventory.desc=容器相关命令 -cmd.inventory.creative_done=向容器#{2}请求{0} x{1} -cmd.inventory.creative_delete=请求清除栏位 #{0} -cmd.inventory.creative_fail=请求创造模式操作失败 -cmd.inventory.need_creative=你必须在创造模式 -cmd.inventory.container_not_found=找不到容器,请使用显式ID重试 -cmd.inventory.close=关闭容器 #{0} -cmd.inventory.close_fail=关闭容器失败 #{0} -cmd.inventory.not_exist=容器#{0}不存在 -cmd.inventory.inventory=容器 -cmd.inventory.inventories=容器 -cmd.inventory.inventories_available=可用容器 -cmd.inventory.hotbar=您选择的快捷栏是{0} -cmd.inventory.damage=武器伤害值 -cmd.inventory.left=左 -cmd.inventory.right=右 -cmd.inventory.middle=中间 -cmd.inventory.clicking={0}正在点击容器#{2}中的栏位{1} -cmd.inventory.shiftclick=按住Shift键点击容器#{1}中的栏位{0} -cmd.inventory.shiftclick_fail=执行Shift点击失败,这可能是因为该容器类型目前不被支持。 -cmd.inventory.no_item=栏位#{0}中没有物品 -cmd.inventory.drop=从栏位#{0}中丢弃了1个物品 -cmd.inventory.drop_stack=从栏位#{0}中丢弃了所有堆叠的物品 +cmd.inventory.desc= +cmd.inventory.creative_done=#{2}{0} x{1} +cmd.inventory.creative_delete=λ #{0} +cmd.inventory.creative_fail=ģʽʧ +cmd.inventory.need_creative=ڴģʽ +cmd.inventory.container_not_found=ҲʹʽID +cmd.inventory.close=ر #{0} +cmd.inventory.close_fail=رʧ #{0} +cmd.inventory.not_exist=#{0} +cmd.inventory.inventory= +cmd.inventory.inventories= +cmd.inventory.inventories_available= +cmd.inventory.hotbar=ѡĿ{0} +cmd.inventory.damage=˺ֵ +cmd.inventory.left= +cmd.inventory.right= +cmd.inventory.middle=м +cmd.inventory.clicking={0}#{2}еλ{1} +cmd.inventory.shiftclick=סShift#{1}еλ{0} +cmd.inventory.shiftclick_fail=ִShiftʧܣΪĿǰ֧֡ +cmd.inventory.no_item=λ#{0}ûƷ +cmd.inventory.drop=λ#{0}ж1Ʒ +cmd.inventory.drop_stack=λ#{0}жжѵƷ # Inventory Help -cmd.inventory.help.basic=基本用法 -cmd.inventory.help.available=可用操作 -cmd.inventory.help.help={0}\n使用 '/inventory help ' 获取帮助。\n'player' 和 'container' 可以简化为 'p' 和 'c'。\n请注意,'[]' 中的参数是可选的。 -cmd.inventory.help.usage=用法 -cmd.inventory.help.list=列出所有容器。 -cmd.inventory.help.close=关闭打开的容器。 -cmd.inventory.help.click=单击物品。 -cmd.inventory.help.shiftclick=按住Shift键点击一个物品。 -cmd.inventory.help.drop=从容器中丢弃物品。 -cmd.inventory.help.creativegive=在创造模式中给予物品。 -cmd.inventory.help.creativedelete=在创造性模式中清除栏位。 -cmd.inventory.help.inventories=列出所有可用的窗口。 -cmd.inventory.help.search=在打开的所有窗口中搜索物品。 -cmd.inventory.help.unknown=未知操作。 -cmd.inventory.found_items=找到物品 -cmd.inventory.no_found_items=在任何窗口中都没有找到该物品! +cmd.inventory.help.basic=÷ +cmd.inventory.help.available=ò +cmd.inventory.help.help={0}\nʹ '/inventory help ' ȡ\n'player' 'container' ԼΪ 'p' 'c'\nע⣬'[]' еIJǿѡġ +cmd.inventory.help.usage=÷ +cmd.inventory.help.list=г +cmd.inventory.help.close=رմ򿪵 +cmd.inventory.help.click=Ʒ +cmd.inventory.help.shiftclick=סShiftһƷ +cmd.inventory.help.drop=жƷ +cmd.inventory.help.creativegive=ڴģʽиƷ +cmd.inventory.help.creativedelete=ڴģʽλ +cmd.inventory.help.inventories=гпõĴڡ +cmd.inventory.help.search=ڴ򿪵дƷ +cmd.inventory.help.unknown=δ֪ +cmd.inventory.found_items=ҵƷ +cmd.inventory.no_found_items=κδжûҵƷ # Leave bed -cmd.bed.desc=用于右键床开始睡觉或离开正在睡觉的床。 -cmd.bed.leaving=已向服务器发送离开床的数据包。 -cmd.bed.trying_to_use=试图在位于 (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) 上的床上睡觉,结果:{3} -cmd.bed.in=成功地躺在了床上! -cmd.bed.not_in=上床睡觉失败了。(PS: 你必须使用床头对应的坐标) -cmd.bed.not_a_bed=位于 (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) 的方块不是一个床! -cmd.bed.searching=在半径为{0}的范围内寻找床... -cmd.bed.bed_not_found=没有找到床! -cmd.bed.found_a_bed_at=在 (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) 找到了一个床。 -cmd.bed.cant_reach_safely=无法安全地到达床边! -cmd.bed.moving=正在移动到床所在的位置: (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) -cmd.bed.failed_to_reach_in_time=无法在30秒内到达(X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}),放弃本次寻路。 +cmd.bed.desc=Ҽʼ˯뿪˯Ĵ +cmd.bed.leaving=뿪ݰ +cmd.bed.trying_to_use=ͼλ (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) ϵĴ˯{3} +cmd.bed.in=ɹ˴ϣ +cmd.bed.not_in=ϴ˯ʧˡPS: ʹôͷӦ꣩ +cmd.bed.not_a_bed=λ (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) ķ鲻һ +cmd.bed.searching=ڰ뾶Ϊ{0}ķΧѰҴ... +cmd.bed.bed_not_found=ûҵ +cmd.bed.found_a_bed_at= (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) ҵһ +cmd.bed.cant_reach_safely=޷ȫصﴲ! +cmd.bed.moving=ƶڵλã (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) +cmd.bed.failed_to_reach_in_time=޷30ڵ(X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0})Ѱ· # List -cmd.list.desc=获取玩家列表。 -cmd.list.players=玩家列表:{0} +cmd.list.desc=ȡб +cmd.list.players=б{0} # Log -cmd.log.desc=将文本记录到控制台。 +cmd.log.desc=ı¼̨ # Look -cmd.look.desc=查看方向或坐标。 -cmd.look.unknown=未知方向 '{0}'。 -cmd.look.at=当前视角 偏航角:{0} 俯仰角:{1}。 -cmd.look.block=正看向位于 {0} 的方块。 -cmd.look.inspection=与视线相交的第一个方块是 {0} ({1:0}, {2:0}, {3:0}),距离玩家 {4:0.0}({5:0.0})。 -cmd.look.noinspection=在 {0} 米内没有任何方块与视线相交。 +cmd.look.desc=鿴ꡣ +cmd.look.unknown=δ֪ '{0}' +cmd.look.at=ǰӽ ƫǣ{0} ǣ{1} +cmd.look.block=λ {0} ķ顣 +cmd.look.inspection=ཻĵһ {0} ({1:0}, {2:0}, {3:0}) {4:0.0}({5:0.0}) +cmd.look.noinspection= {0} ûκηཻ # Move -cmd.move.desc=移动或开始移动。 -cmd.move.enable=在下次服务器登录、重生或更换世界时启用地形和移动。 -cmd.move.disable=禁用地形和移动。 -cmd.move.moving=移动{0} -cmd.move.dir_fail=不能朝此方向移动。 -cmd.move.walk=移动到{0} -cmd.move.fail=无法计算到达{0}的路径。 -cmd.move.suggestforce=无法计算安全到达{0}的路径. 请使用 -f 参数允许不安全移动。 -cmd.move.gravity.enabled=重力已开启。 -cmd.move.gravity.disabled=重力已关闭。 -cmd.move.chunk_loading_status=区块加载进度:{0:P} - 共{2}个,加载完成了{1}个。 -cmd.move.chunk_not_loaded=目标位置所在的区块还没有被加载。你可以使用"/chunk status {0:0.0} {1:0.0} {2:0.0}"来查看区块的加载状态。 +cmd.move.desc=ƶʼƶ +cmd.move.enable=´η¼ʱõκƶ +cmd.move.disable=õκƶ +cmd.move.moving=ƶ{0} +cmd.move.dir_fail=ܳ˷ƶ +cmd.move.walk=ƶ{0} +cmd.move.fail=޷㵽{0}· +cmd.move.suggestforce=޷㰲ȫ{0}·. ʹ -f ȫƶ +cmd.move.gravity.enabled=ѿ +cmd.move.gravity.disabled=ѹرա +cmd.move.chunk_loading_status=ؽȣ{0:P} - {2}{1} +cmd.move.chunk_not_loaded=Ŀλڵ黹ûбءʹ"/chunk status {0:0.0} {1:0.0} {2:0.0}"鿴ļ״̬ # Reco -cmd.reco.desc=重新启动并重新连接到服务器。 +cmd.reco.desc=ӵ # Reload -cmd.reload.started=重新加载设置中... -cmd.reload.warning1=这条命令不会影响在连接到服务器之前的某些设置。 -cmd.reload.warning2=一些通过命令行参数传递的设置可能会被覆盖! -cmd.reload.warning3=你有可能需要重新连接(/reco)才能使某些设置生效。 -cmd.reload.warning4=由于技术限制,ReplayCapturer 将不会被强制重载! -cmd.reload.finished=重新加载设置完成! -cmd.reload.desc=重新加载MCC的设置。 +cmd.reload.started=¼... +cmd.reload.warning1=Ӱӵ֮ǰijЩá +cmd.reload.warning2=һЩͨвݵÿܻᱻǣ +cmd.reload.warning3=пҪ(/reco)ʹijЩЧ +cmd.reload.warning4=ڼƣReplayCapturer ᱻǿ! +cmd.reload.finished=¼ɣ +cmd.reload.desc=¼MCCá # Respawn -cmd.respawn.desc=如果你死亡了,请用这个来重生。 -cmd.respawn.done=你重生了。 +cmd.respawn.desc=ˣ +cmd.respawn.done=ˡ # Script -cmd.script.desc=运行脚本文件。 +cmd.script.desc=нűļ # Send -cmd.send.desc=发送聊天信息或命令。 +cmd.send.desc=Ϣ # Set -cmd.set.desc=设置自定义 %variable%。 -cmd.set.format=变量名范围必须为 A-Za-z0-9。 +cmd.set.desc=Զ %variable% +cmd.set.format=ΧΪ A-Za-z0-9 # SetRnd -cmd.setrnd.desc=随机为自定义 %变量名% 赋值。 -cmd.setrndnum.format=setrnd 变量名 -7to17 -cmd.setrndstr.format=setrnd 变量名 字符串1 "\"字符串2\" 字符串3" +cmd.setrnd.desc=ΪԶ %% ֵ +cmd.setrndnum.format=setrnd -7to17 +cmd.setrndstr.format=setrnd ַ1 "\"ַ2\" ַ3" # Sneak -cmd.sneak.desc=切换到潜行 -cmd.sneak.on=现在你在潜行状态。 -cmd.sneak.off=你不在潜行状态了。 +cmd.sneak.desc=лDZ +cmd.sneak.on=DZ״̬ +cmd.sneak.off=㲻DZ״̬ˡ # DropItem -cmd.dropItem.desc=丢弃玩家容器中的指定类型物品或打开的容器 -cmd.dropItem.dropped=已从容器#{1}中丢弃所有{0} -cmd.dropItem.unknown_item=未知物品:{0} +cmd.dropItem.desc=еָƷ򿪵 +cmd.dropItem.dropped=Ѵ#{1}ж{0} +cmd.dropItem.unknown_item=δ֪Ʒ{0} # Tps -cmd.tps.desc=显示服务器当前tps (tick per second)。(可能不精确) -cmd.tps.current=当前TPS +cmd.tps.desc=ʾǰtps (tick per second)ܲȷ +cmd.tps.current=ǰTPS # Useblock -cmd.useblock.desc=放置一个方块或打开箱子 -cmd.useblock.use=使用位于 ({0:0.0}, {1:0.0}, {2:0.0}) 的 {3}。 +cmd.useblock.desc=һ +cmd.useblock.use=ʹλ ({0:0.0}, {1:0.0}, {2:0.0}) {3} # Useitem -cmd.useitem.desc=使用(左键单击)手上的物品 -cmd.useitem.use=使用了一个物品。 +cmd.useitem.desc=ʹãϵƷ +cmd.useitem.use=ʹһƷ [bot] # ChatBots. Naming style: bot.. # Alerts -bot.alerts.start_rain=§c天气变化:开始下雨了。§r -bot.alerts.end_rain=§c天气变化:雨停了。§r -bot.alerts.start_thunderstorm=§c天气变化:现在是雷雨天。§r -bot.alerts.end_thunderstorm=§c天气变化:现在不再是雷雨天了。§r +bot.alerts.start_rain=c仯ʼˡr +bot.alerts.end_rain=c仯ͣˡr +bot.alerts.start_thunderstorm=c仯졣r +bot.alerts.end_thunderstorm=c仯ڲˡr # Anti AFK -bot.antiafk.not_using_terrain_handling=当前未启用地形处理,如果你想使用相关的特性,请在设置中启用它。当前将继续使用替代方法运行(定时发送命令)。 -bot.antiafk.swapping=最短时间大于最长时间,已将它们交换。 -bot.antiafk.invalid_walk_range=当前提供的行走范围无效,它必须是一个大于0的正整数,将使用默认值5! +bot.antiafk.not_using_terrain_handling=ǰδõδʹصԣǰʹУʱ +bot.antiafk.swapping=ʱʱ䣬ѽǽ +bot.antiafk.invalid_walk_range=ǰṩ߷ΧЧһ0ʹĬֵ5! # AutoAttack -bot.autoAttack.invalidcooldown=攻击冷却时间值不能小于0,已使用自动作为默认值 +bot.autoAttack.invalidcooldown=ȴʱֵС0ʹԶΪĬֵ # AutoCraft -bot.autoCraft.cmd=自动制作ChatBot命令 -bot.autoCraft.alias=自动制作ChatBot命令的别名 -bot.autoCraft.cmd.list=已加载{0}个配方:{1} -bot.autoCraft.cmd.resetcfg=将配置重置为默认值 -bot.autoCraft.recipe_not_exist=指定的配方名称不存在。请检查配置文件。 -bot.autoCraft.no_recipe_name=请指定要制作的配方名称。 -bot.autoCraft.stop=AutoCraft已停止 -bot.autoCraft.available_cmd=可用命令:{0}。可使用 /autocraft help <命令名> 了解更多信息。您可以使用 /ac 作为命令别名。 -bot.autoCraft.help.load=加载配置文件。 -bot.autoCraft.help.list=列出可用配方。 -bot.autoCraft.help.reload=重新加载配置文件。 -bot.autoCraft.help.resetcfg=将默认示例配置写入默认位置。 -bot.autoCraft.help.start=开始制作。用法:/autocraft start <配方名称> -bot.autoCraft.help.stop=停止当前正在进行的制作过程 -bot.autoCraft.help.help=获取命令描述。用法:/autocraft help <命令名> -bot.autoCraft.loaded=已成功加载 -bot.autoCraft.start=AutoCraft启动中:{0} -bot.autoCraft.start_fail=无法启动AutoCraft。请检查用于制作{0}的可用材料 -bot.autoCraft.table_not_found=找不到工作台 -bot.autoCraft.close_inventory=容器#{0}被AutoCraft关闭 -bot.autoCraft.missing_material=缺失材料:{0} -bot.autoCraft.aborted=制作被终止!请检查可用材料。 -bot.autoCraft.craft_fail=制作失败!等待更多材料 -bot.autoCraft.timeout=动作超时!原因:{0} -bot.autoCraft.error.config=分析配置时出错:{0} -bot.autoCraft.exception.name_miss=解析配方时缺少配方名称 -bot.autoCraft.exception.duplicate=指定了重复的配方名称:{0} -bot.autoCraft.debug.no_config=找不到配置。请新建一个。 -bot.autocraft.invaild_slots=配方的物品数量不匹配,已自动调整。 -bot.autocraft.invaild_invaild_result=无效的输出物品! +bot.autoCraft.cmd=ԶChatBot +bot.autoCraft.alias=ԶChatBotı +bot.autoCraft.cmd.list=Ѽ{0}䷽{1} +bot.autoCraft.cmd.resetcfg=ΪĬֵ +bot.autoCraft.recipe_not_exist=ָ䷽Ʋڡļ +bot.autoCraft.no_recipe_name=ָҪ䷽ơ +bot.autoCraft.stop=AutoCraftֹͣ +bot.autoCraft.available_cmd={0}ʹ /autocraft help <> ˽Ϣʹ /ac Ϊ +bot.autoCraft.help.load=ļ +bot.autoCraft.help.list=г䷽ +bot.autoCraft.help.reload=¼ļ +bot.autoCraft.help.resetcfg=ĬʾдĬλá +bot.autoCraft.help.start=ʼ÷/autocraft start <䷽> +bot.autoCraft.help.stop=ֹͣǰڽе +bot.autoCraft.help.help=ȡ÷/autocraft help <> +bot.autoCraft.loaded=ѳɹ +bot.autoCraft.start=AutoCraftУ{0} +bot.autoCraft.start_fail=޷AutoCraft{0}Ŀò +bot.autoCraft.table_not_found=Ҳ̨ +bot.autoCraft.close_inventory=#{0}AutoCraftر +bot.autoCraft.missing_material=ȱʧϣ{0} +bot.autoCraft.aborted=ֹòϡ +bot.autoCraft.craft_fail=ʧܣȴ +bot.autoCraft.timeout=ʱԭ{0} +bot.autoCraft.error.config=ʱ{0} +bot.autoCraft.exception.name_miss=䷽ʱȱ䷽ +bot.autoCraft.exception.duplicate=ָظ䷽ƣ{0} +bot.autoCraft.debug.no_config=Ҳá½һ +bot.autocraft.invaild_slots=䷽Ʒƥ䣬Զ +bot.autocraft.invaild_invaild_result=ЧƷ # AutoDig -bot.autodig.start_delay=将在 {0:0.0} 秒后开始自动挖掘。 -bot.autodig.dig_timeout=挖掘方块超时,重试。 -bot.autodig.not_allow=当前所看向的方块不在允许挖掘列表中。 -bot.autodig.cmd=自动挖掘 ChatBot 命令 -bot.autodig.available_cmd=可用命令:{0}。可使用 /digbot help <命令名> 了解更多信息。 -bot.autodig.start=开始自动挖掘。 -bot.autodig.stop=停止自动挖掘。 -bot.autodig.help.start=开始运行自动挖掘。 -bot.autodig.help.stop=停止运行自动挖掘。 -bot.autodig.help.help=获取命令描述。用法:/digbot help <命令名> +bot.autodig.start_delay= {0:0.0} ʼԶھ +bot.autodig.dig_timeout=ھ򷽿鳬ʱԡ +bot.autodig.not_allow=ǰķ鲻ھбС +bot.autodig.cmd=Զھ ChatBot +bot.autodig.available_cmd={0}ʹ /digbot help <> ˽Ϣ +bot.autodig.start=ʼԶھ +bot.autodig.stop=ֹͣԶھ +bot.autodig.help.start=ʼԶھ +bot.autodig.help.stop=ֹͣԶھ +bot.autodig.help.help=ȡ÷/digbot help <> # AutoDrop -bot.autoDrop.cmd=AutoDrop ChatBot命令 -bot.autoDrop.alias=AutoDrop ChatBot命令别名 -bot.autoDrop.on=已启用AutoDrop -bot.autoDrop.off=已禁用AutoDrop -bot.autoDrop.added=已添加物品{0} -bot.autoDrop.incorrect_name=物品名称不正确:{0}。请再试一次。 -bot.autoDrop.removed=已删除物品{0} -bot.autoDrop.not_in_list=物品不在列表中 -bot.autoDrop.no_item=列表中没有物品 -bot.autoDrop.list=列表中总计{0}个物品:\n {1} -bot.autoDrop.switched= 切换到{0}模式。 -bot.autoDrop.unknown_mode=未知模式。可用的模式:Include, Exclude, Everything -bot.autoDrop.no_mode=无法从配置中读取丢弃模式(drop mode)。使用Include模式。 -bot.autoDrop.no_inventory=找不到容器{0}! +bot.autoDrop.cmd=AutoDrop ChatBot +bot.autoDrop.alias=AutoDrop ChatBot +bot.autoDrop.on=AutoDrop +bot.autoDrop.off=ѽAutoDrop +bot.autoDrop.added=Ʒ{0} +bot.autoDrop.incorrect_name=ƷƲȷ{0}һΡ +bot.autoDrop.removed=ɾƷ{0} +bot.autoDrop.not_in_list=Ʒб +bot.autoDrop.no_item=бûƷ +bot.autoDrop.list=бܼ{0}Ʒ\n {1} +bot.autoDrop.switched= л{0}ģʽ +bot.autoDrop.unknown_mode=δ֪ģʽõģʽInclude, Exclude, Everything +bot.autoDrop.no_mode=޷жȡģʽdrop modeʹIncludeģʽ +bot.autoDrop.no_inventory=Ҳ{0}! # AutoFish -bot.autoFish.no_inv_handle=未启用库存(物品)处理。将不支持检查鱼竿耐久度都和自动切换鱼竿。 -bot.autoFish.start=将在 {0:0.0} 秒后自动开始钓鱼。 -bot.autoFish.throw=抛竿成功。 -bot.autoFish.caught=钓到了一条鱼!(总计 {0} 条) -bot.autoFish.caught_at=在 ({0:0.0},{1:0.0},{2:0.0}) 掉到了一条鱼!(总计 {0} 条) -bot.autoFish.no_rod=没有可使用的钓鱼竿了。也许是用坏了或耐久度过低? -bot.autoFish.despawn=鱼钩消失,将会重新抛竿。 -bot.autoFish.fishing_timeout=钓鱼超时,将于几秒钟后重新抛竿。 -bot.autoFish.cast_timeout=抛竿超时,将在等待一段时间后重试。(超时时间延长至 {0:0.0} 秒) -bot.autoFish.update_lookat=更新当前朝向 偏航角(yaw) = {0:0.00}, 俯仰角(pitch) = {1:0.00}。 -bot.autoFish.switch=切换到位于背包 {0} 位置的鱼竿,剩余耐用 {1}/64。 +bot.autoFish.no_inv_handle=δÿ(Ʒ)ּ֧;öȶԶл͡ +bot.autoFish.start= {0:0.0} Զʼ㡣 +bot.autoFish.throw=׸ͳɹ +bot.autoFish.caught=һ!ܼ {0} +bot.autoFish.caught_at= ({0:0.0},{1:0.0},{2:0.0}) һ㣡ܼ {0} +bot.autoFish.no_rod=ûпʹõĵˡҲû˻;öȹͣ +bot.autoFish.despawn=㹳ʧ׸͡ +bot.autoFish.fishing_timeout=㳬ʱڼӺ׸͡ +bot.autoFish.cast_timeout=׸ͳʱڵȴһʱԡʱʱӳ {0:0.0} 룩 +bot.autoFish.update_lookat=µǰ ƫ(yaw) = {0:0.00}, (pitch) = {1:0.00} +bot.autoFish.switch=лλڱ {0} λõͣʣ {1}/64 # AutoRelog -bot.autoRelog.launch=已启动,尝试了{0}次重新连接 -bot.autoRelog.no_kick_msg=在没有kick消息文件的情况下初始化 -bot.autoRelog.loading=从文件{0}加载消息 -bot.autoRelog.loaded=已加载消息:{0} -bot.autoRelog.not_found=找不到文件或目录:{0} -bot.autoRelog.curr_dir=当前目录为:{0} -bot.autoRelog.ignore_user_logout=由用户或MCC bot启动的断开连接。忽略。 -bot.autoRelog.disconnect_msg=连接断开,收到消息:{0} -bot.autoRelog.reconnect_always=忽略kick消息,仍要重新连接。 -bot.autoRelog.reconnect=信息包含 '{0}'。重新连接。 -bot.autoRelog.reconnect_ignore=不包含任何已定义关键字的消息,忽略。 -bot.autoRelog.wait=等待{0}秒后重新连接... +bot.autoRelog.launch={0} +bot.autoRelog.no_kick_msg=ûkickϢļ³ʼ +bot.autoRelog.loading=ļ{0}Ϣ +bot.autoRelog.loaded=ѼϢ{0} +bot.autoRelog.not_found=ҲļĿ¼{0} +bot.autoRelog.curr_dir=ǰĿ¼Ϊ{0} +bot.autoRelog.ignore_user_logout=ûMCC botĶϿӡԡ +bot.autoRelog.disconnect_msg=ӶϿյϢ{0} +bot.autoRelog.reconnect_always=kickϢҪӡ +bot.autoRelog.reconnect=Ϣ '{0}'ӡ +bot.autoRelog.reconnect_ignore=κѶؼֵϢԡ +bot.autoRelog.wait=ȴ{0:0.000}... # AutoRespond -bot.autoRespond.loading=正在从'{0}'加载匹配项 -bot.autoRespond.file_not_found=找不到文件或目录: '{0}' -bot.autoRespond.loaded_match=加载匹配项:\n{0} -bot.autoRespond.no_trigger=这个匹配永远不会触发:\n{0} -bot.autoRespond.no_action=匹配没有对应操作:\n{0} -bot.autoRespond.match_run=进行操作:{0} +bot.autoRespond.loading=ڴ'{0}'ƥ +bot.autoRespond.file_not_found=ҲļĿ¼ '{0}' +bot.autoRespond.loaded_match=ƥ\n{0} +bot.autoRespond.no_trigger=ƥԶᴥ\n{0} +bot.autoRespond.no_action=ƥûжӦ:\n{0} +bot.autoRespond.match_run=в{0} bot.autoRespond.match=match: {0}\nregex: {1}\naction: {2}\nactionPrivate: {3}\nactionOther: {4}\nownersOnly: {5}\ncooldown: {6} # ChatLog -bot.chatLog.invalid_file=路径'{0}'包含无效字符。 +bot.chatLog.invalid_file=·'{0}'Чַ # Mailer -bot.mailer.init=使用设置初始化Mailer: -bot.mailer.init.db= - 数据库文件:{0} -bot.mailer.init.ignore= - 忽略列表:{0} -bot.mailer.init.public= - 公开交互:{0} -bot.mailer.init.max_mails= - 每位玩家最多邮件数:{0} -bot.mailer.init.db_size= - 最大数据库大小:{0} -bot.mailer.init.mail_retention= - 邮件保留天数:{0} +bot.mailer.init=ʹóʼMailer +bot.mailer.init.db= - ݿļ{0} +bot.mailer.init.ignore= - б{0} +bot.mailer.init.public= - {0} +bot.mailer.init.max_mails= - ÿλʼ{0} +bot.mailer.init.db_size= - ݿС{0} +bot.mailer.init.mail_retention= - ʼ{0} -bot.mailer.init_fail.db_size=无法启用Mailer:最大数据库大小必须大于0。请检查设置。 -bot.mailer.init_fail.max_mails=无法启用Mailer:每个玩家的最大邮件数必须大于0。请检查设置。 -bot.mailer.init_fail.mail_retention=无法启用Mailer:邮件保留天数必须大于0。请检查设置。 +bot.mailer.init_fail.db_size=޷MailerݿС0á +bot.mailer.init_fail.max_mails=޷Mailerÿҵʼ0á +bot.mailer.init_fail.mail_retention=޷Mailerʼ0á -bot.mailer.create.db=创建新数据库文件:{0} -bot.mailer.create.ignore=创建新忽略列表:{0} -bot.mailer.load.db=加载数据库文件:{0} -bot.mailer.load.ignore=加载忽略列表: +bot.mailer.create.db=ݿļ{0} +bot.mailer.create.ignore=ºб{0} +bot.mailer.load.db=ݿļ{0} +bot.mailer.load.ignore=غб -bot.mailer.cmd=mailer 命令 +bot.mailer.cmd=mailer -bot.mailer.saving=正在保存邮件:{0} -bot.mailer.user_ignored={0}已被忽略! -bot.mailer.process_mails=正在查找要发送的邮件 @ {0} -bot.mailer.delivered=已发送:{0} +bot.mailer.saving=ڱʼ{0} +bot.mailer.user_ignored={0}ѱ! +bot.mailer.process_mails=ڲҪ͵ʼ @ {0} +bot.mailer.delivered=ѷͣ{0} -bot.mailer.cmd.getmails=--- 数据库中的邮件 ---\n{0} -bot.mailer.cmd.getignored=--- 忽略列表 ---\n{0} -bot.mailer.cmd.ignore.added=添加{0}到忽略列表! -bot.mailer.cmd.ignore.removed={0}已从忽略列表中删除! -bot.mailer.cmd.ignore.invalid=丢失或无效的名称。用法:{0}<用户名> -bot.mailer.cmd.help=查看用法 +bot.mailer.cmd.getmails=--- ݿеʼ ---\n{0} +bot.mailer.cmd.getignored=--- б ---\n{0} +bot.mailer.cmd.ignore.added={0}б +bot.mailer.cmd.ignore.removed={0}ѴӺбɾ +bot.mailer.cmd.ignore.invalid=ʧЧơ÷{0}<û> +bot.mailer.cmd.help=鿴÷ # Maps -bot.map.cmd.desc=渲染物品形式的地图 -bot.map.cmd.not_found=没有找到编号为 '{0}' 的地图! -bot.map.cmd.invalid_id=无效的地图编号,必须是一个数字。 -bot.map.received=从服务器接收到的地图有: -bot.map.no_maps=没有收到过地图! -bot.map.received_map=收到一个编号为 {0} 的新地图。 -bot.map.rendered=成功接收到地图 '{0}' ,保存为 '{1}' -bot.map.failed_to_render=无法渲染编号为 '{0}' 的地图。 -bot.map.list_item=- 地图编号:{0}(最近更新于:{1}) -bot.map.windows_only=保存地图到文件功能目前仅可用于Windows平台。 +bot.map.cmd.desc=ȾƷʽĵͼ +bot.map.cmd.not_found=ûҵΪ '{0}' ĵͼ +bot.map.cmd.invalid_id=Чĵͼţһ֡ +bot.map.received=ӷյĵͼУ +bot.map.no_maps=ûյͼ +bot.map.received_map=յһΪ {0} µͼ +bot.map.rendered=ɹյͼ '{0}' Ϊ '{1}' +bot.map.failed_to_render=޷ȾΪ '{0}' ĵͼ +bot.map.list_item=- ͼţ{0}ڣ{1} +bot.map.scale=ڵǰն˳ߴƣͼС ({0}x{1}) СΪ ({2}x{3}) # ReplayCapture -bot.replayCapture.cmd=replay 命令 -bot.replayCapture.created=已创建重播文件。 -bot.replayCapture.stopped=录制已停止。 -bot.replayCapture.restart=录制已停止。请重新启动程序以进行另一段录制。 +bot.replayCapture.cmd=replay +bot.replayCapture.created=Ѵزļ +bot.replayCapture.stopped=¼ֹͣ +bot.replayCapture.restart=¼ֹͣԽһ¼ơ # Follow player -cmd.follow.desc=让机器人跟随指定的玩家 -cmd.follow.usage=follow [-f] (使用 -f 允许机器人途径不安全的地方) -cmd.follow.already_stopped=已经停止过了 -cmd.follow.stopping=已停止! -cmd.follow.invalid_name=提供的玩家名无效! -cmd.follow.invalid_player=指定的玩家没有上线或距离太远! -cmd.follow.cant_reach_player=无法寻路到该玩家,有可能他在没有加载的区块中,或是距离太远,也有可能是间隙或水体等障碍使机器人无法到达。 -cmd.follow.already_following=已经在跟随 {0} 了! -cmd.follow.switched=切换为跟随 {0}! -cmd.follow.started=开始跟随 {0}! -cmd.follow.unsafe_enabled=启用了允许途径不安全位置(注意:机器人可能会受伤或死亡!) -cmd.follow.note=注意:此机器人的速度很慢,你需要慢慢地走,而且要保持很近的距离,这样它才能跟上,有点像拿着食物让动物跟着你。这是由于寻路算法的限制,我们正在努力改进它。 -cmd.follow.player_came_to_the_range=玩家 {0} 回到了可寻路范围之内! -cmd.follow.resuming=继续跟随! -cmd.follow.player_left_the_range=玩家 {0} 离开了可寻路范围! -cmd.follow.pausing=已暂停! -cmd.follow.player_left=玩家 {0} 离开了服务器! -cmd.follow.stopping=已停止! +cmd.follow.desc=û˸ָ +cmd.follow.usage=follow [-f] (ʹ -f ;ȫĵط) +cmd.follow.already_stopped=Ѿֹͣ +cmd.follow.stopping=ֹͣ +cmd.follow.invalid_name=ṩЧ +cmd.follow.invalid_player=ָû߻̫Զ +cmd.follow.cant_reach_player=޷Ѱ·ңпûмصУǾ̫ԶҲпǼ϶ˮϰʹ޷ +cmd.follow.already_following=Ѿڸ {0} ˣ +cmd.follow.switched=лΪ {0} +cmd.follow.started=ʼ {0} +cmd.follow.unsafe_enabled=;ȫλãע⣺˿ܻ˻ +cmd.follow.note=ע⣺˻˵ٶȺҪߣҪֺܽľ룬ܸϣеʳö㡣Ѱ·㷨ƣŬĽ +cmd.follow.player_came_to_the_range= {0} ص˿Ѱ·Χ֮ڣ +cmd.follow.resuming=棡 +cmd.follow.player_left_the_range= {0} 뿪˿Ѱ·Χ +cmd.follow.pausing=ͣ +cmd.follow.player_left= {0} 뿪˷ +cmd.follow.stopping=ֹͣ # Script -bot.script.not_found=§8[MCC] [{0}] 找不到脚本文件:{1} -bot.script.file_not_found=找不到文件:'{0}' -bot.script.fail=脚本'{0}'运行失败 ({1})。 -bot.script.pm.loaded=脚本'{0}'加载。 +bot.script.not_found=8[MCC] [{0}] Ҳűļ{1} +bot.script.file_not_found=Ҳļ'{0}' +bot.script.fail=ű'{0}'ʧ ({1}) +bot.script.pm.loaded=ű'{0}'ء # ScriptScheduler -bot.scriptScheduler.loaded_task=已加载任务:\n{0} -bot.scriptScheduler.no_trigger=这个任务永远不会触发:\n{0} -bot.scriptScheduler.no_action=任务没有对应操作:\n{0} -bot.scriptScheduler.running_time=时间 / 运行中的操作:{0} -bot.scriptScheduler.running_inverval=间隔 / 运行中的操作:{0} -bot.scriptScheduler.running_login=登录 / 运行中的操作:{0} +bot.scriptScheduler.loaded_task=Ѽ\n{0} +bot.scriptScheduler.no_trigger=Զᴥ\n{0} +bot.scriptScheduler.no_action=ûжӦ\n{0} +bot.scriptScheduler.running_time=ʱ / еIJ{0} +bot.scriptScheduler.running_inverval= / еIJ{0} +bot.scriptScheduler.running_login=¼ / еIJ{0} bot.scriptScheduler.task=triggeronfirstlogin: {0}\n triggeronlogin: {1}\n triggerontime: {2}\n triggeroninterval: {3}\n timevalue: {4}\n timeinterval: {5}\n action: {6} # TestBot -bot.testBot.told=Bot:{0}对我说:{1} -bot.testBot.said=Bot:{0}说:{1} +bot.testBot.told=Bot{0}˵{1} +bot.testBot.said=Bot{0}˵{1} [config] -config.load=已从 {0} 加载设置。 -config.load.fail=§c加载设置时出错:§r -config.write.fail=§保存备份文件({0})时出错:§r -config.backup.fail=§c写入设置文件({0})时出错:§r -config.saving=§a当前设置已保存至 {0} +config.load=Ѵ {0} á +config.load.fail=cʱr +config.write.fail=챣汸ļ{0}ʱr +config.backup.fail=cдļ{0}ʱr +config.saving=aǰѱ {0} # Head -config.Head=启动配置文件\n\n# 对 MCC(Minecraft 命令行客户端)不熟悉?请看这个文档:https://mccteam.github.io/guide/configuration.html\n\n# 想升级到较新的版本吗?请访问 https://github.com/MCCTeam/Minecraft-Console-Client/#download +config.Head=ļ\n\n# MCCMinecraft пͻˣϤ뿴ĵhttps://mccteam.github.io/guide/configuration.html\n\n# µİ汾 https://github.com/MCCTeam/Minecraft-Console-Client/#download # Main.General -config.Main.General.account=Login请填写邮箱或玩家名称。若要以离线模式登录请使用"-"作为密码。若留空则使用交互式登录。 -config.Main.General.login=游戏服务器的地址和端口,可填入域名或IP地址。(可删除端口字段,会自动解析SRV记录) -config.Main.General.server_info=帐户类型:mojang 或是 microsoft。此项设置也会影响交互式登录。 -config.Main.General.method=微软账户的登录方式:mcc 或是 browser(手动在网页上登录)。 +config.Main.General.account=LoginдơҪģʽ¼ʹ"-"Ϊ롣ʹýʽ¼ +config.Main.General.login=ϷĵַͶ˿ڣIPַɾ˿ֶΣԶSRV¼ +config.Main.General.server_info=ʻͣmojang microsoftҲӰ콻ʽ¼ +config.Main.General.method=΢˻ĵ¼ʽmcc browserֶҳϵ¼ # Main.Advanced -config.Main.Advanced=在更改这里的某项设置之前,请确保你理解了该选项的影响。 -config.Main.Advanced.language=请使用Minecraft的语言代码填写,详见 https://github.com/MCCTeam/Minecraft-Console-Client/discussions/2239 -config.Main.Advanced.internal_cmd_char=MCC内部命令的前缀,可使用 "none", "slash"(/) 或 "backslash"(\)。 -config.Main.Advanced.message_cooldown=控制向服务器发送消息的最小间隔时间(秒)。 -config.Main.Advanced.bot_owners=设置机器人的所有者。/!\服务器管理员可以伪装成任何玩家! -config.Main.Advanced.mc_version=游戏版本,可使用 "auto"(自动) 或类似 "1.X.X" 的值。设定具体版本将跳过从服务器解析的过程。 -config.Main.Advanced.mc_forge=可使用 "auto"(自动),"no"(禁用) 或是 "force"(强制启用,仅在 1.13 及更高的版本中可用)。 -config.Main.Advanced.brand_info=客户端标识,可用 "mcc","vanilla"(原版客户端) 或 "none"(空标识)。这用于改变MCC向服务器发送的客户端标识内容。 -config.Main.Advanced.chatbot_log_file=留空将禁用 ChatBot 写入日志文件。 -config.Main.Advanced.private_msgs_cmd_name=远程控制功能将会使用它。 -config.Main.Advanced.show_system_messages=显示游戏服务器的系统消息(来自管理员或命令方块等)。 -config.Main.Advanced.show_xpbar_messages=显示经验条上方的消息,如果被此类消息刷屏请禁用此选项。 -config.Main.Advanced.show_chat_links=解码聊天信息里的链接,并在控制台单独显示。 -config.Main.Advanced.show_inventory_layout=以字符画形式显示库存布局。 -config.Main.Advanced.terrain_and_movements=开启地形处理将消耗更多的内存、CPU和网络带宽,但这允许你进行移动以及和方块交互。 -config.Main.Advanced.inventory_handling=启用库存处理(可操作背包、箱子等容器)。 -config.Main.Advanced.entity_handling=启用实体处理。 -config.Main.Advanced.session_cache=如何缓存会话令牌。可使用 "none"(不缓存),"memory"(内存缓存) 或 "disk"(磁盘缓存)。 -config.Main.Advanced.profilekey_cache=如何缓存聊天签名密钥。可使用 "none"(不缓存),"memory"(内存缓存) 或 "disk"(磁盘缓存)。 -config.Main.Advanced.resolve_srv_records=可填写 "no","fast"(超时时间为五秒钟)或是 "yes"。加入某些服务器需要开启此项。 -config.Main.Advanced.account_list=AccountList:使你可以不用输入账号信息而快速在多个账号间切换\n# 可用命令示例:"/tell reco Player2","/connect Player1" -config.Main.Advanced.server_list=ServerList:可用使用服务器别名快速连接到该服务器\n# 别名不能包含空格和小数点",而且 "localhost" 不能作为别名使用。\n# 可用命令示例:"/tell connect Server1","/connect Server2" -config.Main.Advanced.player_head_icon=使用玩家皮肤头像作为窗口图标,这仅在部分旧版控制台中有效。 -config.Main.Advanced.exit_on_failure=发生错误时是否直接退出,用于在非交互式脚本中使用MCC。 -config.Main.Advanced.script_cache=缓存已编译的脚本,以便在低端设备上更快的加载。 -config.Main.Advanced.timestamps=在聊天信息头部添加时间戳。 -config.Main.Advanced.auto_respawn=死亡时自动重生(开启前请确保你的出生点是安全的) -config.Main.Advanced.minecraft_realms=启用对加入我的世界领域(Realms)服务器的支持。 -config.Main.Advanced.move_head_while_walking=在移动时转向头部。 -config.Main.Advanced.timeout=与服务器的TCP连接超时时间(秒)。 -config.Main.Advanced.enable_emoji=如果关闭,Emoji表情符号将被替换成更简单的字符(用于 "/chunk status" 命令) -config.Main.Advanced.movement_speed=高于 2 的移动速度可能会被检测为作弊。 -config.Main.Advanced.language.invaild=无效的语言代码! +config.Main.Advanced=ڸij֮ǰȷ˸ѡӰ졣 +config.Main.Advanced.language=ʹMinecraftԴд https://github.com/MCCTeam/Minecraft-Console-Client/discussions/2239 +config.Main.Advanced.internal_cmd_char=MCCڲǰ׺ʹ "none", "slash"(/) "backslash"(\) +config.Main.Advanced.message_cooldown=ϢСʱ䣨룩 +config.Main.Advanced.bot_owners=û˵ߡ/!\Աαװκ! +config.Main.Advanced.mc_version=Ϸ汾ʹ "auto"(Զ) "1.X.X" ֵ趨汾ӷĹ̡ +config.Main.Advanced.mc_forge=ʹ "auto"(Զ)"no"() "force"(ǿã 1.13 ߵİ汾п) +config.Main.Advanced.brand_info=ͻ˱ʶ "mcc""vanilla"(ԭͻ) "none"(ձʶ)ڸıMCC͵Ŀͻ˱ʶݡ +config.Main.Advanced.chatbot_log_file=ս ChatBot д־ļ +config.Main.Advanced.private_msgs_cmd_name=Զ̿ƹܽʹ +config.Main.Advanced.show_system_messages=ʾϷϵͳϢԹԱȣ +config.Main.Advanced.show_xpbar_messages=ʾϷϢϢˢôѡ +config.Main.Advanced.show_chat_links=Ϣӣڿ̨ʾ +config.Main.Advanced.show_inventory_layout=ַʽʾ沼֡ +config.Main.Advanced.terrain_and_movements=δĸڴ桢CPUƶԼͷ齻 +config.Main.Advanced.inventory_handling=ÿ洦ɲӵ +config.Main.Advanced.entity_handling=ʵ崦 +config.Main.Advanced.session_cache=λỰơʹ "none"()"memory"(ڴ滺) "disk"(̻) +config.Main.Advanced.profilekey_cache=λǩԿʹ "none"()"memory"(ڴ滺) "disk"(̻) +config.Main.Advanced.resolve_srv_records=д "no""fast"ʱʱΪӣ "yes"ijЩҪ +config.Main.Advanced.account_list=AccountListʹԲ˺Ϣڶ˺żл\n# ʾ"/tell reco Player2""/connect Player1" +config.Main.Advanced.server_list=ServerListʹ÷ӵ÷\n# ܰոС" "localhost" Ϊʹá\n# ʾ"/tell connect Server1""/connect Server2" +config.Main.Advanced.player_head_icon=ʹƤͷΪͼ꣬ڲ־ɰ̨Ч +config.Main.Advanced.exit_on_failure=ʱǷֱ˳ڷǽʽűʹMCC +config.Main.Advanced.script_cache=ѱĽűԱڵͶ豸ϸļء +config.Main.Advanced.timestamps=Ϣͷʱ +config.Main.Advanced.auto_respawn=ʱԶǰȷijǰȫģ +config.Main.Advanced.minecraft_realms=öԼҵ(Realms)֧֡ +config.Main.Advanced.move_head_while_walking=ƶʱתͷ +config.Main.Advanced.timeout=TCPӳʱʱ䣨룩 +config.Main.Advanced.enable_emoji=رգEmojiŽ滻ɸ򵥵ַ "/chunk status"  +config.Main.Advanced.movement_speed= 2 ƶٶȿܻᱻΪס +config.Main.Advanced.language.invaild=ЧԴ룡 +config.Main.Advanced.TerminalColorDepth=д "none""bit_4""bit_8" "bit_24"ͨģʽµ־ֵ֧ɫȡ +config.Main.Advanced.MinTerminalWidth=ʹն˿ʾͼСʱСȡ +config.Main.Advanced.MinTerminalHeight=ʹն˸߶ʾͼСʱС߶ȡ # Signature -config.Signature=聊天签名相关设置(影响1.19及以上版本) -config.Signature.LoginWithSecureProfile=仅微软账户可用。如禁用此项,将无法签名消息和进入某些的服务器。 -config.Signature.SignChat=是否签名发送的聊天消息。 -config.Signature.SignMessageInCommand=是否签名指令中的消息。例如"/msg"和"/me"中的消息。 -config.Signature.MarkLegallySignedMsg=是否使用绿色色块标识拥有合法签名的聊天。 -config.Signature.MarkModifiedMsg=是否使用黄色色块标识被服务器更改过的聊天。 -config.Signature.MarkIllegallySignedMsg=是否使用红色色块标识没有合法签名的聊天。 -config.Signature.MarkSystemMessage=是否使用灰色色块标识系统消息(它们总是不会被签名)。 -config.Signature.ShowModifiedChat=设置为 true,显示被服务器修改过的信息;设置为 false,显示经过签名的原始信息。 -config.Signature.ShowIllegalSignedChat=是否显示没有被正确签名的聊天消息。 +config.Signature=ǩãӰ1.19ϰ汾 +config.Signature.LoginWithSecureProfile=΢˻áô޷ǩϢͽijЩķ +config.Signature.SignChat=Ƿǩ͵Ϣ +config.Signature.SignMessageInCommand=ǷǩָеϢ"/msg""/me"еϢ +config.Signature.MarkLegallySignedMsg=ǷʹɫɫʶӵкϷǩ졣 +config.Signature.MarkModifiedMsg=ǷʹûɫɫʶĹ졣 +config.Signature.MarkIllegallySignedMsg=ǷʹúɫɫʶûкϷǩ졣 +config.Signature.MarkSystemMessage=ǷʹûɫɫʶϵͳϢDzᱻǩ +config.Signature.ShowModifiedChat=Ϊ trueʾ޸ĹϢΪ falseʾǩԭʼϢ +config.Signature.ShowIllegalSignedChat=ǷʾûбȷǩϢ # Logging -config.Logging=此项设置仅会影响到控制台中的信息(日志)。 -config.Logging.DebugMessages=请在提交错误报告之前先启用此项。谢谢! -config.Logging.ChatMessages=是否显示来自服务器的聊天消息。 -config.Logging.InfoMessages=信息性的消息。(大部分来自MCC内部) -config.Logging.WarningMessages=显示警告消息。 -config.Logging.ErrorMessages=显示错误消息。 -config.Logging.ChatFilter=过滤聊天消息所用的正则表达式。 -config.Logging.DebugFilter=过滤调试消息所用的正则表达式。 -config.Logging.FilterMode=过滤方式:"disable"(禁用),"blacklist"(隐藏匹配的消息) 或 "whitelist"(仅显示匹配的消息) -config.Logging.LogToFile=是否将日志信息写入到文件。 -config.Logging.LogFile=日志文件名称。 -config.Logging.PrependTimestamp=写入日志文件时是否添加时间戳。 -config.Logging.SaveColorCodes=是否保留消息中的颜色字符。(例如"§b") +config.Logging=ýӰ쵽̨еϢ־ +config.Logging.DebugMessages=ύ󱨸֮ǰôлл +config.Logging.ChatMessages=ǷʾԷϢ +config.Logging.InfoMessages=ϢԵϢ󲿷MCCڲ +config.Logging.WarningMessages=ʾϢ +config.Logging.ErrorMessages=ʾϢ +config.Logging.ChatFilter=Ϣõʽ +config.Logging.DebugFilter=˵Ϣõʽ +config.Logging.FilterMode=˷ʽ"disable"ã"blacklist"ƥϢ "whitelist"ʾƥϢ +config.Logging.LogToFile=Ƿ־Ϣд뵽ļ +config.Logging.LogFile=־ļơ +config.Logging.PrependTimestamp=д־ļʱǷʱ +config.Logging.SaveColorCodes=ǷϢеɫַ"b" # AppVars -config.AppVars.Variables=可以在某些字段中以"%yourvar%"的形式使用。\n# %username% 和 %serverip% 时保留的变量名。 +config.AppVars.Variables=ijЩֶ"%yourvar%"ʽʹá\n# %username% %serverip% ʱı # Proxy -config.Proxy=通过代理连接到服务器。\n# 如果Mojang/微软登录服务被防火墙阻断,设置Enabled_Login=true以使用代理进行登录。\n# 如果到Minecraft游戏服务器的连接被防火墙阻止,设置Enabled_Ingame=true以使用代理连接游戏服务器。\n# /!\ 在启用代理前,请确保你的服务器规则允许使用代理或VPN,否则你可能面临被封禁等风险! -config.Proxy.Enabled_Login=是否使用代理连接Mojang或微软的登录服务器。 -config.Proxy.Enabled_Ingame=是否通过代理连接Minecraft游戏服务器。 -config.Proxy.Server=代理服务器必须允许HTTPS登录。 -config.Proxy.Proxy_Type=支持的代理类型:"HTTP","SOCKS4","SOCKS4a","SOCKS5"。 -config.Proxy.Username=只有连接到受密码保护的代理才需要。 -config.Proxy.Password=只有连接到受密码保护的代理才需要。 +config.Proxy=ͨӵ\n# Mojang/΢¼񱻷ǽϣEnabled_Login=trueʹôе¼\n# MinecraftϷӱǽֹEnabled_Ingame=trueʹôϷ\n# /!\ ôǰȷķʹôVPNٱȷգ +config.Proxy.Enabled_Login=ǷʹôMojang΢ĵ¼ +config.Proxy.Enabled_Ingame=ǷͨMinecraftϷ +config.Proxy.Server=HTTPS¼ +config.Proxy.Proxy_Type=ֵ֧Ĵͣ"HTTP""SOCKS4""SOCKS4a""SOCKS5" +config.Proxy.Username=ֻӵ뱣ĴҪ +config.Proxy.Password=ֻӵ뱣ĴҪ # ChatFormat -config.ChatFormat=MCC会尽力检测聊天信息,但有些服务器有不寻常的聊天格式\n# 当这种情况发生时,你需要在下面自定义匹配聊天所用的正则表达式,详见 https://mccteam.github.io/guide/configuration.html#chat-format -config.ChatFormat.Builtins=是否启用MCC内置的聊天检测规则。设置为 false 以避免与自定义格式冲突。 -config.ChatFormat.UserDefined=是否启用下方的自定义正则表达式进行聊天检测。 +config.ChatFormat=MCCᾡϢЩвѰʽ\n# ʱҪԶƥõʽ https://mccteam.github.io/guide/configuration.html#chat-format +config.ChatFormat.Builtins=ǷMCCõΪ false ԱԶʽͻ +config.ChatFormat.UserDefined=Ƿ·Զʽ⡣ # MCSettings -config.MCSettings=下面的设置将会被发送到游戏服务器,只影响一些服务器端的东西,比如你的皮肤。 -config.MCSettings.Enabled=如果禁用,下面的设置就不会被发送到服务器上。 -config.MCSettings.Locale=请使用Minecraft的语言代码填写,详见[Main.Advanced.Language] -config.MCSettings.RenderDistance=渲染距离,取值范围[0 - 255]。 -config.MCSettings.Difficulty=Minecraft 1.7及更早版本难度。"peaceful","easy","normal","difficult"。 -config.MCSettings.ChatMode=使用 "enabled"(完全启用聊天)、"commands"(仅限命令)或 "disabled"(完全禁用聊天)。这允许你禁言自己... -config.MCSettings.ChatColors=这允许你在服务器端禁用聊天颜色。 -config.MCSettings.MainHand=在1.9及更高版本中的主手设置。"left"(左手) 或 "right"(右手)。 +config.MCSettings=ýᱻ͵ϷֻӰһЩ˵ĶƤ +config.MCSettings.Enabled=ãþͲᱻ͵ϡ +config.MCSettings.Locale=ʹMinecraftԴд[Main.Advanced.Language] +config.MCSettings.RenderDistance=Ⱦ룬ȡֵΧ[0 - 255] +config.MCSettings.Difficulty=Minecraft 1.7汾Ѷȡ"peaceful""easy""normal""difficult" +config.MCSettings.ChatMode=ʹ "enabled"ȫ죩"commands" "disabled"ȫ죩Լ... +config.MCSettings.ChatColors=ڷ˽ɫ +config.MCSettings.MainHand=1.9߰汾еá"left"֣ "right"֣ # ChatBot config.ChatBot================================ #\n# Minecraft Console Client Bots #\n# =============================== # # ChatBot.Alerts -config.ChatBot.Alerts=当检测到特定聊天消息或特定事件发生时提醒你\n # 对检测特定玩家的聊天消息很有用。 -config.ChatBot.Alerts.Beep_Enabled=除了高亮显示外,当检测到一个词时还会播放类似蜂鸣器的哔哔声。 -config.ChatBot.Alerts.Trigger_By_Words=在收到指定的关键词后触发提醒。 -config.ChatBot.Alerts.Trigger_By_Rain=在开始下雨和停止下雨时触发提醒。 -config.ChatBot.Alerts.Trigger_By_Thunderstorm=在雷暴天气的开始与结束触发提醒。 -config.ChatBot.Alerts.Matches=触发提醒的聊天关键词列表。 -config.ChatBot.Alerts.Excludes=出现这些关键词后该条消息一定不触发提醒。 -config.ChatBot.Alerts.Log_To_File=是否将提醒消息写入到日志文件。 -config.ChatBot.Alerts.Log_File=日志文件的路径。 +config.ChatBot.Alerts=⵽ضϢض¼ʱ\n # ԼضҵϢá +config.ChatBot.Alerts.Beep_Enabled=˸ʾ⣬⵽һʱᲥƷ +config.ChatBot.Alerts.Trigger_By_Words=յָĹؼʺ󴥷ѡ +config.ChatBot.Alerts.Trigger_By_Rain=ڿʼֹͣʱѡ +config.ChatBot.Alerts.Trigger_By_Thunderstorm=ױĿʼѡ +config.ChatBot.Alerts.Matches=ѵؼб +config.ChatBot.Alerts.Excludes=ЩؼʺϢһѡ +config.ChatBot.Alerts.Log_To_File=ǷϢд뵽־ļ +config.ChatBot.Alerts.Log_File=־ļ· # ChatBot.AntiAFK -config.ChatBot.AntiAfk=定期发送命令,或让机器人随机走动,以避免检测到挂机后被踢出服务器\n # /!\启用前请确保你的服务器规则不禁止反AFK机制!\n# /!\如果启用随机移动,请将机器人围在围栏里,以防走失!(建议尺寸5x5x5) -config.ChatBot.AntiAfk.Delay=执行操作的间隔时间。(秒) -config.ChatBot.AntiAfk.Command=发送给服务器的指令。 -config.ChatBot.AntiAfk.Use_Sneak=在发送命令时是否蹲下。 -config.ChatBot.AntiAfk.Use_Terrain_Handling=启用地形处理,以使机器人能够四处移动。 -config.ChatBot.AntiAfk.Walk_Range=机器人可以随机移动的范围(注意:范围越大,速度越慢) -config.ChatBot.AntiAfk.Walk_Retries=尝试移动失败几次后在改为发送命令模式。 +config.ChatBot.AntiAfk=ڷû߶Ա⵽һ߳\n # /!\ǰȷķ򲻽ֹAFKƣ\n# /!\ƶ뽫ΧΧԷʧߴ5x5x5 +config.ChatBot.AntiAfk.Delay=ִвļʱ䡣룩 +config.ChatBot.AntiAfk.Command=͸ָ +config.ChatBot.AntiAfk.Use_Sneak=ڷʱǷ¡ +config.ChatBot.AntiAfk.Use_Terrain_Handling=õδʹܹĴƶ +config.ChatBot.AntiAfk.Walk_Range=˿ƶķΧע⣺ΧԽٶԽ +config.ChatBot.AntiAfk.Walk_Retries=ƶʧܼκڸΪģʽ # ChatBot.AutoAttack -config.ChatBot.AutoAttack=自动攻击周围的生物\n# 使用此功能之前,你需要开启实体处理。\n# /!\确保你的服务器允许使用自动攻击。\n# /!\服务器插件可能会认为此功能时作弊,并可能会封禁你的账号,所以请自己检查服务器规则是否允许。 -config.ChatBot.AutoAttack.Mode="single"(单目标) 或 "multi"(多目标)。一次攻击一个生物还是范围内的所有生物。 -config.ChatBot.AutoAttack.Priority="health"(生命值)或 "distance"(距离)。当使用"single"模式时,以哪一个属性确定优先级。 -config.ChatBot.AutoAttack.Cooldown_Time=每次攻击间的冷却时间,设置 "Custom = false" 以让MCC自动计算攻击速度。 -config.ChatBot.AutoAttack.Interaction=可选项:"Interact"(交互),"Attack"(攻击) 或 "InteractAt"(交互并攻击) -config.ChatBot.AutoAttack.Attack_Hostile=是否攻击敌对生物。 -config.ChatBot.AutoAttack.Attack_Passive=是否攻击被动生物。 -config.ChatBot.AutoAttack.List_Mode=将实体列表作为 "whitelist"(白名单)还是 "blacklist"(黑名单)。 -config.ChatBot.AutoAttack.Entites_List=所有可用的实体类型可以在这里找到:https://bit.ly/3Rg68lp +config.ChatBot.AutoAttack=ԶΧ\n# ʹô˹֮ǰҪʵ崦\n# /!\ȷķʹԶ\n# /!\ܻΪ˹ʱףܻ˺ţԼǷ +config.ChatBot.AutoAttack.Mode="single"Ŀ꣩ "multi"Ŀ꣩һιһﻹǷΧڵ +config.ChatBot.AutoAttack.Priority="health"ֵ "distance"룩ʹ"single"ģʽʱһȷȼ +config.ChatBot.AutoAttack.Cooldown_Time=ÿιȴʱ䣬 "Custom = false" MCCԶ㹥ٶȡ +config.ChatBot.AutoAttack.Interaction=ѡ"Interact""Attack" "InteractAt" +config.ChatBot.AutoAttack.Attack_Hostile=Ƿ񹥻ж +config.ChatBot.AutoAttack.Attack_Passive=Ƿ񹥻 +config.ChatBot.AutoAttack.List_Mode=ʵбΪ "whitelist" "blacklist" +config.ChatBot.AutoAttack.Entites_List=пõʵͿҵhttps://bit.ly/3Rg68lp # ChatBot.AutoCraft -config.ChatBot.AutoCraft=自动使用背包中的物品进行合成。\n# 请看 https://mccteam.github.io/guide/chat-bots.html#auto-craft\n# 你需要启用库存处理来使用这个功能\n# 如果需要使用工作台,你还需要启用地形处理。 -config.ChatBot.AutoCraft.CraftingTable=如果你打算使用工作台,请填写它所在的位置。(需要启用地形处理) -config.ChatBot.AutoCraft.OnFailure=合成失败时应该怎么处理,"abort"(中止)或 "wait"(等待)。 -config.ChatBot.AutoCraft.Recipes=Recipes.Name:给该配方起一个独一无二的名字。(不能包含空白字符)Recipes.Type:合成类型,"player"(背包2x2)或 "table"(工作台3x3)\n# Recipes.Result:合成的目标物品\n# Recipes.Slots:合成的物品摆放方式,以从左到右、从上到下的格式填写。需留空请填写"Null"。\n# 最新的物品命名请看:https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Inventory/ItemType.cs +config.ChatBot.AutoCraft=ԶʹñеƷкϳɡ\n# 뿴 https://mccteam.github.io/guide/chat-bots.html#auto-craft\n# Ҫÿ洦ʹ\n# Ҫʹų̀㻹Ҫõδ +config.ChatBot.AutoCraft.CraftingTable=ʹų̀дڵλáҪõδ +config.ChatBot.AutoCraft.OnFailure=ϳʧʱӦô"abort"ֹ "wait"ȴ +config.ChatBot.AutoCraft.Recipes=Recipes.Name䷽һһ޶֡ܰհַRecipes.Typeϳͣ"player"2x2 "table"̨3x3\n# Recipes.ResultϳɵĿƷ\n# Recipes.SlotsϳɵƷڷŷʽԴҡϵµĸʽдд"Null"\n# µƷ뿴https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Inventory/ItemType.cs # AutoDig -config.ChatBot.AutoDig=自动挖掘方块。\n# 你可以使用 "/digbot start" 和 "/digbot stop" 指令来控制 AutoDig 的启停。\n# 由于MCC目前还不支持精确计算方块的碰撞体积,在获取看向的方块时,视线上所有的方块都被看作是完整的立方体。\n# 查询方块的名字,请访问 https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Mapping/Material.cs -config.ChatBot.AutoDig.Auto_Tool_Switch=自动切换到合适的工具。 -config.ChatBot.AutoDig.Durability_Limit=不会使用低于此耐久度的工具。(需要启用库存处理) -config.ChatBot.AutoDig.Drop_Low_Durability_Tools=在当前使用的工具耐久度过低后,是否丢掉它。 -config.ChatBot.AutoDig.Mode="lookat","fixedpos" 或 "both"。挖掘看向的方块还是固定位置的方块,或者是两个条件都满足的方块。 -config.ChatBot.AutoDig.Locations=使用 "fixedpos" 或 "both" 模式时,方块的坐标。 -config.ChatBot.AutoDig.Location_Order="distance" 或 "index",当使用 "fixedpos" 模式时,按照到玩家的距离,还是列表中的顺序确定挖掘的方块。 -config.ChatBot.AutoDig.Auto_Start_Delay=进入游戏后等待多少秒后开始自动挖掘,设置为-1禁用自动开始。 -config.ChatBot.AutoDig.Dig_Timeout=若挖掘一个方块用时超过这个值,将会重新获取目标进行挖掘。 -config.ChatBot.AutoDig.Log_Block_Dig=是否输出挖掘方块的相关信息。 -config.ChatBot.AutoDig.List_Type=将方块列表作为 "whitelist"(白名单)还是 "blacklist"(黑名单)。 +config.ChatBot.AutoDig=Զھ򷽿顣\n# Ҫõδʹܡ\n# ʹ "/digbot start" "/digbot stop" ָ AutoDig ͣ\n# MCCĿǰ֧־ȷ㷽ײڻȡķʱеķ鶼塣\n# ѯ֣ https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Mapping/Material.cs +config.ChatBot.AutoDig.Auto_Tool_Switch=ԶлʵĹߡ +config.ChatBot.AutoDig.Durability_Limit=ʹõڴ;öȵĹߡҪÿ洦 +config.ChatBot.AutoDig.Drop_Low_Durability_Tools=ڵǰʹõĹ;öȹͺǷ񶪵 +config.ChatBot.AutoDig.Mode="lookat""fixedpos" "both"ھķ黹ǹ̶λõķ飬ķ顣 +config.ChatBot.AutoDig.Locations=ʹ "fixedpos" "both" ģʽʱꡣ +config.ChatBot.AutoDig.Location_Order="distance" "index"ʹ "fixedpos" ģʽʱյҵľ룬бе˳ȷھķ顣 +config.ChatBot.AutoDig.Auto_Start_Delay=ϷȴʼԶھΪ-1Զʼ +config.ChatBot.AutoDig.Dig_Timeout=ھһʱֵ»ȡĿھ +config.ChatBot.AutoDig.Log_Block_Dig=Ƿھ򷽿Ϣ +config.ChatBot.AutoDig.List_Type=бΪ "whitelist" "blacklist" # ChatBot.AutoDrop -config.ChatBot.AutoDrop=自动从背包/库存中丢弃指定的物品\n# 你需要启用库存处理来使用这个功能。\n# 可用物品请看 https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Inventory/ItemType.cs -config.ChatBot.AutoDrop.Mode="include"(丢弃列表中的物品),"exclude"(丢弃列表外的所有物品) 或 "everything"(丢弃所有物品) +config.ChatBot.AutoDrop=Զӱ/жָƷ\n# Ҫÿ洦ʹܡ\n# Ʒ뿴 https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Inventory/ItemType.cs +config.ChatBot.AutoDrop.Mode="include"беƷ"exclude"бƷ "everything"Ʒ # ChatBot.AutoEat -config.ChatBot.AutoEat=在饱食度较低是自动在背包中寻找食物食用。\n# 你需要启用库存处理来使用这个功能。 +config.ChatBot.AutoEat=ڱʳȽϵԶڱѰʳʳá\n# Ҫÿ洦ʹܡ # ChatBot.AutoFishing -config.ChatBot.AutoFishing=使用鱼竿自动钓鱼。指南:https://mccteam.github.io/guide/chat-bots.html#auto-fishingn# /!\ 启用前请确保服务器允许自动钓鱼。 -config.ChatBot.AutoFishing.Antidespawn=如果你之前没有启用过这个选项,请保持它为 false 。 -config.ChatBot.AutoFishing.Mainhand=使用主手还是副手拿鱼竿。 -config.ChatBot.AutoFishing.Auto_Start=是否在进入服务器后自动开始钓鱼,禁用此功能后,你需要使用"/usehand"手动使用鱼竿一次。 -config.ChatBot.AutoFishing.Cast_Delay=钓到鱼后多久开始下一次钓鱼(抛竿)。 -config.ChatBot.AutoFishing.Fishing_Delay=进入服务器后多久后开始自动钓鱼。(秒) -config.ChatBot.AutoFishing.Fishing_Timeout=多少秒后没有钓到鱼视为超时。超时后会重新抛竿。 -config.ChatBot.AutoFishing.Durability_Limit=不会使用低于此耐久度的鱼竿(鱼竿耐久度最高为64)。(需要启用库存处理) -config.ChatBot.AutoFishing.Auto_Rod_Switch=在当前鱼竿不可用后自动切换到背包中的其他鱼竿。(需要启用库存处理) -config.ChatBot.AutoFishing.Stationary_Threshold=鱼钩在X轴和Z轴方向上的移动小于这个值将被认为是静止的,过高的阈值会在抛竿途中触发收竿。 -config.ChatBot.AutoFishing.Hook_Threshold=一个“静止”的鱼钩,在Y轴方向上的移动超过这个阈值将被认为钓到了鱼。 -config.ChatBot.AutoFishing.Log_Fish_Bobber=用于调整以上两个阈值,启用后会在收到鱼钩实体移动数据包后打印其坐标变化。 -config.ChatBot.AutoFishing.Enable_Move=这允许玩家在钓到鱼后改变其位置或朝向。(需要启用地形处理) -config.ChatBot.AutoFishing.Movements=会按照 "1->2->3->4->3->2->1->2->..." 的顺序执行。每次可用改变位置、朝向或是都改变。推荐只改变朝向。 +config.ChatBot.AutoFishing=ʹԶ㡣ָϣhttps://mccteam.github.io/guide/chat-bots.html#auto-fishingn# /!\ ǰȷԶ㡣 +config.ChatBot.AutoFishing.Antidespawn=֮ǰûùѡ뱣Ϊ false +config.ChatBot.AutoFishing.Mainhand=ʹֻǸ͡ +config.ChatBot.AutoFishing.Auto_Start=ǷڽԶʼ㣬ô˹ܺҪʹ"/usehand"ֶʹһΡ +config.ChatBot.AutoFishing.Cast_Delay=ÿʼһε㣨׸ͣ +config.ChatBot.AutoFishing.Fishing_Delay=úʼԶ㡣룩 +config.ChatBot.AutoFishing.Fishing_Timeout=ûеΪʱʱ׸͡ +config.ChatBot.AutoFishing.Durability_Limit=ʹõڴ;öȵͣ;öΪ64Ҫÿ洦 +config.ChatBot.AutoFishing.Auto_Rod_Switch=ڵǰͲúԶле͡Ҫÿ洦 +config.ChatBot.AutoFishing.Stationary_Threshold=㹳XZ᷽ϵƶСֵΪǾֹģߵֵ׸;дո͡ +config.ChatBot.AutoFishing.Hook_Threshold=һֹ㹳Y᷽ϵƶֵΪ㡣 +config.ChatBot.AutoFishing.Log_Fish_Bobber=ڵֵúյ㹳ʵƶݰӡ仯 +config.ChatBot.AutoFishing.Enable_Move=ڵıλû򡣣Ҫõδ +config.ChatBot.AutoFishing.Movements=ᰴ "1->2->3->4->3->2->1->2->..." ˳ִСÿοøıλáǶı䡣Ƽֻı䳯 # ChatBot.AutoRelog -config.ChatBot.AutoRelog=在被服务器断开连接时自动重连,例如服务器重启时。\n# /!\ 谨慎使用Ignore_Kick_Message=true,这会在服务器管理员将你踢出时依然连回! -config.ChatBot.AutoRelog.Delay=重新加入到服务器前的延迟时间。(单位:秒) -config.ChatBot.AutoRelog.Retries=重新登录服务器失败时的重试次数,使用-1表示无限重试。 -config.ChatBot.AutoRelog.Ignore_Kick_Message=当设置为 true 时,将不考虑踢出的信息直接重连。 -config.ChatBot.AutoRelog.Kick_Messages=如果踢出信息与这其中的任何一个字符串匹配,那么将触发自动重连。 +config.ChatBot.AutoRelog=ڱϿʱԶʱ\n# /!\ ʹIgnore_Kick_Message=trueڷԱ߳ʱȻأ +config.ChatBot.AutoRelog.Delay=¼뵽ǰӳʱ䡣(λ) +config.ChatBot.AutoRelog.Retries=µ¼ʧʱԴʹ-1ʾԡ +config.ChatBot.AutoRelog.Ignore_Kick_Message=Ϊ true ʱ߳Ϣֱ +config.ChatBot.AutoRelog.Kick_Messages=߳Ϣеκһַƥ䣬ôԶ # ChatBot.AutoRespond -config.ChatBot.AutoRespond=当聊天消息与文件中的规则匹配时,自动执行指定命令。\n# /!\ 服务器管理员可以以任意玩家的身份发送任意消息,记住这一点!\n# 此机器人如果设置的不得当可能会造成刷屏,建议设置一个冷却时间。 -config.ChatBot.AutoRespond.Match_Colors=不要删除文本中的颜色代码(使用§字符的代码)。注意:启用后你的匹配模板也必须包括颜色代码。 +config.ChatBot.AutoRespond=ϢļеĹƥʱԶִָ\n# /!\ ԱҵݷϢסһ㣡\n# ˻õIJõܻˢһȴʱ䡣 +config.ChatBot.AutoRespond.Match_Colors=Ҫɾıеɫ루ʹáַĴ룩ע⣺úƥģҲɫ롣 # ChatBot.ChatLog -config.ChatBot.ChatLog=将聊天信息写入到日志文件中。 +config.ChatBot.ChatLog=Ϣд뵽־ļС # ChatBot.FollowPlayer -config.ChatBot.FollowPlayer=让机器人跟随指定玩家\n# 注意这是一个实验性的功能,目前的寻路速度可能很慢,你可能需要时常等一会机器人来让它跟上你。\n# 你可以调整"Update_Limit",找到最适合你的速度。(注意不要设置的太低,这样可能导致反效果或使MCC卡顿)。\n# /!\ 在使用此功能之前,请先确保服务器规则允许你这样做。 -config.ChatBot.FollowPlayer.Update_Limit=机器人寻路的间隔时间(以秒为单位) -config.ChatBot.FollowPlayer.Stop_At_Distance=如果玩家在该范围内,则视为已经接近玩家了。(防止机器人将玩家推开而产生无限循环) +config.ChatBot.FollowPlayer=û˸ָ\n# עһʵԵĹܣĿǰѰ·ٶȿܺҪʱһ㡣\n# Ե"Update_Limit"ҵʺٶȡעⲻҪõ̫ͣܵ·ЧʹMCC٣\n# /!\ ʹô˹֮ǰȷ +config.ChatBot.FollowPlayer.Update_Limit=Ѱ·ļʱ䣨Ϊλ +config.ChatBot.FollowPlayer.Stop_At_Distance=ڸ÷ΧڣΪѾӽˡֹ˽ƿѭ # ChatBot.HangmanGame -config.ChatBot.HangmanGame=一个用于演示聊天互动的小游戏。玩家可以一次一个字母地猜出神秘的单词。\n# 你需要正确地使用 ChatFormat,并在 botowners 中添加自己,用/tell start\n# /!\ 这个机器人可能会造成刷屏,如果许多玩家与它互动。 +config.ChatBot.HangmanGame=һʾ컥СϷҿһһĸز³صĵʡ\n# Ҫȷʹ ChatFormat botowners Լ/tell start\n# /!\ ˿ܻˢ # ChatBot.Mailer -config.ChatBot.Mailer=在玩家和服务器之间中继消息,就像一个邮件插件一样。\n# 这个机器人可以在收件人离线时存储消息,并在他们加入服务器时发送消息。\n# /!\ 服务器管理员可以以任意玩家的身份发送任意消息,请记住这一点。 +config.ChatBot.Mailer=Һͷ֮мϢһʼһ\n# ˿ռʱ洢ϢǼʱϢ\n# /!\ ԱҵݷϢסһ㡣 # ChatBot.Map -config.ChatBot.Map=允许你将地图渲染成.jpg图片,该图片会被渲染到Rendered_Maps文件夹中。\n# 注意:这个功能目前只对解决使用地图的验证码有用。\n# 如果一些服务器解决验证码的时间很短,请启用Auto_Render_On_Update并准备快速打开该文件。\n# 在linux上,你可以使用FTP来访问生成的文件。 -config.ChatBot.Map.Should_Resize=是否需要调整地图的大小?(默认大小是128x128) -config.ChatBot.Map.Resize_To=将地图调整到什么大小?(注意:大小越大,质量越低) -config.ChatBot.Map.Auto_Render_On_Update=一旦接收到新的地图或已有地图被更新,自动渲染该地图。 -config.ChatBot.Map.Delete_All_On_Unload=在卸载/重新加载地图时删除所有已渲染的地图(退出MCC时不会删除图像) -config.ChatBot.Map.Notify_On_First_Update=当第一次从服务器上收到一张地图时,发送一个通知。 +config.ChatBot.Map=㽫ͼȾ.jpgͼƬͼƬᱻȾRendered_MapsļС\n# ע⣺ĿǰֻԽʹõͼ֤á\n# һЩ֤ʱ̣ܶAuto_Render_On_Update׼ٴ򿪸ļ\n# linuxϣʹFTPɵļ +config.ChatBot.Map.Render_In_Console=Ƿڿ̨Ⱦͼ +config.ChatBot.Map.Save_To_File=Ƿ񽫵ͼΪļ +config.ChatBot.Map.Auto_Render_On_Update=һյµĵͼеͼ£ԶȾõͼ +config.ChatBot.Map.Delete_All_On_Unload=ж/¼صͼʱɾȾĵͼ˳MCCʱɾͼ +config.ChatBot.Map.Notify_On_First_Update=һδӷյһŵͼʱһ֪ͨ # ChatBot.PlayerListLogger -config.ChatBot.PlayerListLogger=定期记录当前的玩家列表到文件中。 -config.ChatBot.PlayerListLogger.Delay=(单位:秒) +config.ChatBot.PlayerListLogger=ڼ¼ǰбļС +config.ChatBot.PlayerListLogger.Delay=λ룩 # ChatBot.RemoteControl -config.ChatBot.RemoteControl=通过游戏中的私聊向机器人发送MCC控制台命令\n# 你需要先配置好[ChatFormat]章节的设置,并在[Main.Advanced.bot_owners]中添加自己的账号。\n# /!\ 服务器管理员可以以任意玩家的身份发送任意消息,仅在信任他们时启用本功能。 +config.ChatBot.RemoteControl=ͨϷе˽˷MCC̨\n# Ҫú[ChatFormat]½ڵã[Main.Advanced.bot_owners]Լ˺š\n# /!\ ԱҵݷϢʱñܡ # ChatBot.ReplayCapture -config.ChatBot.ReplayCapture=使用"/replay start"开始记录游戏,并在之后使用 Replay Mod (https://www.replaymod.com/) 进行重放。\n# 请注意,由于技术限制,玩家自身不会显示在重放文件中。\n# /!\ 你应该使用"/replay stop"停止记录或者使用"/quit"退出程序,否则回放文件可能会损坏。 -config.ChatBot.ReplayCapture.Backup_Interval=每间隔多少秒自动保存一次回放文件,以秒为单位。使用-1禁用自动保存。 +config.ChatBot.ReplayCapture=ʹ"/replay start"ʼ¼Ϸ֮ʹ Replay Mod (https://www.replaymod.com/) طš\n# ע⣬ڼƣʾطļС\n# /!\ Ӧʹ"/replay stop"ֹͣ¼ʹ"/quit"˳򣬷طļܻ𻵡 +config.ChatBot.ReplayCapture.Backup_Interval=ÿԶһλطļΪλʹ-1Զ档 # ChatBot.ScriptScheduler -config.ChatBot.ScriptScheduler=在加入服务器时、到达特定时间时或以设定的时间间隔执行命令或脚本文件\n# 详细使用方法请查看 https://mccteam.github.io/guide/chat-bots.html#script-scheduler +config.ChatBot.ScriptScheduler=ڼʱضʱʱ趨ʱִűļ\n# ϸʹ÷鿴 https://mccteam.github.io/guide/chat-bots.html#script-scheduler diff --git a/MinecraftClient/Resources/lang/zh-Hant.ini b/MinecraftClient/Resources/lang/zh-Hant.ini index 4fcc4163..e2f38710 100644 --- a/MinecraftClient/Resources/lang/zh-Hant.ini +++ b/MinecraftClient/Resources/lang/zh-Hant.ini @@ -1,883 +1,886 @@ [mcc] # Messages from MCC itself -mcc.help_us_translate=幫助我們翻譯MCC:{0} -mcc.run_with_default_settings=\nMCC正在使用預設配置執行。 -mcc.settings_generated=§c配置檔案 MinecraftClient.ini 已經生成。 -mcc.has_update=§e新版本的MCC已經推出:{0} -mcc.login=賬戶名: -mcc.login_basic_io=請輸入使用者名稱或郵箱。 -mcc.password=密碼: -mcc.password_basic_io=請輸入使用者 {0} 的密碼。 -mcc.password_hidden=密碼(不會顯示):{0} -mcc.offline=§8您正在使用離線模式。 -mcc.session_invalid=§8會話快取無效或已過期。 -mcc.session_valid=§8{0}的會話快取仍然有效。 -mcc.profile_key_invalid=§8快取的聊天簽名金鑰需要重新整理。 -mcc.profile_key_valid=§8{0}的聊天簽名金鑰快取仍然有效. -mcc.connecting=正在連線至{0}... -mcc.fetching_key=正在從微軟獲取聊天簽名金鑰。 -mcc.ip=伺服器IP: -mcc.use_version=§8正在執行Minecraft版本{0} (v{1}協議) -mcc.unknown_version=§8未知或不受支援的Minecraft版本{0}。\n正在切換至自動檢測模式。 -mcc.forge=檢查伺服器是否正在執行Forge... -mcc.forgeforce=正在強制啟動Forge支援。 -mcc.resolve=正在解析{0}... -mcc.found=§8已找到伺服器{0}:{1},域名:{2} -mcc.not_found=§8無法執行{0}的SRV解析\n{1}:{2} -mcc.retrieve=正在獲取伺服器資訊... -mcc.restart=正在重啟Minecraft Console Client... -mcc.restart_delay=等待 {0} 秒後重啟... -mcc.server_version=伺服器版本: -mcc.disconnected=未連線至任何伺服器。輸入 '{0}help' 獲得幫助。 -mcc.press_exit=或者敲擊回車退出Minecraft Console Client。 -mcc.version_supported=該版本受到支援\n正在登入... -mcc.single_cmd=§7已傳送命令§8 {0} -mcc.joined=已成功加入伺服器。\n輸入 '{0}quit' 離開伺服器。 -mcc.reconnect=等待5秒 (剩餘{0}次嘗試)... -mcc.disconnect.lost=失去連線。 -mcc.disconnect.server=從伺服器斷開連線: -mcc.disconnect.login=連線失敗: -mcc.link=連結:{0} -mcc.player_dead_respawn=你死了!1秒後自動重生。 -mcc.player_dead=你死了!輸入 '{0}respawn' 重生。 -mcc.server_offline=§8伺服器正處於離線模式。 -mcc.session=檢查會話... -mcc.session_fail=檢查會話失敗 -mcc.server_protocol=§8伺服器的Minecraft版本:{0} (協議v{1}) -mcc.with_forge=, 帶有Forge -mcc.handshake=§8握手成功。 (伺服器ID:{0}) -mcc.realms_available==您可以訪問以下Realms世界 -mcc.realms_join=請使用"realms:<序號>"作為伺服器IP加入Realms世界 -mcc.generator.generating=正在從 {1} 生成 {0} 資訊。 -mcc.generator.done=已完成從 {0} 資訊生成,使用 {1} -mcc.invaild_config=解析配置檔案失敗,輸入 "{0}new" 以生成一個新的配置。 -mcc.gen_new_config=已生成新的配置檔案 "{0}" 。 +mcc.help_us_translate=҂gMCC{0} +mcc.run_with_default_settings=\nMCCʹAOÈС +mcc.settings_generated=cÙn MinecraftClient.ini ѽɡ +mcc.has_update=e°汾MCCѽƳ{0} +mcc.login=~ +mcc.login_basic_io=ՈݔʹQ]䡣 +mcc.password=ܴa +mcc.password_basic_io=Ոݔʹ {0} ܴa +mcc.password_hidden=ܴa(@ʾ){0} +mcc.offline=8ʹxģʽ +mcc.session_invalid=8ԒȡoЧ^ڡ +mcc.session_valid=8{0}ĕԒȡȻЧ +mcc.profile_key_invalid=8ȡ캞Ҫ +mcc.profile_key_valid=8{0}캞耿ȡȻЧ. +mcc.connecting=B{0}... +mcc.fetching_key=ڏ΢ܛ@ȡ캞耡 +mcc.ip=ŷIP +mcc.use_version=8ڈMinecraft汾{0} (v{1}fh) +mcc.unknown_version=8δ֪֧ԮMinecraft汾{0}\nГQԄәzyģʽ +mcc.forge=zŷǷڈForge... +mcc.forgeforce=ڏƆForge֧Ԯ +mcc.resolve=ڽ{0}... +mcc.found=8ҵŷ{0}:{1}{2} +mcc.not_found=8o{0}SRV\n{1}{2} +mcc.retrieve=ګ@ȡŷYӍ... +mcc.restart=؆Minecraft Console Client... +mcc.restart_delay=ȴ {0} ؆... +mcc.server_version=ŷ汾 +mcc.disconnected=δBκŷݔ '{0}help' @Î +mcc.press_exit=Ó܇˳Minecraft Console Client +mcc.version_supported=ԓ汾֧ܵԮ\nڵ... +mcc.single_cmd=7т8 {0} +mcc.joined=ѳɹŷ\nݔ '{0}quit' x_ŷ +mcc.reconnect=ȴ5 (ʣN{0}·Lԇ)... +mcc.disconnect.lost=ʧȥB +mcc.disconnect.server=ŷ_B +mcc.disconnect.login=Bʧ +mcc.link=BY{0} +mcc.player_dead_respawn=ˣ1Ԅ +mcc.player_dead=ˣݔ '{0}respawn' +mcc.server_offline=8ŷ̎xģʽ +mcc.session=zԒ... +mcc.session_fail=zԒʧ +mcc.server_protocol=8ŷMinecraft汾{0} (fhv{1}) +mcc.with_forge=, Forge +mcc.handshake=8ֳɹ (ŷID{0}) +mcc.realms_available==LRealms +mcc.realms_join=Ոʹ"realms:<̖>"ŷIPRealms +mcc.generator.generating=ڏ {1} {0} YӍ +mcc.generator.done=ɏ {0} YӍɣʹ {1} +mcc.invaild_config=Ùnʧݔ "{0}new" һµá +mcc.gen_new_config=µÙn "{0}" [debug] # Messages from MCC Debug Mode -debug.color_test=顏色測試:終端應該顯示:{0} -debug.session_cache_ok=§8已成功從磁碟中載入會話資料。 -debug.session_cache_fail=§8無法從磁碟載入快取的會話資料。 -debug.keys_cache_ok=§8已成功從磁碟中載入聊天簽名金鑰。 -debug.keys_cache_fail=§8無法從磁碟中載入聊天簽名金鑰。 -debug.session_id=成功!(會話ID:{0}) -debug.crypto=§8金鑰和雜湊值已生成: -debug.request=§8正在請求{0} +debug.color_test=ɫyԇKˑԓ@ʾ{0} +debug.session_cache_ok=8ѳɹĴŵdԒYϡ +debug.session_cache_fail=8oĴŵdȡĕԒYϡ +debug.keys_cache_ok=8ѳɹĴŵd캞耡 +debug.keys_cache_fail=8oĴŵd캞耡 +debug.session_id=ɹ(ԒID{0}) +debug.crypto=8耺sֵɣ +debug.request=8Ո{0} [error] # Error messages from MCC -error.ping=ping此IP失敗。 -error.unsupported=無法連線到伺服器:不支援此版本! -error.determine=無法確定伺服器版本。 -error.forgeforce=無法為此Minecraft版本強制啟動Forge支援! -error.login=登入失敗: -error.login.migrated=帳戶已遷移,請使用電子郵件作為使用者名稱。 -error.login.server=登入伺服器不可用。請稍後再試。 -error.login.blocked=使用者名稱/密碼錯誤、IP被禁用或登入次數過多。 -error.login.response=伺服器返回了無效的響應。 -error.login.premium=不是Premium使用者。 -error.login.network=網路錯誤。 -error.login.ssl=SSL錯誤。 -error.login.unknown=未知錯誤。 -error.login.cancel=使用者取消。 -error.login_failed=無法登入到此伺服器。 -error.join=加入伺服器時發生錯誤。 -error.connect=無法連線到此IP。 -error.timeout=連線超時 -error.unexpect_response=§8來自伺服器的意外響應(這是Minecraft伺服器嗎?) -error.invalid_response=§8對握手包的響應無效 -error.invalid_encrypt=§8對StartEncryption資料包的響應無效 -error.version_different=§8伺服器報告的版本與手動設定的版本不同。登入可能無法工作。 -error.no_version_report=§8伺服器未報告其協議版本,自動檢測將不起作用。 -error.connection_timeout=§8嘗試連線到此IP時超時。 -error.forge=§8Forge登入握手未成功完成 -error.forge_encrypt=§8Forge StartEncryption握手未成功完成 -error.setting.argument_syntax={0}:無效語法,應為 --argname=value 或 --section.argname=value -error.http_code=§8接收到伺服器錯誤:{0} -error.auth=§8在重新整理身份驗證時接收到伺服器錯誤:{0} -error.realms.ip_error=無法獲取您Realms世界的伺服器IP -error.realms.access_denied=此Realms世界不存在或訪問被拒絕 -error.realms.server_unavailable=Realms伺服器可能需要一些時間來啟動。請稍後再試。 -error.realms.server_id=Realms伺服器ID無效或未知。 -error.realms.disabled=正在嘗試加入Realms世界,但配置中禁用了Realms支援 -error.missing.argument=缺少引數 {0} -error.usage=使用方法: -error.generator.invalid=該生成器命令用法無效! -error.generator.path=提供的資料路徑無效! (路徑不存在或是輸入錯誤) -error.generator.json=提供的路徑必須指向一個.json格式的檔案! +error.ping=pingIPʧ +error.unsupported=oBŷ֧Ԯ˰汾 +error.determine=o_ŷ汾 +error.forgeforce=oMinecraft汾ƆForge֧Ԯ +error.login=ʧ +error.login.migrated=wƣՈʹ]ʹQ +error.login.server=ŷáՈԇ +error.login.blocked=ʹQ/ܴae`IPûΔ^ࡣ +error.login.response=ŷ˟oЧ푑 +error.login.premium=Premiumʹߡ +error.login.network=W·e` +error.login.ssl=SSLe` +error.login.unknown=δ֪e` +error.login.cancel=ʹȡ +error.login_failed=o뵽ŷ +error.join=ŷrle` +error.connect=oBIP +error.timeout=Br +error.unexpect_response=8ŷ푑@Minecraftŷ᣿ +error.invalid_response=8ְ푑oЧ +error.invalid_encrypt=8StartEncryptionYϰ푑oЧ +error.version_different=8ŷİ汾cքOİ汾ͬܟo +error.no_version_report=8ŷδfh汾Ԅәzyá +error.connection_timeout=8LԇBIPrr +error.forge=8Forgeδɹ +error.forge_encrypt=8Forge StartEncryptionδɹ +error.setting.argument_syntax={0}oЧZ --argname=value --section.argname=value +error.http_code=8յŷe`{0} +error.auth=8Crյŷe`{0} +error.realms.ip_error=o@ȡRealmsŷIP +error.realms.access_denied=Realms粻ڻLܽ^ +error.realms.server_unavailable=RealmsŷҪһЩrg톢ӡՈԇ +error.realms.server_id=RealmsŷIDoЧδ֪ +error.realms.disabled=ڇLԇRealms磬нRealms֧Ԯ +error.missing.argument=ȱ {0} +error.usage=ʹ÷ +error.generator.invalid=ԓ÷oЧ +error.generator.path=ṩY·oЧ! (·ڻݔe` +error.generator.json=ṩ·ָһ.jsonʽęn! [internal command] # MCC internal help command -icmd.help=help <命令名稱> :顯示有關命令的簡要幫助。 -icmd.unknown=未知命令 '{0}'。請使用 'help' 命令來獲取命令列表。 -icmd.list=help <命令名稱>。可用命令:{0}。在伺服器上獲取幫助,請改用 '{1}send /help'。 -icmd.error=OnInternalCommand: 來自{0}的錯誤{1} +icmd.help=help @ʾPĺҪ +icmd.unknown=δ֪ '{0}'Ոʹ 'help' @ȡб +icmd.list=help {0}ŷϫ@ȡՈ '{1}send /help' +icmd.error=OnInternalCommand: {0}e`{1} [exception] # Exception messages threw by MCC -exception.user_logout=使用者發起的登出應該通過呼叫Disconnect()來完成 -exception.unknown_direction=未知方向 -exception.palette.block=請為此Minecraft版本更新方塊型別處理。詳細請參考 Material.cs -exception.palette.entity=請為此Minecraft版本更新實體型別處理。詳細請參考 EntityType.cs -exception.palette.item=請為此Minecraft版本更新物品型別處理。詳細請參考 ItemType.cs -exception.palette.packet=請為此Minecraft版本更新資料包型別調色盤。詳細請參考 PacketTypePalette.cs -exception.packet_process=無法處理傳入的{0}型別的資料包。(資料包ID:{1},協議:{2},登陸階段:{3},內部異常:{4})。 -exception.version_unsupport=版本{0}的協議未被支援。 -exception.chatbot.init=不應在建構函式中呼叫ChatBot的方法,因為作為API處理程式的模組尚未初始化。請重寫 Initialize() 或 AfterGameJoined() 來執行初始化任務。 -exception.csrunner.invalid_head=提供的指令碼沒有有效的MCCScript頭 +exception.user_logout=ʹ߰lĵdzԓͨ^Disconnect() +exception.unknown_direction=δ֪ +exception.palette.block=ՈMinecraft汾·K̈́e̎ԔՈ Material.cs +exception.palette.entity=ՈMinecraft汾Œẅ́e̎ԔՈ EntityType.cs +exception.palette.item=ՈMinecraft汾Ʒ̈́e̎ԔՈ ItemType.cs +exception.palette.packet=ՈMinecraft汾Yϰ̈́e{ɫPԔՈ PacketTypePalette.cs +exception.packet_process=o̎{0}̈́eYϰ(YϰID{1}fh{2}AΣ{3}Ȳ{4}) +exception.version_unsupport=汾{0}ąfhδ֧Ԯ +exception.chatbot.init=ڽʽкChatBotķAPI̎ʽģMδʼՈ، Initialize() AfterGameJoined() гʼ΄ա +exception.csrunner.invalid_head=ṩָa]ЧMCCScript^ [chatbot] # ChatBot API -chatbot.reconnect=[{0}] 斷開並重新連線到伺服器 +chatbot.reconnect=[{0}] _KBŷ [filemonitor] # FileMonitor -filemonitor.init=§8[{0}] 正在為檔案{1}初始化FileSystemWatcher -filemonitor.fail=§8[{0}] 無法初始化FileSystemWatcher,正在使用輪詢重試 +filemonitor.init=8[{0}] ڞn{1}ʼFileSystemWatcher +filemonitor.fail=8[{0}] oʼFileSystemWatcherʹ݆ԃԇ [extra] # Inventory, Terrain & Movements, Entity related messages # Terrain & Movements -extra.terrainandmovement_enabled=地形和移動處理現在已啟用。 -extra.terrainandmovement_disabled=§c該遊戲版本目前還不支援地形和移動處理。 -extra.terrainandmovement_required=請先在配置檔案中啟用地形和移動處理。 +extra.terrainandmovement_enabled=κƄ̎Fцá +extra.terrainandmovement_disabled=cԓ[汾Ŀǰ߀֧ԮκƄ̎ +extra.terrainandmovement_required=ՈÙnІõκƄ̎ # Inventory -extra.inventory_enabled=庫存(物品)處理現在已啟用。 -extra.inventory_disabled=§c該MC版本目前未支援處理庫存(物品)。 -extra.inventory_required=請先在配置檔案中啟用"Main.Advanced.inventory_handling"。 -extra.inventory_interact=請使用 /inventory 來與其互動。 -extra.inventory_open=容器# {0}已開啟:{1} -extra.inventory_close=容器# {0}已關閉。 +extra.inventory_enabled=(Ʒ)̎Fцá +extra.inventory_disabled=cԓMC汾Ŀǰδ֧Ԯ̎(Ʒ) +extra.inventory_required=ՈÙnІ"Main.Advanced.inventory_handling" +extra.inventory_interact=Ոʹ /inventory c以ӡ +extra.inventory_open=# {0}_{1} +extra.inventory_close=# {0}P] # Entity -extra.entity_disabled=§c該MC版本當前還不支援處理實體。 -extra.entity_required=請先在配置檔案中啟用"Main.Advanced.entity_handling"。 +extra.entity_disabled=cԓMC汾ǰ߀֧Ԯ̎팍w +extra.entity_required=ՈÙnІ"Main.Advanced.entity_handling" [forge] # Messages from Forge handler -forge.version=§8Forge協議版本:{0} -forge.send_mod=§8向伺服器傳送偽造的forge模組列表... -forge.accept=§8接受來自的伺服器模組列表... -forge.registry=§8已接收的登錄檔包含{0}個條目 -forge.registry_2=§8已接收登錄檔{0},包含{1}個條目 -forge.accept_registry=§8接受伺服器登錄檔... -forge.complete=Forge伺服器連線完成! -forge.with_mod=§8伺服器正在執行Forge,有{0}個模組。 -forge.no_mod=§8正在執行的伺服器沒有Forge模組。 -forge.mod_list=§8模組列表: +forge.version=8Forgefh汾{0} +forge.send_mod=8ŷ͂forgeģMб... +forge.accept=8܁ԵŷģMб... +forge.registry=8ѽյĵ䛙n{0}lĿ +forge.registry_2=8ѽյ䛙n{0}{1}lĿ +forge.accept_registry=8ŷ䛙n... +forge.complete=ForgeŷB! +forge.with_mod=8ŷڈForge{0}ģM +forge.no_mod=8ڈеŷ]ForgeģM +forge.mod_list=8ģMб: # FML2 -forge.fml2.mod=§8收到FM2伺服器模組列表 -forge.fml2.mod_send=§8發回FML2客戶端的模組列表 -forge.fml2.registry=§8確認FML2伺服器登錄檔:{0} -forge.fml2.config=§8確認FML2伺服器配置:{0} -forge.fml2.unknown=§8收到未知的FML2握手資訊,編號:{0} -forge.fml2.unknown_channel=§8忽略未知的FML2登入訊息通道:{0} +forge.fml2.mod=8յFM2ŷģMб +forge.fml2.mod_send=8lFML2͑˵ģMб +forge.fml2.registry=8_JFML2ŷ䛙n{0} +forge.fml2.config=8_JFML2ŷã{0} +forge.fml2.unknown=8յδ֪FML2YӍ̖{0} +forge.fml2.unknown_channel=8δ֪FML2ӍϢͨ{0} [cache] # Session Cache -cache.loading=§8載入Minecraft配置檔案:{0} -cache.loaded=§8已載入會話:{0}:{1} -cache.converting=§8從磁碟轉換會話快取:{0} -cache.read_fail=§8無法從磁碟讀取序列化會話快取:{0} -cache.malformed=§8從磁碟讀取序列化會話快取時,獲取到格式錯誤的資料:{0} -cache.loading_session=§8從磁碟載入會話快取:{0} -cache.ignore_string=§8忽略會話令牌字串'{0}':{1} -cache.ignore_line=§8忽略無效的會話令牌行:{0} -cache.read_fail_plain=§8無法從磁碟讀取會話快取:{0} -cache.saving=§8將會話快取儲存到磁碟 -cache.save_fail=§8無法將會話快取寫入磁碟:{0} +cache.loading=8dMinecraftÙn{0} +cache.loaded=8dԒ{0}:{1} +cache.converting=8ĴŵDQԒȡ{0} +cache.read_fail=8oĴŵxȡлԒȡ{0} +cache.malformed=8ĴŵxȡлԒȡr@ȡʽe`Yϣ{0} +cache.loading_session=8ĴŵdԒȡ{0} +cache.ignore_string=8ԕԒִ'{0}'{1} +cache.ignore_line=8ԟoЧĕԒУ{0} +cache.read_fail_plain=8oĴŵxȡԒȡ{0} +cache.saving=8Ԓȡ浽ŵ +cache.save_fail=8oԒȡŵ{0} # Profile Key Cache -cache.loading_keys=§8從磁碟載入聊天簽名金鑰快取: {0} -cache.loaded_keys=§8已載入簽名金鑰,下次重新整理於 {0} -cache.ignore_string_keys=§8忽略聊天簽名金鑰字串 '{0}':{1} -cache.ignore_line_keys=§8忽略無效的聊天簽名金鑰行:{0} -cache.read_fail_plain_keys=§8無法從磁碟讀取聊天簽名金鑰快取:{0} -cache.saving_keys=§8將聊天簽名金鑰儲存到磁碟 -cache.save_fail_keys=§8無法將聊天簽名金鑰寫入磁碟:{0} +cache.loading_keys=8Ĵŵd캞耿ȡ: {0} +cache.loaded_keys=8d뺞耣´ {0} +cache.ignore_string_keys=8캞ִ '{0}'{1} +cache.ignore_line_keys=8ԟoЧ캞У{0} +cache.read_fail_plain_keys=8oĴŵxȡ캞耿ȡ{0} +cache.saving_keys=8캞考浽ŵ +cache.save_fail_keys=8o캞而ŵ{0} [proxy] -proxy.connected=§8已連線到代理{0}:{1} +proxy.connected=8B{0}:{1} [chat] # Chat Parser -chat.download=§8正在從Mojang伺服器下載語言檔案 '{0}.lang'... -chat.request=§8正在請求{0}... -chat.done=§8下載完成。檔案另存為 '{0}' -chat.fail=§8下載檔案失敗。 -chat.from_dir=§8預設為你的Minecraft目錄中的en_GB.lang -chat.loaded=§8已載入翻譯檔案。 -chat.not_found=§8找不到翻譯檔案:'{0}'\n如果沒有此檔案,某些資訊將無法正確列印。 -chat.message_chain_broken=玩家 {0} 的訊息簽名鏈已經被破壞。(簽名不在可信) +chat.download=8ڏMojangŷdZԙn '{0}.lang'... +chat.request=8Ո{0}... +chat.done=8dɡn '{0}' +chat.fail=8dnʧ +chat.from_dir=8AOMinecraftĿеen_GB.lang +chat.loaded=8d뷭gn +chat.not_found=8Ҳgn'{0}'\n]д˙nijЩYӍo_ӡ +chat.message_chain_broken= {0} ӍϢѽƉġڿţ [general] # General message/information (i.e. Done) -general.done=完成 -general.fail=失敗 -general.bot_unload=將會解除安裝此bot。 -general.available_cmd=可用命令:{0} +general.done= +general.fail=ʧ +general.bot_unload=bbot +general.available_cmd={0} [cmd] # Commands. Naming style: cmd.. # Animation -cmd.animation.desc=揮動你的手臂。 +cmd.animation.desc=]ֱۡ # Bots -cmd.bots.desc=列出全部 ChatBot ,載入或解除安裝一個 ChatBot。 -cmd.bots.list=已載入的 ChatBot -cmd.bots.notfound=該 ChatBot 並未載入,請檢查輸入。 -cmd.bots.noloaded=沒有 ChatBot 被載入。 -cmd.bots.unloaded=成功解除安裝 ChatBot:{0} -cmd.bots.unloaded_all=成功解除安裝所有 ChatBot。 +cmd.bots.desc=гȫ ChatBot dbһ ChatBot +cmd.bots.list=d ChatBot +cmd.bots.notfound=ԓ ChatBot Kδd룬Ոzݔ롣 +cmd.bots.noloaded=] ChatBot d롣 +cmd.bots.unloaded=ɹb ChatBot{0} +cmd.bots.unloaded_all=ɹb ChatBot # ChangeSlot -cmd.changeSlot.desc=變更快捷欄欄位 -cmd.changeSlot.nan=無法變更欄位:不是數字 -cmd.changeSlot.changed=已變更為欄位{0} -cmd.changeSlot.fail=無法變更欄位 +cmd.changeSlot.desc=׃ݙڙλ +cmd.changeSlot.nan=o׃λǔ +cmd.changeSlot.changed=׃λ{0} +cmd.changeSlot.fail=o׃λ # Chunk -cmd.chunk.desc=顯示區塊載入狀態。\n如果顯示錯亂竟在設定中更改 EnableEmoji=false 。 -cmd.chunk.current=當前位置:{0},所在區塊:({1}, {2})。 -cmd.chunk.marked=標記的位置: -cmd.chunk.chunk_pos=區塊:({0}, {1})。 -cmd.chunk.outside=§x§0由於被標記的區塊距離玩家太遠,它不會被顯示在圖中§r -cmd.chunk.icon=玩家:{0},標記的區塊:{1},未收到:{2},載入中:{3},已載入:{4} -cmd.chunk.for_debug=§x§0此命令僅用於除錯使用,確保你已經瞭解執行該命令會造成的影響。§r +cmd.chunk.desc=@ʾ^KdB\n@ʾeyOи EnableEmoji=false +cmd.chunk.current=ǰλã{0}څ^K({1}, {2}) +cmd.chunk.marked=ӛλã +cmd.chunk.chunk_pos=^K({0}, {1}) +cmd.chunk.outside=x0춱ӛą^Kx̫h@ʾڈDСr +cmd.chunk.icon=:{0}ӛą^K:{1}δյ:{2}d:{3}d:{4} +cmd.chunk.for_debug=x0H춳eʹã_ѽtԓɵӰ푡r # Connect -cmd.connect.desc=連線到指定的伺服器。 -cmd.connect.unknown=未知帳戶 '{0}'。 -cmd.connect.invalid_ip=無效的伺服器IP '{0}'。 +cmd.connect.desc=Bָŷ +cmd.connect.unknown=δ֪ '{0}' +cmd.connect.invalid_ip=oЧŷIP '{0}' # Debug -cmd.debug.desc=切換除錯訊息。 -cmd.debug.state_on=除錯訊息現在已開啟 -cmd.debug.state_off=除錯訊息現在已關閉 +cmd.debug.desc=ГQeӍϢ +cmd.debug.state_on=eӍϢF_ +cmd.debug.state_off=eӍϢFP] # Dig -cmd.dig.desc=試圖破壞一個方塊 -cmd.dig.too_far=你離這個方塊太遠了。 -cmd.dig.no_block=這個地方沒有方塊 (空氣) -cmd.dig.dig=嘗試挖掘位於({0}, {1}, {2})的方塊({3})。 -cmd.dig.fail=無法開始挖掘方塊。 +cmd.dig.desc=ԇDƉһK +cmd.dig.too_far=x@K̫hˡ +cmd.dig.no_block=@ط]зK (՚) +cmd.dig.dig=Lԇھλ({0}, {1}, {2})ķK({3}) +cmd.dig.fail=o_ʼھ򷽉K # Entitycmd -cmd.entityCmd.attacked=已攻擊實體 -cmd.entityCmd.used=已使用實體 -cmd.entityCmd.not_found=找不到實體 +cmd.entityCmd.attacked=ѹw +cmd.entityCmd.used=ʹÌw +cmd.entityCmd.not_found=Ҳw -cmd.entityCmd.entity=實體 -cmd.entityCmd.entities=實體集 -cmd.entityCmd.nickname=暱稱 -cmd.entityCmd.customname=自定義名稱 -cmd.entityCmd.latency=延遲 -cmd.entityCmd.item=物品 -cmd.entityCmd.equipment=裝備 -cmd.entityCmd.mainhand=主手 -cmd.entityCmd.offhane=副手 -cmd.entityCmd.helmet=頭盔 -cmd.entityCmd.chestplate=胸甲 -cmd.entityCmd.leggings=護腿 -cmd.entityCmd.boots=靴子 -cmd.entityCmd.pose=姿勢 -cmd.entityCmd.health=生命值 -cmd.entityCmd.distance=距離 -cmd.entityCmd.location=位置 -cmd.entityCmd.type=型別 +cmd.entityCmd.entity=w +cmd.entityCmd.entities=w +cmd.entityCmd.nickname=Q +cmd.entityCmd.customname=ԶxQ +cmd.entityCmd.latency=t +cmd.entityCmd.item=Ʒ +cmd.entityCmd.equipment=b +cmd.entityCmd.mainhand= +cmd.entityCmd.offhane= +cmd.entityCmd.helmet=^ +cmd.entityCmd.chestplate=ؼ +cmd.entityCmd.leggings=o +cmd.entityCmd.boots=ѥ +cmd.entityCmd.pose=˄ +cmd.entityCmd.health=ֵ +cmd.entityCmd.distance=x +cmd.entityCmd.location=λ +cmd.entityCmd.type=̈́e # Exec If -cmd.execif.desc=允許你在某個條件成立時執行一個命令。(你可以使用"MinecraftClient.ini"中的變數和使用"/set"命令定義的變數,以及CSharp表示式)。 -cmd.execif.executed=條件'{0}'滿足,已執行命令'{1}',得到結果'{2}'。 -cmd.execif.executed_no_output=條件'{0}'滿足,已執行命令'{1}',該命令沒有返回任何結果。 -cmd.execif.error_occured=在執行命令 {0} 時出現錯誤。 -cmd.execif.error=錯誤:{0} +cmd.execif.desc=Sijlrһ(ʹ"MinecraftClient.ini"е׃ʹ"/set"x׃ԼCSharpʾʽ +cmd.execif.executed=l'{0}'M㣬ш'{1}'õY'{2}' +cmd.execif.executed_no_output=l'{0}'M㣬ш'{1}'ԓ]зκνY +cmd.execif.error_occured=ڈ {0} rFe` +cmd.execif.error=e`{0} # Exec Multi -cmd.execmulti.desc=依次執行多個命令。 -cmd.execmulti.executed=執行了命令 '{0}' , -cmd.execmulti.result=結果為 '{0}'! -cmd.execmulti.no_result=沒有返回結果! +cmd.execmulti.desc=Έж +cmd.execmulti.executed= '{0}' +cmd.execmulti.result=Y '{0}' +cmd.execmulti.no_result=]зؽY # Exit -cmd.exit.desc=斷開與伺服器的連線。 +cmd.exit.desc=_cŷB # Health -cmd.health.desc=顯示生命值和飽食度。 -cmd.health.response=生命值:{0},飽食度:{1},等級:{2},總經驗值:{3} +cmd.health.desc=@ʾֵʳȡ +cmd.health.response=ֵ{0}ʳȣ{1}ȼ{2}ֵ{3} # Inventory -cmd.inventory.desc=容器相關命令 -cmd.inventory.creative_done=向容器#{2}請求{0} x{1} -cmd.inventory.creative_delete=請求清除欄位 #{0} -cmd.inventory.creative_fail=請求創造模式操作失敗 -cmd.inventory.need_creative=你必須在創造模式 -cmd.inventory.container_not_found=找不到容器,請使用顯式ID重試 -cmd.inventory.close=關閉容器 #{0} -cmd.inventory.close_fail=關閉容器失敗 #{0} -cmd.inventory.not_exist=容器#{0}不存在 -cmd.inventory.inventory=容器 -cmd.inventory.inventories=容器 -cmd.inventory.inventories_available=可用容器 -cmd.inventory.hotbar=您選擇的快捷欄是{0} -cmd.inventory.damage=武器傷害值 -cmd.inventory.left=左 -cmd.inventory.right=右 -cmd.inventory.middle=中間 -cmd.inventory.clicking={0}正在點選容器#{2}中的欄位{1} -cmd.inventory.shiftclick=按住Shift鍵點選容器#{1}中的欄位{0} -cmd.inventory.shiftclick_fail=執行Shift點選失敗,這可能是因為該容器型別目前不被支援。 -cmd.inventory.no_item=欄位#{0}中沒有物品 -cmd.inventory.drop=從欄位#{0}中丟棄了1個物品 -cmd.inventory.drop_stack=從欄位#{0}中丟棄了所有堆疊的物品 +cmd.inventory.desc=P +cmd.inventory.creative_done=#{2}Ո{0} x{1} +cmd.inventory.creative_delete=Ոλ #{0} +cmd.inventory.creative_fail=Ոģʽʧ +cmd.inventory.need_creative=ڄģʽ +cmd.inventory.container_not_found=ҲՈʹ@ʽIDԇ +cmd.inventory.close=P] #{0} +cmd.inventory.close_fail=P]ʧ #{0} +cmd.inventory.not_exist=#{0} +cmd.inventory.inventory= +cmd.inventory.inventories= +cmd.inventory.inventories_available= +cmd.inventory.hotbar=xĿݙ{0} +cmd.inventory.damage=ֵ +cmd.inventory.left= +cmd.inventory.right= +cmd.inventory.middle=g +cmd.inventory.clicking={0}Icx#{2}еęλ{1} +cmd.inventory.shiftclick=סShiftIcx#{1}еęλ{0} +cmd.inventory.shiftclick_fail=Shiftcxʧ@ԓ̈́eĿǰ֧Ԯ +cmd.inventory.no_item=λ#{0}Л]Ʒ +cmd.inventory.drop=ęλ#{0}ЁG1Ʒ +cmd.inventory.drop_stack=ęλ#{0}ЁGжѯBƷ # Inventory Help -cmd.inventory.help.basic=基本用法 -cmd.inventory.help.available=可用操作 -cmd.inventory.help.help={0}\n使用 '/inventory help ' 獲取幫助。\n'player' 和 'container' 可以簡化為 'p' 和 'c'。\n請注意,'[]' 中的引數是可選的。 -cmd.inventory.help.usage=用法 -cmd.inventory.help.list=列出所有容器。 -cmd.inventory.help.close=關閉開啟的容器。 -cmd.inventory.help.click=單擊物品。 -cmd.inventory.help.shiftclick=按住Shift鍵點選一個物品。 -cmd.inventory.help.drop=從容器中丟棄物品。 -cmd.inventory.help.creativegive=在創造模式中給予物品。 -cmd.inventory.help.creativedelete=在創造性模式中清除欄位。 -cmd.inventory.help.inventories=列出所有可用的視窗。 -cmd.inventory.help.search=在開啟的所有視窗中搜索物品。 -cmd.inventory.help.unknown=未知操作。 -cmd.inventory.found_items=找到物品 -cmd.inventory.no_found_items=在任何視窗中都沒有找到該物品! +cmd.inventory.help.basic=÷ +cmd.inventory.help.available=ò +cmd.inventory.help.help={0}\nʹ '/inventory help ' @ȡ\n'player' 'container' Ժ 'p' 'c'\nՈע⣬'[]' еǿxġ +cmd.inventory.help.usage=÷ +cmd.inventory.help.list=г +cmd.inventory.help.close=P]_ +cmd.inventory.help.click=ΓƷ +cmd.inventory.help.shiftclick=סShiftIcxһƷ +cmd.inventory.help.drop=ЁGƷ +cmd.inventory.help.creativegive=ڄģʽнoƷ +cmd.inventory.help.creativedelete=ڄģʽλ +cmd.inventory.help.inventories=гпõҕ +cmd.inventory.help.search=_ҕƷ +cmd.inventory.help.unknown=δ֪ +cmd.inventory.found_items=ҵƷ +cmd.inventory.no_found_items=κҕж]ҵԓƷ # Leave bed -cmd.bed.desc=用於右鍵床開始睡覺或離開正在睡覺的床。 -cmd.bed.leaving=已向伺服器傳送離開床的資料包。 -cmd.bed.trying_to_use=試圖在位於 (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) 上的床上睡覺,結果:{3} -cmd.bed.in=成功地躺在了床上! -cmd.bed.not_in=上床睡覺失敗了。(PS: 你必須使用床頭對應的座標) -cmd.bed.not_a_bed=位於 (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) 的方塊不是一個床! -cmd.bed.searching=在半徑為{0}的範圍內尋找床... -cmd.bed.bed_not_found=沒有找到床! -cmd.bed.found_a_bed_at=在 (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) 找到了一個床。 -cmd.bed.cant_reach_safely=無法安全地到達床邊! -cmd.bed.moving=正在移動到床所在的位置: (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) -cmd.bed.failed_to_reach_in_time=無法在30秒內到達(X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}),放棄本次尋路。 +cmd.bed.desc=I_ʼ˯Xx_˯XĴ +cmd.bed.leaving=ŷx_Yϰ +cmd.bed.trying_to_use=ԇDλ (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) ϵĴ˯XY{3} +cmd.bed.in=ɹ˴ϣ +cmd.bed.not_in=ϴ˯XʧˡPS: ʹô^ˣ +cmd.bed.not_a_bed=λ (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) ķKһ +cmd.bed.searching=ڰ돽{0}ĹȌҴ... +cmd.bed.bed_not_found=]ҵ +cmd.bed.found_a_bed_at= (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) ҵһ +cmd.bed.cant_reach_safely=oȫص_߅! +cmd.bed.moving=Ƅӵڵλã (X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0}) +cmd.bed.failed_to_reach_in_time=o30ȵ_(X: {0:0.0}, Y: {1:0.0}, Z: {2:0.0})ŗΌ· # List -cmd.list.desc=獲取玩家列表。 -cmd.list.players=玩家列表:{0} +cmd.list.desc=@ȡб +cmd.list.players=б{0} # Log -cmd.log.desc=將文字記錄到控制檯。 +cmd.log.desc=ӛ䛵ƙ # Look -cmd.look.desc=檢視方向或座標。 -cmd.look.unknown=未知方向 '{0}'。 -cmd.look.at=當前視角 偏航角:{0} 俯仰角:{1}。 -cmd.look.block=正看向位於 {0} 的方塊。 -cmd.look.inspection=與視線相交的第一個方塊是 {0} ({1:0}, {2:0}, {3:0}),距離玩家 {4:0.0}({5:0.0})。 -cmd.look.noinspection=在 {0} 米內沒有任何方塊與視線相交。 +cmd.look.desc=zҕˡ +cmd.look.unknown=δ֪ '{0}' +cmd.look.at=ǰҕ ƫǣ{0} ǣ{1} +cmd.look.block=λ {0} ķK +cmd.look.inspection=cҕཻĵһK {0} ({1:0}, {2:0}, {3:0})x {4:0.0}({5:0.0}) +cmd.look.noinspection= {0} ׃ț]κηKcҕཻ # Move -cmd.move.desc=移動或開始移動。 -cmd.move.enable=在下次伺服器登入、重生或更換世界時啟用地形和移動。 -cmd.move.disable=禁用地形和移動。 -cmd.move.moving=移動{0} -cmd.move.dir_fail=不能朝此方向移動。 -cmd.move.walk=移動到{0} -cmd.move.fail=無法計算到達{0}的路徑。 -cmd.move.suggestforce=無法計算安全到達{0}的路徑. 請使用 -f 引數允許不安全移動。 -cmd.move.gravity.enabled=重力已開啟。 -cmd.move.gravity.disabled=重力已關閉。 -cmd.move.chunk_loading_status=區塊載入進度:{0:P} - 共{2}個,載入完成了{1}個。 -cmd.move.chunk_not_loaded=目標位置所在的區塊還沒有被載入。你可以使用"/chunk status {0:0.0} {1:0.0} {2:0.0}"來檢視區塊的載入狀態。 +cmd.move.desc=Ƅӻ_ʼƄӡ +cmd.move.enable=´ŷ롢QrõκƄӡ +cmd.move.disable=õκƄӡ +cmd.move.moving=Ƅ{0} +cmd.move.dir_fail=ܳ˷Ƅӡ +cmd.move.walk=Ƅӵ{0} +cmd.move.fail=oӋ㵽_{0}· +cmd.move.suggestforce=oӋ㰲ȫ_{0}·. Ոʹ -f SȫƄӡ +cmd.move.gravity.enabled=_ +cmd.move.gravity.disabled=P] +cmd.move.chunk_loading_status=^KdMȣ{0:P} - {2}d{1} +cmd.move.chunk_not_loaded=Ŀλڵą^K߀]бd롣ʹ"/chunk status {0:0.0} {1:0.0} {2:0.0}"zҕ^KdB # Reco -cmd.reco.desc=重新啟動並重新連線到伺服器。 +cmd.reco.desc=†ӁKBŷ # Reload -cmd.reload.started=重新載入設定中... -cmd.reload.warning1=這條命令不會影響在連線到伺服器之前的某些設定。 -cmd.reload.warning2=一些通過命令列引數傳遞的設定可能會被覆蓋! -cmd.reload.warning3=你有可能需要重新連線(/reco)才能使某些設定生效。 -cmd.reload.warning4=由於技術限制,ReplayCapturer 將不會被強制過載! -cmd.reload.finished=重新載入設定完成! -cmd.reload.desc=重新載入MCC的設定。 +cmd.reload.started=dO... +cmd.reload.warning1=@lӰBŷ֮ǰijЩO +cmd.reload.warning2=һЩͨ^fOܕw +cmd.reload.warning3=пҪB(/reco)ʹijЩOЧ +cmd.reload.warning4=춼gƣReplayCapturer ^d! +cmd.reload.finished=dOɣ +cmd.reload.desc=dMCCO # Respawn -cmd.respawn.desc=如果你死亡了,請用這個來重生。 -cmd.respawn.done=你重生了。 +cmd.respawn.desc=ˣՈ@ +cmd.respawn.done=ˡ # Script -cmd.script.desc=執行指令碼檔案。 +cmd.script.desc=ָan # Send -cmd.send.desc=傳送聊天資訊或命令。 +cmd.send.desc=YӍ # Set -cmd.set.desc=設定自定義 %variable%。 -cmd.set.format=變數名範圍必須為 A-Za-z0-9。 +cmd.set.desc=OԶx %variable% +cmd.set.format=׃횞 A-Za-z0-9 # SetRnd -cmd.setrnd.desc=隨機為自定義 %變數名% 賦值。 -cmd.setrndnum.format=setrnd 變數名 -7to17 -cmd.setrndstr.format=setrnd 變數名 字串1 "\"字串2\" 字串3" +cmd.setrnd.desc=SCԶx %׃% xֵ +cmd.setrndnum.format=setrnd ׃ -7to17 +cmd.setrndstr.format=setrnd ׃ ִ1 "\"ִ2\" ִ3" # Sneak -cmd.sneak.desc=切換到潛行 -cmd.sneak.on=現在你在潛行狀態。 -cmd.sneak.off=你不在潛行狀態了。 +cmd.sneak.desc=ГQ +cmd.sneak.on=FڝРB +cmd.sneak.off=㲻ڝРBˡ # DropItem -cmd.dropItem.desc=丟棄玩家容器中的指定型別物品或開啟的容器 -cmd.dropItem.dropped=已從容器#{1}中丟棄所有{0} -cmd.dropItem.unknown_item=未知物品:{0} +cmd.dropItem.desc=Gёָ́eƷ_ +cmd.dropItem.dropped=я#{1}ЁG{0} +cmd.dropItem.unknown_item=δ֪Ʒ{0} # Tps -cmd.tps.desc=顯示伺服器當前tps (tick per second)。(可能不精確) -cmd.tps.current=當前TPS +cmd.tps.desc=@ʾŷǰtps (tick per second)ܲ_ +cmd.tps.current=ǰTPS # Useblock -cmd.useblock.desc=放置一個方塊或開啟箱子 -cmd.useblock.use=使用位於 ({0:0.0}, {1:0.0}, {2:0.0}) 的 {3}。 +cmd.useblock.desc=һK_ +cmd.useblock.use=ʹλ ({0:0.0}, {1:0.0}, {2:0.0}) {3} # Useitem -cmd.useitem.desc=使用(左鍵單擊)手上的物品 -cmd.useitem.use=使用了一個物品。 +cmd.useitem.desc=ʹãIΓϵƷ +cmd.useitem.use=ʹһƷ [bot] # ChatBots. Naming style: bot.. # Alerts -bot.alerts.start_rain=§c天氣變化:開始下雨了。§r -bot.alerts.end_rain=§c天氣變化:雨停了。§r -bot.alerts.start_thunderstorm=§c天氣變化:現在是雷雨天。§r -bot.alerts.end_thunderstorm=§c天氣變化:現在不再是雷雨天了。§r +bot.alerts.start_rain=c׃_ʼˡr +bot.alerts.end_rain=c׃ͣˡr +bot.alerts.start_thunderstorm=c׃F졣r +bot.alerts.end_thunderstorm=c׃Fڲˡr # Anti AFK -bot.antiafk.not_using_terrain_handling=當前未啟用地形處理,如果你想使用相關的特性,請在設定中啟用它。當前將繼續使用替代方法執行(定時傳送命令)。 -bot.antiafk.swapping=最短時間大於最長時間,已將它們交換。 -bot.antiafk.invalid_walk_range=當前提供的行走範圍無效,它必須是一個大於0的正整數,將使用預設值5! +bot.antiafk.not_using_terrain_handling=ǰδõ̎ʹPԣՈOІǰ^mʹУr +bot.antiafk.swapping=̕rgLrgьQ +bot.antiafk.invalid_walk_range=ǰṩ߹oЧһ0ʹAOֵ5! # AutoAttack -bot.autoAttack.invalidcooldown=攻擊冷卻時間值不能小於0,已使用自動作為預設值 +bot.autoAttack.invalidcooldown=srgֵС0ʹԄAOֵ # AutoCraft -bot.autoCraft.cmd=自動製作ChatBot命令 -bot.autoCraft.alias=自動製作ChatBot命令的別名 -bot.autoCraft.cmd.list=已載入{0}個配方:{1} -bot.autoCraft.cmd.resetcfg=將配置重置為預設值 -bot.autoCraft.recipe_not_exist=指定的配方名稱不存在。請檢查配置檔案。 -bot.autoCraft.no_recipe_name=請指定要製作的配方名稱。 -bot.autoCraft.stop=AutoCraft已停止 -bot.autoCraft.available_cmd=可用命令:{0}。可使用 /autocraft help <命令名> 瞭解更多資訊。您可以使用 /ac 作為命令別名。 -bot.autoCraft.help.load=載入配置檔案。 -bot.autoCraft.help.list=列出可用配方。 -bot.autoCraft.help.reload=重新載入配置檔案。 -bot.autoCraft.help.resetcfg=將預設示例配置寫入預設位置。 -bot.autoCraft.help.start=開始製作。用法:/autocraft start <配方名稱> -bot.autoCraft.help.stop=停止當前正在進行的製作過程 -bot.autoCraft.help.help=獲取命令描述。用法: /autocraft help <命令名> -bot.autoCraft.loaded=已成功載入 -bot.autoCraft.start=AutoCraft啟動中:{0} -bot.autoCraft.start_fail=無法啟動AutoCraft。請檢查用於製作{0}的可用材料 -bot.autoCraft.table_not_found=找不到工作臺 -bot.autoCraft.close_inventory=容器#{0}被AutoCraft關閉 -bot.autoCraft.missing_material=缺失材料:{0} -bot.autoCraft.aborted=製作被終止!請檢查可用材料。 -bot.autoCraft.craft_fail=製作失敗!等待更多材料 -bot.autoCraft.timeout=動作超時!原因:{0} -bot.autoCraft.error.config=分析配置時出錯:{0} -bot.autoCraft.exception.name_miss=解析配方時缺少配方名稱 -bot.autoCraft.exception.duplicate=指定了重複的配方名稱:{0} -bot.autoCraft.debug.no_config=找不到配置。請新建一個。 -bot.autocraft.invaild_slots=配方的物品數量不匹配,已自動調整。 -bot.autocraft.invaild_invaild_result=無效的輸出物品! +bot.autoCraft.cmd=ԄuChatBot +bot.autoCraft.alias=ԄuChatBotĄe +bot.autoCraft.cmd.list=d{0}䷽{1} +bot.autoCraft.cmd.resetcfg=ÞAOֵ +bot.autoCraft.recipe_not_exist=ָ䷽QڡՈzÙn +bot.autoCraft.no_recipe_name=ՈָҪu䷽Q +bot.autoCraft.stop=AutoCraftֹͣ +bot.autoCraft.available_cmd={0}ʹ /autocraft help <> tYӍʹ /ac e +bot.autoCraft.help.load=dÙn +bot.autoCraft.help.list=г䷽ +bot.autoCraft.help.reload=dÙn +bot.autoCraft.help.resetcfg=AOʾÌAOλá +bot.autoCraft.help.start=_ʼu÷/autocraft start <䷽Q> +bot.autoCraft.help.stop=ֹͣǰMеu^ +bot.autoCraft.help.help=@ȡ÷ /autocraft help <> +bot.autoCraft.loaded=ѳɹd +bot.autoCraft.start=AutoCraftУ{0} +bot.autoCraft.start_fail=oAutoCraftՈzu{0}Ŀò +bot.autoCraft.table_not_found=Ҳ_ +bot.autoCraft.close_inventory=#{0}AutoCraftP] +bot.autoCraft.missing_material=ȱʧϣ{0} +bot.autoCraft.aborted=uKֹՈzòϡ +bot.autoCraft.craft_fail=uʧȴ +bot.autoCraft.timeout=rԭ{0} +bot.autoCraft.error.config=Õre{0} +bot.autoCraft.exception.name_miss=䷽rȱ䷽Q +bot.autoCraft.exception.duplicate=ָ}䷽Q{0} +bot.autoCraft.debug.no_config=ҲáՈ½һ +bot.autocraft.invaild_slots=䷽Ʒƥ䣬Ԅ{ +bot.autocraft.invaild_invaild_result=oЧݔƷ # AutoDig -bot.autodig.start_delay=將在 {0:0.0} 秒後開始自動挖掘。 -bot.autodig.dig_timeout=挖掘方塊超時,重試。 -bot.autodig.not_allow=當前所看向的方塊不在允許挖掘列表中。 -bot.autodig.cmd=自動挖掘 ChatBot 命令 -bot.autodig.available_cmd=可用命令:{0}。可使用 /digbot help <命令名> 瞭解更多資訊。 -bot.autodig.start=開始自動挖掘。 -bot.autodig.stop=停止自動挖掘。 -bot.autodig.help.start=開始執行自動挖掘。 -bot.autodig.help.stop=停止執行自動挖掘。 -bot.autodig.help.help=獲取命令描述。用法:/digbot help <命令名> +bot.autodig.start_delay= {0:0.0} _ʼԄھ +bot.autodig.dig_timeout=ھ򷽉Krԇ +bot.autodig.not_allow=ǰķKSھбС +bot.autodig.cmd=Ԅھ ChatBot +bot.autodig.available_cmd={0}ʹ /digbot help <> tYӍ +bot.autodig.start=_ʼԄھ +bot.autodig.stop=ֹͣԄھ +bot.autodig.help.start=_ʼԄھ +bot.autodig.help.stop=ֹͣԄھ +bot.autodig.help.help=@ȡ÷/digbot help <> # AutoDrop -bot.autoDrop.cmd=AutoDrop ChatBot命令 -bot.autoDrop.alias=AutoDrop ChatBot命令別名 -bot.autoDrop.on=已啟用AutoDrop -bot.autoDrop.off=已禁用AutoDrop -bot.autoDrop.added=已新增物品{0} -bot.autoDrop.incorrect_name=物品名稱不正確:{0}。請再試一次。 -bot.autoDrop.removed=已刪除物品{0} -bot.autoDrop.not_in_list=物品不在列表中 -bot.autoDrop.no_item=列表中沒有物品 -bot.autoDrop.list=列表中總計{0}個物品:\n {1} -bot.autoDrop.switched= 切換到{0}模式。 -bot.autoDrop.unknown_mode=未知模式。可用的模式:Include, Exclude, Everything -bot.autoDrop.no_mode=無法從配置中讀取丟棄模式(drop mode)。使用Include模式。 -bot.autoDrop.no_inventory=找不到容器{0}! +bot.autoDrop.cmd=AutoDrop ChatBot +bot.autoDrop.alias=AutoDrop ChatBote +bot.autoDrop.on=цAutoDrop +bot.autoDrop.off=ѽAutoDrop +bot.autoDrop.added=Ʒ{0} +bot.autoDrop.incorrect_name=ƷQ_{0}ՈԇһΡ +bot.autoDrop.removed=фhƷ{0} +bot.autoDrop.not_in_list=Ʒб +bot.autoDrop.no_item=бЛ]Ʒ +bot.autoDrop.list=бпӋ{0}Ʒ\n {1} +bot.autoDrop.switched= ГQ{0}ģʽ +bot.autoDrop.unknown_mode=δ֪ģʽõģʽInclude, Exclude, Everything +bot.autoDrop.no_mode=oxȡGģʽdrop modeʹIncludeģʽ +bot.autoDrop.no_inventory=Ҳ{0}! # AutoFish -bot.autoFish.no_inv_handle=未啟用庫存(物品)處理。將不支援檢查魚竿耐久度都和自動切換魚竿。 -bot.autoFish.start=將在 {0:0.0} 秒後自動開始釣魚。 -bot.autoFish.throw=拋竿成功。 -bot.autoFish.caught=釣到了一條魚!(總計 {0} 條) -bot.autoFish.caught_at=在 ({0:0.0},{1:0.0},{2:0.0}) 掉到了一條魚!(總計 {0} 條) -bot.autoFish.no_rod=沒有可使用的釣魚竿了。也許是用壞了或耐久度過低? -bot.autoFish.despawn=魚鉤消失,將會重新拋竿。 -bot.autoFish.fishing_timeout=釣魚超時,將於幾秒鐘後重新拋竿。 -bot.autoFish.cast_timeout=拋竿超時,將在等待一段時間後重試。(超時時間延長至 {0:0.0} 秒) -bot.autoFish.update_lookat=更新當前朝向 偏航角(yaw) = {0:0.00}, 俯仰角(pitch) = {1:0.00}。 -bot.autoFish.switch=切換到位於揹包 {0} 位置的魚竿,剩餘耐用 {1}/64。 +bot.autoFish.no_inv_handle=δÎ(Ʒ)֧̎Ԯz~;öȶԄГQ~͡ +bot.autoFish.start= {0:0.0} Ԅ_ʼ~ +bot.autoFish.throw=ͳɹ +bot.autoFish.caught=឵һl~!Ӌ {0} l +bot.autoFish.caught_at= ({0:0.0},{1:0.0},{2:0.0}) һl~Ӌ {0} l +bot.autoFish.no_rod=]пʹõ~ˡҲSÉ˻;ö^ͣ +bot.autoFish.despawn=~^ʧ’͡ +bot.autoFish.fishing_timeout=~r춎’͡ +bot.autoFish.cast_timeout=ͳrڵȴһΕrgԇrrgL {0:0.0} 룩 +bot.autoFish.update_lookat=®ǰ ƫ(yaw) = {0:0.00}, (pitch) = {1:0.00} +bot.autoFish.switch=ГQλ춓d {0} λõ~ͣʣN {1}/64 # AutoRelog -bot.autoRelog.launch=已啟動,嘗試了{0}次重新連線 -bot.autoRelog.no_kick_msg=在沒有kick訊息檔案的情況下初始化 -bot.autoRelog.loading=從檔案{0}載入訊息 -bot.autoRelog.loaded=已載入訊息:{0} -bot.autoRelog.not_found=找不到檔案或目錄:{0} -bot.autoRelog.curr_dir=當前目錄為:{0} -bot.autoRelog.ignore_user_logout=由使用者或MCC bot啟動的斷開連線。忽略。 -bot.autoRelog.disconnect_msg=連線斷開,收到訊息:{0} -bot.autoRelog.reconnect_always=忽略kick訊息,仍要重新連線。 -bot.autoRelog.reconnect=資訊包含 '{0}'。重新連線。 -bot.autoRelog.reconnect_ignore=不包含任何已定義關鍵字的訊息,忽略。 -bot.autoRelog.wait=等待{0}秒後重新連線... +bot.autoRelog.launch=цӣLԇ{0}B +bot.autoRelog.no_kick_msg=ڛ]kickӍϢnr³ʼ +bot.autoRelog.loading=ęn{0}dӍϢ +bot.autoRelog.loaded=dӍϢ{0} +bot.autoRelog.not_found=ҲnĿ䛣{0} +bot.autoRelog.curr_dir=ǰĿ䛞飺{0} +bot.autoRelog.ignore_user_logout=ʹ߻MCC botӵĔ_Bԡ +bot.autoRelog.disconnect_msg=B_յӍϢ{0} +bot.autoRelog.reconnect_always=kickӍϢҪB +bot.autoRelog.reconnect=YӍ '{0}'B +bot.autoRelog.reconnect_ignore=κѶxPIֵӍϢԡ +bot.autoRelog.wait=ȴ{0:0.000}B... # AutoRespond -bot.autoRespond.loading=正在從'{0}'載入匹配項 -bot.autoRespond.file_not_found=找不到檔案或目錄: '{0}' -bot.autoRespond.loaded_match=載入匹配項:\n{0} -bot.autoRespond.no_trigger=這個匹配永遠不會觸發:\n{0} -bot.autoRespond.no_action=匹配沒有對應操作:\n{0} -bot.autoRespond.match_run=進行操作:{0} +bot.autoRespond.loading=ڏ'{0}'dƥ +bot.autoRespond.file_not_found=ҲnĿ䛣 '{0}' +bot.autoRespond.loaded_match=dƥ헣\n{0} +bot.autoRespond.no_trigger=@ƥh|l\n{0} +bot.autoRespond.no_action=ƥ]Ќ:\n{0} +bot.autoRespond.match_run=Mв{0} bot.autoRespond.match=match: {0}\nregex: {1}\naction: {2}\nactionPrivate: {3}\nactionOther: {4}\nownersOnly: {5}\ncooldown: {6} # ChatLog -bot.chatLog.invalid_file=路徑'{0}'包含無效字元。 +bot.chatLog.invalid_file=·'{0}'oЧԪ # Mailer -bot.mailer.init=使用設定初始化Mailer: -bot.mailer.init.db= - 資料庫檔案:{0} -bot.mailer.init.ignore= - 忽略列表:{0} -bot.mailer.init.public= - 公開互動:{0} -bot.mailer.init.max_mails= - 每位玩家最多郵件數:{0} -bot.mailer.init.db_size= - 最大資料庫大小:{0} -bot.mailer.init.mail_retention= - 郵件保留天數:{0} +bot.mailer.init=ʹOʼMailer +bot.mailer.init.db= - Yώn{0} +bot.mailer.init.ignore= - б{0} +bot.mailer.init.public= - _ӣ{0} +bot.mailer.init.max_mails= - ÿλ]{0} +bot.mailer.init.db_size= - YώС{0} +bot.mailer.init.mail_retention= - ]씵{0} -bot.mailer.init_fail.db_size=無法啟用Mailer:最大資料庫大小必須大於0。請檢查設定。 -bot.mailer.init_fail.max_mails=無法啟用Mailer:每個玩家的最大郵件數必須大於0。請檢查設定。 -bot.mailer.init_fail.mail_retention=無法啟用Mailer:郵件保留天數必須大於0。請檢查設定。 +bot.mailer.init_fail.db_size=oMailerYώС횴0ՈzO +bot.mailer.init_fail.max_mails=oMailerÿҵ]횴0ՈzO +bot.mailer.init_fail.mail_retention=oMailer]씵횴0ՈzO -bot.mailer.create.db=建立新資料庫檔案:{0} -bot.mailer.create.ignore=建立新忽略列表:{0} -bot.mailer.load.db=載入資料庫檔案:{0} -bot.mailer.load.ignore=載入忽略列表: +bot.mailer.create.db=Yώn{0} +bot.mailer.create.ignore=ºб{0} +bot.mailer.load.db=dYώn{0} +bot.mailer.load.ignore=dб -bot.mailer.cmd=Mailer 命令 +bot.mailer.cmd=Mailer -bot.mailer.saving=正在儲存郵件:{0} -bot.mailer.user_ignored={0}已被忽略! -bot.mailer.process_mails=正在查詢要傳送的郵件 @ {0} -bot.mailer.delivered=已傳送:{0} +bot.mailer.saving=ڃ]{0} +bot.mailer.user_ignored={0}ѱ! +bot.mailer.process_mails=ڲԃҪ͵] @ {0} +bot.mailer.delivered=тͣ{0} -bot.mailer.cmd.getmails=--- 資料庫中的郵件 ---\n{0} -bot.mailer.cmd.getignored=--- 忽略列表 ---\n{0} -bot.mailer.cmd.ignore.added=新增{0}到忽略列表! -bot.mailer.cmd.ignore.removed={0}已從忽略列表中刪除! -bot.mailer.cmd.ignore.invalid=丟失或無效的名稱。用法:{0}<使用者名稱> -bot.mailer.cmd.help=檢視用法 +bot.mailer.cmd.getmails=--- Yώе] ---\n{0} +bot.mailer.cmd.getignored=--- б ---\n{0} +bot.mailer.cmd.ignore.added={0}б +bot.mailer.cmd.ignore.removed={0}яĺбЄh +bot.mailer.cmd.ignore.invalid=GʧoЧQ÷{0}<ʹQ> +bot.mailer.cmd.help=zҕ÷ # Maps -bot.map.cmd.desc=渲染物品形式的地圖 -bot.map.cmd.not_found=沒有找到編號為 '{0}' 的地圖! -bot.map.cmd.invalid_id=無效的地圖編號,必須是一個數字。 -bot.map.received=從伺服器接收到的地圖有: -bot.map.no_maps=沒有收到過地圖! -bot.map.received_map=收到一個編號為 {0} 的新地圖。 -bot.map.rendered=成功接收到地圖 '{0}' ,儲存為 '{1}' -bot.map.failed_to_render=無法渲染編號為 '{0}' 的地圖。 -bot.map.list_item=- 地圖編號:{0}(最近更新於:{1}) -bot.map.windows_only=儲存地圖到檔案功能目前僅可用於Windows平臺。 +bot.map.cmd.desc=ȾƷʽĵ؈D +bot.map.cmd.not_found=]ҵ̖ '{0}' ĵ؈D +bot.map.cmd.invalid_id=oЧĵ؈D̖һ֡ +bot.map.received=ŷյĵ؈DУ +bot.map.no_maps=]յ^؈D +bot.map.received_map=յһ̖ {0} µ؈D +bot.map.rendered=ɹյ؈D '{0}' '{1}' +bot.map.failed_to_render=oȾ̖ '{0}' ĵ؈D +bot.map.list_item=- ؈D̖{0}춣{1} +bot.map.scale=춮ǰK˳ߴƣ؈DС ({0}x{1}) sС ({2}x{3}) # ReplayCapture -bot.replayCapture.cmd=replay 命令 -bot.replayCapture.created=已建立重播檔案。 -bot.replayCapture.stopped=錄製已停止。 -bot.replayCapture.restart=錄製已停止。請重新啟動程式以進行另一段錄製。 +bot.replayCapture.cmd=replay +bot.replayCapture.created=ѽزn +bot.replayCapture.stopped=uֹͣ +bot.replayCapture.restart=uֹͣՈ†ӳʽMһu # Follow player -cmd.follow.desc=讓機器人跟隨指定的玩家 -cmd.follow.usage=follow [-f] (使用 -f 允許機器人途徑不安全的地方) -cmd.follow.already_stopped=已經停止過了 -cmd.follow.stopping=已停止! -cmd.follow.invalid_name=提供的玩家名無效! -cmd.follow.invalid_player=指定的玩家沒有上線或距離太遠! -cmd.follow.cant_reach_player=無法尋路到該玩家,有可能他在沒有載入的區塊中,或是距離太遠,也有可能是間隙或水體等障礙使機器人無法到達。 -cmd.follow.already_following=已經在跟隨 {0} 了! -cmd.follow.switched=切換為跟隨 {0}! -cmd.follow.started=開始跟隨 {0}! -cmd.follow.unsafe_enabled=啟用了允許途徑不安全位置(注意:機器人可能會受傷或死亡!) -cmd.follow.note=注意:此機器人的速度很慢,你需要慢慢地走,而且要保持很近的距離,這樣它才能跟上,有點像拿著食物讓動物跟著你。這是由於尋路演算法的限制,我們正在努力改進它。 -cmd.follow.player_came_to_the_range=玩家 {0} 回到了可尋路範圍之內! -cmd.follow.resuming=繼續跟隨! -cmd.follow.player_left_the_range=玩家 {0} 離開了可尋路範圍! -cmd.follow.pausing=已暫停! -cmd.follow.player_left=玩家 {0} 離開了伺服器! -cmd.follow.stopping=已停止! +cmd.follow.desc=׌C˸Sָ +cmd.follow.usage=follow [-f] (ʹ -f SC;ȫĵط) +cmd.follow.already_stopped=ѽֹͣ^ +cmd.follow.stopping=ֹͣ +cmd.follow.invalid_name=ṩoЧ +cmd.follow.invalid_player=ָқ]Ͼx̫h +cmd.follow.cant_reach_player=o·ԓңпڛ]dą^KУǾx̫hҲпg϶ˮwϵKʹC˟o_ +cmd.follow.already_following=ѽڸS {0} ˣ +cmd.follow.switched=ГQS {0} +cmd.follow.started=_ʼS {0} +cmd.follow.unsafe_enabled=S;ȫλãע⣺C˿ܕ܂ +cmd.follow.note=ע⣺˙C˵ٶȺҪߣҪֺܽľx@ܸϣcʳ׌㡣@춌·㷨ƣ҂ŬM +cmd.follow.player_came_to_the_range= {0} ص˿Ɍ·֮ȣ +cmd.follow.resuming=^mS +cmd.follow.player_left_the_range= {0} x_˿Ɍ· +cmd.follow.pausing=ѕͣ +cmd.follow.player_left= {0} x_ŷ +cmd.follow.stopping=ֹͣ # Script -bot.script.not_found=§8[MCC] [{0}] 找不到指令碼檔案:{1} -bot.script.file_not_found=找不到檔案:'{0}' -bot.script.fail=指令碼'{0}'執行失敗 ({1})。 -bot.script.pm.loaded=指令碼'{0}'載入。 +bot.script.not_found=8[MCC] [{0}] Ҳָan{1} +bot.script.file_not_found=Ҳn'{0}' +bot.script.fail=ָa'{0}'ʧ ({1}) +bot.script.pm.loaded=ָa'{0}'d롣 # ScriptScheduler -bot.scriptScheduler.loaded_task=已載入任務:\n{0} -bot.scriptScheduler.no_trigger=這個任務永遠不會觸發:\n{0} -bot.scriptScheduler.no_action=任務沒有對應操作:\n{0} -bot.scriptScheduler.running_time=時間 / 執行中的操作:{0} -bot.scriptScheduler.running_inverval=間隔 / 執行中的操作:{0} -bot.scriptScheduler.running_login=登入 / 執行中的操作:{0} +bot.scriptScheduler.loaded_task=d΄գ\n{0} +bot.scriptScheduler.no_trigger=@΄h|l\n{0} +bot.scriptScheduler.no_action=΄՛]Ќ\n{0} +bot.scriptScheduler.running_time=rg / еIJ{0} +bot.scriptScheduler.running_inverval=g / еIJ{0} +bot.scriptScheduler.running_login= / еIJ{0} bot.scriptScheduler.task=triggeronfirstlogin: {0}\n triggeronlogin: {1}\n triggerontime: {2}\n triggeroninterval: {3}\n timevalue: {4}\n timeinterval: {5}\n action: {6} # TestBot -bot.testBot.told=Bot:{0}對我說:{1} -bot.testBot.said=Bot:{0}說:{1} +bot.testBot.told=Bot{0}f{1} +bot.testBot.said=Bot{0}f{1} [config] -config.load=已從 {0} 載入設定。 -config.load.fail=§c載入設定時出錯:§r -config.write.fail=§儲存備份檔案({0})時出錯:§r -config.backup.fail=§c寫入設定檔案({0})時出錯:§r -config.saving=§a當前設定已儲存至 {0} +config.load=я {0} dO +config.load.fail=cdOrer +config.write.fail=샦ݙn{0}rer +config.backup.fail=cOn{0}rer +config.saving=aǰOу {0} # Head -config.Head=啟動配置檔案\n\n# 對 MCC(Minecraft 命令列客戶端)不熟悉?請看這個文件:https://mccteam.github.io/guide/configuration.html\n\n# 想升級到較新的版本嗎?請訪問 https://github.com/MCCTeam/Minecraft-Console-Client/#download +config.Head=Ùn\n\n# MCCMinecraft п͑ˣϤՈ@ļhttps://mccteam.github.io/guide/configuration.html\n\n# ^µİ汾᣿ՈL https://github.com/MCCTeam/Minecraft-Console-Client/#download # Main.General -config.Main.General.account=Login請填寫郵箱或玩家名稱。若要以離線模式登入請使用"-"作為密碼。若留空則使用互動式登入。 -config.Main.General.login=遊戲伺服器的地址和埠,可填入域名或IP地址。(可刪除埠欄位,會自動解析SRV記錄) -config.Main.General.server_info=帳戶型別:mojang 或是 microsoft。此項設定也會影響互動式登入。 -config.Main.General.method=微軟賬戶的登入方式:mcc 或是 browser(手動在網頁上登入)。 +config.Main.General.account=LoginՈ]QҪxģʽՈʹ"-"ܴaՄtʹûʽ롣 +config.Main.General.login=[ŷĵַͲIPַɄhλԄӽSRVӛ䛣 +config.Main.General.server_info=̈́emojang microsoftOҲӰ푻ʽ롣 +config.Main.General.method=΢ܛ~ĵ뷽ʽmcc browserքھWϵ룩 # Main.Advanced -config.Main.Advanced=在更改這裏的某項設定之前,請確保你理解了該選項的影響。 -config.Main.Advanced.language=請使用Minecraft的語言程式碼填寫,詳見 https://github.com/MCCTeam/Minecraft-Console-Client/discussions/2239 -config.Main.Advanced.internal_cmd_char=MCC內部命令的字首,可使用 "none", "slash"(/) 或 "backslash"(\)。 -config.Main.Advanced.message_cooldown=控制向伺服器傳送訊息的最小間隔時間(秒)。 -config.Main.Advanced.bot_owners=設定機器人的所有者。/!\伺服器管理員可以偽裝成任何玩家! -config.Main.Advanced.mc_version=遊戲版本,可使用 "auto"(自動) 或類似 "1.X.X" 的值。設定具體版本將跳過從伺服器解析的過程。 -config.Main.Advanced.mc_forge=可使用 "auto"(自動),"no"(禁用) 或是 "force"(強制啟用,僅在 1.13 及更高的版本中可用)。 -config.Main.Advanced.brand_info=客戶端標識,可用 "mcc","vanilla"(原版客戶端) 或 "none"(空標識)。這用於改變MCC向伺服器傳送的客戶端標識內容。 -config.Main.Advanced.chatbot_log_file=留空將禁用 ChatBot 寫入日誌檔案。 -config.Main.Advanced.private_msgs_cmd_name=遠端控制功能將會使用它。 -config.Main.Advanced.show_system_messages=顯示遊戲伺服器的系統訊息(來自管理員或命令方塊等)。 -config.Main.Advanced.show_xpbar_messages=顯示經驗條上方的訊息,如果被此類訊息刷屏請禁用此選項。 -config.Main.Advanced.show_chat_links=解碼聊天資訊裡的連結,並在控制檯單獨顯示。 -config.Main.Advanced.show_inventory_layout=以字元畫形式顯示庫存佈局。 -config.Main.Advanced.terrain_and_movements=開啟地形處理將消耗更多的記憶體、CPU和網路頻寬,但這允許你進行移動以及和方塊互動。 -config.Main.Advanced.inventory_handling=啟用庫存處理(可操作揹包、箱子等容器)。 -config.Main.Advanced.entity_handling=啟用實體處理。 -config.Main.Advanced.session_cache=如何快取會話令牌。可使用 "none"(不快取),"memory"(記憶體快取) 或 "disk"(磁碟快取)。 -config.Main.Advanced.profilekey_cache=如何快取聊天簽名金鑰。可使用 "none"(不快取),"memory"(記憶體快取) 或 "disk"(磁碟快取)。 -config.Main.Advanced.resolve_srv_records=可填寫 "no","fast"(超時時間為五秒鐘)或是 "yes"。加入某些伺服器需要開啟此項。 -config.Main.Advanced.account_list=AccountList:使你可以不用輸入賬號資訊而快速在多個賬號間切換\n# 可用命令示例:"/tell reco Player2","/connect Player1" -config.Main.Advanced.server_list=ServerList:可用使用伺服器別名快速連線到該伺服器\n# 別名不能包含空格和小數點",而且 "localhost" 不能作為別名使用。\n# 可用命令示例:"/tell connect Server1","/connect Server2" -config.Main.Advanced.player_head_icon=使用玩家面板頭像作為視窗圖示,這僅在部分舊版控制檯中有效。 -config.Main.Advanced.exit_on_failure=發生錯誤時是否直接退出,用於在非互動式指令碼中使用MCC。 -config.Main.Advanced.script_cache=快取已編譯的指令碼,以便在低端裝置上更快的載入。 -config.Main.Advanced.timestamps=在聊天資訊頭部新增時間戳。 -config.Main.Advanced.auto_respawn=死亡時自動重生(開啟前請確保你的出生點是安全的) -config.Main.Advanced.minecraft_realms=啟用對加入我的世界領域(Realms)伺服器的支援。 -config.Main.Advanced.move_head_while_walking=在移動時轉向頭部。 -config.Main.Advanced.timeout=與伺服器的TCP連線超時時間(秒)。 -config.Main.Advanced.enable_emoji=如果關閉,Emoji表情符號將被替換成更簡單的字元(用於 "/chunk status" 命令) -config.Main.Advanced.movement_speed=高於 2 的移動速度可能會被檢測為作弊。 -config.Main.Advanced.language.invaild=無效的語言程式碼! +config.Main.Advanced=ڸ@YijO֮ǰՈ_ԓx헵Ӱ푡 +config.Main.Advanced.language=ՈʹMinecraftZԳʽaԔҊ https://github.com/MCCTeam/Minecraft-Console-Client/discussions/2239 +config.Main.Advanced.internal_cmd_char=MCCȲףʹ "none", "slash"(/) "backslash"(\) +config.Main.Advanced.message_cooldown=ŷӍϢСgrg룩 +config.Main.Advanced.bot_owners=OC˵ߡ/!\ŷTԂbκ! +config.Main.Advanced.mc_version=[汾ʹ "auto"(Ԅ) "1.X.X" ֵOw汾^ŷ^̡ +config.Main.Advanced.mc_forge=ʹ "auto"(Ԅ)"no"() "force"(ƆãH 1.13 ߵİ汾п) +config.Main.Advanced.brand_info=͑˘R "mcc""vanilla"(ԭ͑) "none"(՘R)@춸׃MCCŷ͵Ŀ͑˘Rݡ +config.Main.Advanced.chatbot_log_file=Ռ ChatBot In +config.Main.Advanced.private_msgs_cmd_name=h˿ƹ܌ʹ +config.Main.Advanced.show_system_messages=@ʾ[ŷϵyӍϢԹTKȣ +config.Main.Advanced.show_xpbar_messages=@ʾlϷӍϢӍϢˢՈôx헡 +config.Main.Advanced.show_chat_links=aYӍeBYKڿƙΪ@ʾ +config.Main.Advanced.show_inventory_layout=Ԫʽ@ʾѾ֡ +config.Main.Advanced.terrain_and_movements=_̎팢ĸӛwCPU;W·l@SMƄԼͷKӡ +config.Main.Advanced.inventory_handling=Î̎ɲdӵ +config.Main.Advanced.entity_handling=Ìw̎ +config.Main.Advanced.session_cache=οȡԒơʹ "none"(ȡ)"memory"(ӛwȡ) "disk"(ŵȡ) +config.Main.Advanced.profilekey_cache=οȡ캞耡ʹ "none"(ȡ)"memory"(ӛwȡ) "disk"(ŵȡ) +config.Main.Advanced.resolve_srv_records= "no""fast"rrg犣 "yes"ijЩŷҪ_헡 +config.Main.Advanced.account_list=AccountListʹԲݔ~̖YӍڶ~̖gГQ\n# ʾ"/tell reco Player2""/connect Player1" +config.Main.Advanced.server_list=ServerListʹŷeBԓŷ\n# eܰոСc" "localhost" eʹá\n# ʾ"/tell connect Server1""/connect Server2" +config.Main.Advanced.player_head_icon=ʹ^ҕDʾ@HڲfƙЧ +config.Main.Advanced.exit_on_failure=le`rǷֱ˳ڷǻʽָaʹMCC +config.Main.Advanced.script_cache=ȡѾgָaԱڵͶbϸd롣 +config.Main.Advanced.timestamps=YӍ^rg +config.Main.Advanced.auto_respawn=rԄ_ǰՈ_ijcǰȫģ +config.Main.Advanced.minecraft_realms=ÌҵI(Realms)ŷ֧Ԯ +config.Main.Advanced.move_head_while_walking=ƄӕrD^ +config.Main.Advanced.timeout=cŷTCPBrrg룩 +config.Main.Advanced.enable_emoji=P]Emoji̖QɸεԪ "/chunk status"  +config.Main.Advanced.movement_speed= 2 Ƅٶȿܕzyס +config.Main.Advanced.language.invaild=oЧZԳʽa +config.Main.Advanced.TerminalColorDepth= "none""bit_4""bit_8" "bit_24"ͨ^eģʽµIzy֧Ԯɫȡ +config.Main.Advanced.MinTerminalWidth=ʹýKˌȁӋ@ʾӰСrСȡ +config.Main.Advanced.MinTerminalHeight=ʹýK˸߶ȁӋ@ʾӰСrС߶ȡ # Signature -config.Signature=聊天簽名相關設定(影響1.19及以上版本) -config.Signature.LoginWithSecureProfile=僅微軟賬戶可用。如禁用此項,將無法簽名訊息和進入某些的伺服器。 -config.Signature.SignChat=是否簽名傳送的聊天訊息。 -config.Signature.SignMessageInCommand=是否簽名指令中的訊息。例如"/msg"和"/me"中的訊息。 -config.Signature.MarkLegallySignedMsg=是否使用綠色色塊標識擁有合法簽名的聊天。 -config.Signature.MarkModifiedMsg=是否使用黃色色塊標識被伺服器更改過的聊天。 -config.Signature.MarkIllegallySignedMsg=是否使用紅色色塊標識沒有合法簽名的聊天。 -config.Signature.MarkSystemMessage=是否使用灰色色塊標識系統訊息(它們總是不會被簽名)。 -config.Signature.ShowModifiedChat=設定為 true,顯示被伺服器修改過的資訊;設定為 false,顯示經過簽名的原始資訊。 -config.Signature.ShowIllegalSignedChat=是否顯示沒有被正確簽名的聊天訊息。 +config.Signature=캞POӰ1.19ϰ汾 +config.Signature.LoginWithSecureProfile=H΢ܛ~áô헣oӍϢMijЩŷ +config.Signature.SignChat=Ƿ͵ӍϢ +config.Signature.SignMessageInCommand=ǷָеӍϢ"/msg""/me"еӍϢ +config.Signature.MarkLegallySignedMsg=ǷʹþGɫɫKRкϷ졣 +config.Signature.MarkModifiedMsg=ǷʹSɫɫKRŷ^졣 +config.Signature.MarkIllegallySignedMsg=ǷʹütɫɫKR]кϷ졣 +config.Signature.MarkSystemMessage=ǷʹûɫɫKRϵyӍϢDz +config.Signature.ShowModifiedChat=O true@ʾŷ޸^YӍO false@ʾ^ԭʼYӍ +config.Signature.ShowIllegalSignedChat=Ƿ@ʾ]б_ӍϢ # Logging -config.Logging=此項設定僅會影響到控制檯中的資訊(日誌)。 -config.Logging.DebugMessages=請在提交錯誤報告之前先啟用此項。謝謝! -config.Logging.ChatMessages=是否顯示來自伺服器的聊天訊息。 -config.Logging.InfoMessages=資訊性的訊息。(大部分來自MCC內部) -config.Logging.WarningMessages=顯示警告訊息。 -config.Logging.ErrorMessages=顯示錯誤訊息。 -config.Logging.ChatFilter=過濾聊天訊息所用的正規表示式。 -config.Logging.DebugFilter=過濾除錯訊息所用的正規表示式。 -config.Logging.FilterMode=過濾方式:"disable"(禁用),"blacklist"(隱藏匹配的訊息) 或 "whitelist"(僅顯示匹配的訊息) -config.Logging.LogToFile=是否將日誌資訊寫入到檔案。 -config.Logging.LogFile=日誌檔名稱。 -config.Logging.PrependTimestamp=寫入日誌檔案時是否新增時間戳。 -config.Logging.SaveColorCodes=是否保留訊息中的顏色字元。(例如"§b") +config.Logging=OHӰ푵ƙеYӍI +config.Logging.DebugMessages=Ոύe`֮ǰȆô헡xx +config.Logging.ChatMessages=Ƿ@ʾŷӍϢ +config.Logging.InfoMessages=YӍԵӍϢ󲿷ցMCCȲ +config.Logging.WarningMessages=@ʾӍϢ +config.Logging.ErrorMessages=@ʾe`ӍϢ +config.Logging.ChatFilter=^VӍϢõҎʾʽ +config.Logging.DebugFilter=^VeӍϢõҎʾʽ +config.Logging.FilterMode=^Vʽ"disable"ã"blacklist"[ƥӍϢ "whitelist"H@ʾƥӍϢ +config.Logging.LogToFile=ǷIYӍ뵽n +config.Logging.LogFile=InQ +config.Logging.PrependTimestamp=InrǷrg +config.Logging.SaveColorCodes=ǷӍϢеɫԪ"b" # AppVars -config.AppVars.Variables=可以在某些欄位中以"%yourvar%"的形式使用。\n# %username% 和 %serverip% 時保留的變數名。 +config.AppVars.Variables=ijЩλ"%yourvar%"ʽʹá\n# %username% %serverip% r׃ # Proxy -config.Proxy=通過代理連線到伺服器。\n# 如果Mojang/微軟登入服務被防火牆阻斷,設定Enabled_Login=true以使用代理進行登入。\n# 如果到Minecraft遊戲伺服器的連線被防火牆阻止,設定Enabled_Ingame=true以使用代理連線遊戲伺服器。\n# /!\ 在啟用代理前,請確保你的伺服器規則允許使用代理或VPN,否則你可能面臨被封禁等風險! -config.Proxy.Enabled_Login=是否使用代理連線Mojang或微軟的登入伺服器。 -config.Proxy.Enabled_Ingame=是否通過代理連線Minecraft遊戲伺服器。 -config.Proxy.Server=代理伺服器必須允許HTTPS登入。 -config.Proxy.Proxy_Type=支援的代理型別:"HTTP","SOCKS4","SOCKS4a","SOCKS5"。 -config.Proxy.Username=只有連線到受密碼保護的代理才需要。 -config.Proxy.Password=只有連線到受密碼保護的代理才需要。 +config.Proxy=ͨ^Bŷ\n# Mojang/΢ܛձ࣬OEnabled_Login=trueʹôMе롣\n# Minecraft[ŷBֹOEnabled_Ingame=trueʹôB[ŷ\n# /!\ چôǰՈ_ŷҎtSʹôVPNtRLU +config.Proxy.Enabled_Login=ǷʹôBMojang΢ܛĵŷ +config.Proxy.Enabled_Ingame=Ƿͨ^BMinecraft[ŷ +config.Proxy.Server=ŷSHTTPS롣 +config.Proxy.Proxy_Type=֧ԮĴ̈́e"HTTP""SOCKS4""SOCKS4a""SOCKS5" +config.Proxy.Username=ֻBܴaoĴҪ +config.Proxy.Password=ֻBܴaoĴҪ # ChatFormat -config.ChatFormat=MCC會盡力檢測聊天資訊,但有些伺服器有不尋常的聊天格式\n# 當這種情況發生時,你需要在下面自定義匹配聊天所用的正規表示式,詳見 https://mccteam.github.io/guide/configuration.html#chat-format -config.ChatFormat.Builtins=是否啟用MCC內建的聊天檢測規則。設定為 false 以避免與自定義格式衝突。 -config.ChatFormat.UserDefined=是否啟用下方的自定義正規表示式進行聊天檢測。 +config.ChatFormat=MCCMzyYӍЩŷвʽ\n# @NrlrҪԶxƥõҎʾʽԔҊ https://mccteam.github.io/guide/configuration.html#chat-format +config.ChatFormat.Builtins=ǷMCCȽzyҎtO false ԱcԶxʽnͻ +config.ChatFormat.UserDefined=Ƿ·ԶxҎʾʽMzy # MCSettings -config.MCSettings=下面的設定將會被髮送到遊戲伺服器,隻影響一些伺服器端的東西,比如你的面板。 -config.MCSettings.Enabled=如果禁用,下面的設定就不會被髮送到伺服器上。 -config.MCSettings.Locale=請使用Minecraft的語言程式碼填寫,詳見[Main.Advanced.Language] -config.MCSettings.RenderDistance=渲染距離,取值範圍[0 - 255]。 -config.MCSettings.Difficulty=Minecraft 1.7及更早版本難度。"peaceful","easy","normal","difficult"。 -config.MCSettings.ChatMode=使用 "enabled"(完全啟用聊天)、"commands"(僅限命令)或 "disabled"(完全禁用聊天)。這允許你禁言自己... -config.MCSettings.ChatColors=這允許你在伺服器端禁用聊天顏色。 -config.MCSettings.MainHand=在1.9及更高版本中的主手設定。"left"(左手) 或 "right"(右手)。 +config.MCSettings=O͵[ŷbӰһЩŷ˵Ė|塣 +config.MCSettings.Enabled=ãOͲ͵ŷϡ +config.MCSettings.Locale=ՈʹMinecraftZԳʽaԔҊ[Main.Advanced.Language] +config.MCSettings.RenderDistance=Ⱦxȡֵ[0 - 255] +config.MCSettings.Difficulty=Minecraft 1.7汾yȡ"peaceful""easy""normal""difficult" +config.MCSettings.ChatMode=ʹ "enabled"ȫ죩"commands"H "disabled"ȫ죩@SԼ... +config.MCSettings.ChatColors=@Sŷ˽ɫ +config.MCSettings.MainHand=1.9߰汾еO"left"֣ "right"֣ # ChatBot config.ChatBot================================ #\n# Minecraft Console Client Bots #\n# =============================== # # ChatBot.Alerts -config.ChatBot.Alerts=當檢測到特定聊天訊息或特定事件發生時提醒你\n # 對檢測特定玩家的聊天訊息很有用。 -config.ChatBot.Alerts.Beep_Enabled=除了高亮顯示外,當檢測到一個詞時還會播放類似蜂鳴器的嗶嗶聲。 -config.ChatBot.Alerts.Trigger_By_Words=在收到指定的關鍵詞後觸發提醒。 -config.ChatBot.Alerts.Trigger_By_Rain=在開始下雨和停止下雨時觸發提醒。 -config.ChatBot.Alerts.Trigger_By_Thunderstorm=在雷暴天氣的開始與結束觸發提醒。 -config.ChatBot.Alerts.Matches=觸發提醒的聊天關鍵詞列表。 -config.ChatBot.Alerts.Excludes=出現這些關鍵詞後該條訊息一定不觸發提醒。 -config.ChatBot.Alerts.Log_To_File=是否將提醒訊息寫入到日誌檔案。 -config.ChatBot.Alerts.Log_File=日誌檔案的路徑。 +config.ChatBot.Alerts=zyضӍϢض¼lr\n # zyضҵӍϢá +config.ChatBot.Alerts.Beep_Enabled=˸@ʾ⣬zyһ~r߀ƷQƕ +config.ChatBot.Alerts.Trigger_By_Words=յָPI~|lѡ +config.ChatBot.Alerts.Trigger_By_Rain=_ʼֹͣr|lѡ +config.ChatBot.Alerts.Trigger_By_Thunderstorm=ױ_ʼcY|lѡ +config.ChatBot.Alerts.Matches=|lѵPI~б +config.ChatBot.Alerts.Excludes=F@ЩPI~ԓlӍϢһ|lѡ +config.ChatBot.Alerts.Log_To_File=ǷӍϢ뵽In +config.ChatBot.Alerts.Log_File=In· # ChatBot.AntiAFK -config.ChatBot.AntiAfk=定期傳送命令,或讓機器人隨機走動,以避免檢測到掛機後被踢出伺服器\n # /!\啟用前請確保你的伺服器規則不禁止反AFK機制!\n# /!\如果啟用隨機移動,請將機器人圍在圍欄裡,以防走失!(建議尺寸5x5x5) -config.ChatBot.AntiAfk.Delay=執行操作的間隔時間。(秒) -config.ChatBot.AntiAfk.Command=傳送給伺服器的指令。 -config.ChatBot.AntiAfk.Use_Sneak=在傳送指令時是否蹲下。 -config.ChatBot.AntiAfk.Use_Terrain_Handling=啟用地形處理,以使機器人能夠四處移動。 -config.ChatBot.AntiAfk.Walk_Range=機器人可以隨機移動的範圍(注意:範圍越大,速度越慢) -config.ChatBot.AntiAfk.Walk_Retries=嘗試移動失敗幾次後在改為傳送命令模式。 +config.ChatBot.AntiAfk=ڂ׌CSC߄ӣԱzyCᱻ߳ŷ\n # /!\ǰՈ_ŷҎtֹAFKCƣ\n# /!\SCƄӣՈCˇڇeԷʧhߴ5x5x5 +config.ChatBot.AntiAfk.Delay=вgrg룩 +config.ChatBot.AntiAfk.Command=ͽoŷָ +config.ChatBot.AntiAfk.Use_Sneak=ڂָrǷ¡ +config.ChatBot.AntiAfk.Use_Terrain_Handling=õ̎ʹC܉̎Ƅӡ +config.ChatBot.AntiAfk.Walk_Range=C˿SCƄӵĹע⣺ԽٶԽ +config.ChatBot.AntiAfk.Walk_Retries=LԇƄʧ״ڸĞģʽ # ChatBot.AutoAttack -config.ChatBot.AutoAttack=自動攻擊周圍的生物\n# 使用此功能之前,你需要開啟實體處理。\n# /!\確保你的伺服器允許使用自動攻擊。\n# /!\伺服器外掛可能會認為此功能時作弊,並可能會封禁你的賬號,所以請自己檢查伺服器規則是否允許。 -config.ChatBot.AutoAttack.Mode="single"(單目標) 或 "multi"(多目標)。一次攻擊一個生物還是範圍內的所有生物。 -config.ChatBot.AutoAttack.Priority="health"(生命值)或 "distance"(距離)。當使用"single"模式時,以哪一個屬性確定優先順序。 -config.ChatBot.AutoAttack.Cooldown_Time=每次攻擊間的冷卻時間,設定 "Custom = false" 以讓MCC自動計算攻擊速度。 -config.ChatBot.AutoAttack.Interaction=可選項:"Interact"(互動),"Attack"(攻擊) 或 "InteractAt"(互動並攻擊) -config.ChatBot.AutoAttack.Attack_Hostile=是否攻擊敵對生物。 -config.ChatBot.AutoAttack.Attack_Passive=是否攻擊被動生物。 -config.ChatBot.AutoAttack.List_Mode=將實體列表作為 "whitelist"(白名單)還是 "blacklist"(黑名單)。 -config.ChatBot.AutoAttack.Entites_List=所有可用的實體型別可以在這裏找到:https://bit.ly/3Rg68lp +config.ChatBot.AutoAttack=Ԅӹ܇\n# ʹô˹֮ǰҪ_w̎\n# /!\_ŷSʹԄӹ\n# /!\ŷܕJ˹ܕrףKܕ~̖ՈԼzŷҎtǷS +config.ChatBot.AutoAttack.Mode="single"Ŀˣ "multi"Ŀˣһιһ߀ǹȵ +config.ChatBot.AutoAttack.Priority="health"ֵ "distance"xʹ"single"ģʽrһԴ_ +config.ChatBot.AutoAttack.Cooldown_Time=ÿιgsrgO "Custom = false" ׌MCCԄӋ㹥ٶȡ +config.ChatBot.AutoAttack.Interaction=x헣"Interact"ӣ"Attack" "InteractAt"ӁK +config.ChatBot.AutoAttack.Attack_Hostile=Ƿ񹥓 +config.ChatBot.AutoAttack.Attack_Passive=Ƿ񹥓 +config.ChatBot.AutoAttack.List_Mode=wб "whitelist"Σ߀ "blacklist"Σ +config.ChatBot.AutoAttack.Entites_List=пõČẅ́e@Yҵhttps://bit.ly/3Rg68lp # ChatBot.AutoCraft -config.ChatBot.AutoCraft=自動使用揹包中的物品進行合成。\n# 請看 https://mccteam.github.io/guide/chat-bots.html#auto-craft\n# 你需要啟用庫存處理來使用這個功能\n# 如果需要使用工作臺,你還需要啟用地形處理。 -config.ChatBot.AutoCraft.CraftingTable=如果你打算使用工作臺,請填寫它所在的位置。(需要啟用地形處理) -config.ChatBot.AutoCraft.OnFailure=合成失敗時應該怎麼處理,"abort"(中止)或 "wait"(等待)。 -config.ChatBot.AutoCraft.Recipes=Recipes.Name:給該配方起一個獨一無二的名字。(不能包含空白字元)Recipes.Type:合成型別,"player"(揹包2x2)或 "table"(工作臺3x3)\n# Recipes.Result:合成的目標物品\n# Recipes.Slots:合成的物品擺放方式,以從左到右、從上到下的格式填寫。需留空請填寫"Null"。\n# 最新的物品命名請看:https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Inventory/ItemType.cs +config.ChatBot.AutoCraft=ԄʹÓdеƷMкϳɡ\n# Ո https://mccteam.github.io/guide/chat-bots.html#auto-craft\n# ҪÎ̎ʹ@\n# Ҫʹù_߀Ҫõ̎ +config.ChatBot.AutoCraft.CraftingTable=ʹù_ՈڵλáҪõ̎ +config.ChatBot.AutoCraft.OnFailure=ϳʧrԓN̎"abort"ֹ "wait"ȴ +config.ChatBot.AutoCraft.Recipes=Recipes.Nameoԓ䷽һһo֡ܰհԪRecipes.Typeϳ̈́e"player"d2x2 "table"_3x3\n# Recipes.ResultϳɵĿƷ\n# Recipes.SlotsϳɵƷ[ŷʽԏҡϵµĸʽՈ"Null"\n# µƷՈhttps://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Inventory/ItemType.cs # AutoDig -config.ChatBot.AutoDig=自動挖掘方塊。\n# 你可以使用 "/digbot start" 和 "/digbot stop" 指令來控制 AutoDig 的啟停。\n# 由於MCC目前還不支援精確計算方塊的碰撞體積,在獲取看向的方塊時,視線上所有的方塊都被看作是完整的立方體。\n# 查詢方塊的名字,請訪問 https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Mapping/Material.cs -config.ChatBot.AutoDig.Auto_Tool_Switch=自動切換到合適的工具。 -config.ChatBot.AutoDig.Durability_Limit=不會使用低於此耐久度的工具。(需要啟用庫存處理) -config.ChatBot.AutoDig.Drop_Low_Durability_Tools=在當前使用的工具耐久度過低後,是否丟掉它。 -config.ChatBot.AutoDig.Mode="lookat","fixedpos" 或 "both"。挖掘看向的方塊還是固定位置的方塊,或者是兩個條件都滿足的方塊。 -config.ChatBot.AutoDig.Locations=使用 "fixedpos" 或 "both" 模式時,方塊的座標。 -config.ChatBot.AutoDig.Location_Order="distance" 或 "index",當使用 "fixedpos" 模式時,按照到玩家的距離,還是列表中的順序確定挖掘的方塊。 -config.ChatBot.AutoDig.Auto_Start_Delay=進入遊戲後等待多少秒後開始自動挖掘,設定為-1禁用自動開始。 -config.ChatBot.AutoDig.Dig_Timeout=若挖掘一個方塊用時超過這個值,將會重新獲取目標進行挖掘。 -config.ChatBot.AutoDig.Log_Block_Dig=是否輸出挖掘方塊的相關資訊。 -config.ChatBot.AutoDig.List_Type=將方塊列表作為 "whitelist"(白名單)還是 "blacklist"(黑名單)。 +config.ChatBot.AutoDig=Ԅھ򷽉K\n# Ҫõ̎ʹ@ܡ\n# ʹ "/digbot start" "/digbot stop" ָ AutoDig Ćͣ\n# MCCĿǰ߀֧Ԯ_Ӌ㷽Kײweګ@ȡķKrҕеķKw\n# ԃK֣ՈL https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Mapping/Material.cs +config.ChatBot.AutoDig.Auto_Tool_Switch=ԄГQmĹߡ +config.ChatBot.AutoDig.Durability_Limit=ʹõ춴;öȵĹߡҪÎ̎ +config.ChatBot.AutoDig.Drop_Low_Durability_Tools=ڮǰʹõĹ;ö^ᣬǷG +config.ChatBot.AutoDig.Mode="lookat""fixedpos" "both"ھķK߀ǹ̶λõķKǃɂlMķK +config.ChatBot.AutoDig.Locations=ʹ "fixedpos" "both" ģʽrKˡ +config.ChatBot.AutoDig.Location_Order="distance" "index"ʹ "fixedpos" ģʽrյҵľx߀бе_ھķK +config.ChatBot.AutoDig.Auto_Start_Delay=M[ȴ_ʼԄھO-1Ԅ_ʼ +config.ChatBot.AutoDig.Dig_Timeout=ھһKÕr^@ֵ«@ȡĿMھ +config.ChatBot.AutoDig.Log_Block_Dig=Ƿݔھ򷽉KPYӍ +config.ChatBot.AutoDig.List_Type=Kб "whitelist"Σ߀ "blacklist"Σ # ChatBot.AutoDrop -config.ChatBot.AutoDrop=自動從揹包/庫存中丟棄指定的物品\n# 你需要啟用庫存處理來使用這個功能。\n# 可用物品請看 https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Inventory/ItemType.cs -config.ChatBot.AutoDrop.Mode="include"(丟棄列表中的物品),"exclude"(丟棄列表外的所有物品) 或 "everything"(丟棄所有物品) +config.ChatBot.AutoDrop=Ԅӏēd/ЁGָƷ\n# ҪÎ̎ʹ@ܡ\n# ƷՈ https://github.com/MCCTeam/Minecraft-Console-Client/blob/master/MinecraftClient/Inventory/ItemType.cs +config.ChatBot.AutoDrop.Mode="include"GбеƷ"exclude"GбƷ "everything"GƷ # ChatBot.AutoEat -config.ChatBot.AutoEat=在飽食度較低是自動在揹包中尋找食物食用。\n# 你需要啟用庫存處理來使用這個功能。 +config.ChatBot.AutoEat=ʳ^ԄړdЌʳʳá\n# ҪÎ̎ʹ@ܡ # ChatBot.AutoFishing -config.ChatBot.AutoFishing=使用魚竿自動釣魚。指南:https://mccteam.github.io/guide/chat-bots.html#auto-fishingn# /!\ 啟用前請確保伺服器允許自動釣魚。 -config.ChatBot.AutoFishing.Antidespawn=如果你之前沒有啟用過這個選項,請保持它為 false 。 -config.ChatBot.AutoFishing.Mainhand=使用主手還是副手拿魚竿。 -config.ChatBot.AutoFishing.Auto_Start=是否在進入伺服器後自動開始釣魚,禁用此功能後,你需要使用"/usehand"手動使用魚竿一次。 -config.ChatBot.AutoFishing.Cast_Delay=釣到魚後多久開始下一次釣魚(拋竿)。 -config.ChatBot.AutoFishing.Fishing_Delay=進入伺服器後多久後開始自動釣魚。(秒) -config.ChatBot.AutoFishing.Fishing_Timeout=多少秒後沒有釣到魚視為超時。超時後會重新拋竿。 -config.ChatBot.AutoFishing.Durability_Limit=不會使用低於此耐久度的魚竿(魚竿耐久度最高為64)。(需要啟用庫存處理) -config.ChatBot.AutoFishing.Auto_Rod_Switch=在當前魚竿不可用後自動切換到揹包中的其他魚竿。(需要啟用庫存處理) -config.ChatBot.AutoFishing.Stationary_Threshold=魚鉤在X軸和Z軸方向上的移動小於這個值將被認為是靜止的,過高的閾值會在拋竿途中觸發收竿。 -config.ChatBot.AutoFishing.Hook_Threshold=一個「靜止」的魚鉤,在Y軸方向上的移動超過這個閾值將被認為釣到了魚。 -config.ChatBot.AutoFishing.Log_Fish_Bobber=用於調整以上兩個閾值,啟用後會在收到魚鉤實體移動資料包後列印其座標變化。 -config.ChatBot.AutoFishing.Enable_Move=這允許玩家在釣到魚後改變其位置或朝向。(需要啟用地形處理) -config.ChatBot.AutoFishing.Movements=會按照 "1->2->3->4->3->2->1->2->..." 的順序執行。每次可用改變位置、朝向或是都改變。推薦只改變朝向。 +config.ChatBot.AutoFishing=ʹ~Ԅ~ָϣhttps://mccteam.github.io/guide/chat-bots.html#auto-fishingn# /!\ ǰՈ_ŷSԄ~ +config.ChatBot.AutoFishing.Antidespawn=֮ǰ]І^@x헣Ո false +config.ChatBot.AutoFishing.Mainhand=ʹ߀Ǹ~͡ +config.ChatBot.AutoFishing.Auto_Start=ǷMŷԄ_ʼ~ô˹ᣬҪʹ"/usehand"քʹ~һΡ +config.ChatBot.AutoFishing.Cast_Delay=឵~_ʼһ~ͣ +config.ChatBot.AutoFishing.Fishing_Delay=Mŷ_ʼԄ~룩 +config.ChatBot.AutoFishing.Fishing_Timeout=]឵~ҕ鳬rr’͡ +config.ChatBot.AutoFishing.Durability_Limit=ʹõ춴;öȵ~ͣ~;öߞ64ҪÎ̎ +config.ChatBot.AutoFishing.Auto_Rod_Switch=ڮǰ~ͲԄГQdе~͡ҪÎ̎ +config.ChatBot.AutoFishing.Stationary_Threshold=~^XSZSϵƄС@ֵJoֹģ^ߵֵڒ;|lո͡ +config.ChatBot.AutoFishing.Hook_Threshold=һoֹ~^YSϵƄӳ^@ֵJ឵~ +config.ChatBot.AutoFishing.Log_Fish_Bobber={σɂֵյ~^wƄYϰӡ׃ +config.ChatBot.AutoFishing.Enable_Move=@S឵~׃λû򡣣Ҫõ̎ +config.ChatBot.AutoFishing.Movements= "1->2->3->4->3->2->1->2->..." Сÿοø׃λáǶ׃]ֻ׃ # ChatBot.AutoRelog -config.ChatBot.AutoRelog=在被伺服器斷開連線時自動重連,例如伺服器重啟時。\n# /!\ 謹慎使用Ignore_Kick_Message=true,這會在伺服器管理員將你踢出時依然連回! -config.ChatBot.AutoRelog.Delay=重新加入到伺服器前的延遲時間。(單位:秒) -config.ChatBot.AutoRelog.Retries=重新登入伺服器失敗時的重試次數,使用-1表示無限重試。 -config.ChatBot.AutoRelog.Ignore_Kick_Message=當設定為 true 時,將不考慮踢出的資訊直接重連。 -config.ChatBot.AutoRelog.Kick_Messages=如果踢出資訊與這其中的任何一個字串匹配,那麼將觸發自動重連。 +config.ChatBot.AutoRelog=ڱŷ_BrԄBŷ؆r\n# /!\ ֔ʹIgnore_Kick_Message=true@ŷT߳rȻBأ +config.ChatBot.AutoRelog.Delay=¼뵽ŷǰtrg(λ) +config.ChatBot.AutoRelog.Retries=µŷʧrԇΔʹ-1ʾoԇ +config.ChatBot.AutoRelog.Ignore_Kick_Message=O true r]߳YӍֱB +config.ChatBot.AutoRelog.Kick_Messages=߳YӍc@еκһִƥ䣬N|lԄB # ChatBot.AutoRespond -config.ChatBot.AutoRespond=當聊天訊息與檔案中的規則匹配時,自動執行指定命令。\n# /!\ 伺服器管理員可以以任意玩家的身份傳送任意訊息,記住這一點!\n# 此機器人如果設定的不得當可能會造成刷屏,建議設定一個冷卻時間。 -config.ChatBot.AutoRespond.Match_Colors=不要刪除文字中的顏色程式碼(使用§字元的程式碼)。注意:啟用後你的匹配模板也必須包括顏色程式碼。 +config.ChatBot.AutoRespond=ӍϢcnеҎtƥrԄӈָ\n# /!\ ŷTҵ݂ӍϢӛס@һc\n# ˙COIJîܕˢhOһsrg +config.ChatBot.AutoRespond.Match_Colors=ҪhеɫʽaʹáԪijʽaע⣺ƥģҲ횰ɫʽa # ChatBot.ChatLog -config.ChatBot.ChatLog=將聊天資訊寫入到日誌檔案中。 +config.ChatBot.ChatLog=YӍ뵽InС # ChatBot.FollowPlayer -config.ChatBot.FollowPlayer=讓機器人跟隨指定玩家\n# 注意這是一個實驗性的功能,目前的尋路速度可能很慢,你可能需要時常等一會機器人來讓它跟上你。\n# 你可以調整"Update_Limit",找到最適合你的速度。(注意不要設定的太低,這樣可能導致反效果或使MCC卡頓)。\n# /!\ 在使用此功能之前,請先確保伺服器規則允許你這樣做。 -config.ChatBot.FollowPlayer.Update_Limit=機器人尋路的間隔時間(以秒為單位) -config.ChatBot.FollowPlayer.Stop_At_Distance=如果玩家在該範圍內,則視為已經接近玩家了。(防止機器人將玩家推開而產生無限迴圈) +config.ChatBot.FollowPlayer=׌C˸Sָ\n# ע@һԵĹܣĿǰČ·ٶȿܺҪrһCˁ׌㡣\n# {"Update_Limit"ҵmٶȡעⲻҪO̫ͣ@ӿ܌·ЧʹMCCD\n# /!\ ʹô˹֮ǰՈȴ_ŷҎtS@ +config.ChatBot.FollowPlayer.Update_Limit=Cˌ·grgλ +config.ChatBot.FollowPlayer.Stop_At_Distance=ԓȣtҕѽӽˡֹCˌ_aoޒȦ # ChatBot.HangmanGame -config.ChatBot.HangmanGame=一個用於演示聊天互動的小遊戲。玩家可以一次一個字母地猜出神祕的單詞。\n# 你需要正確地使用 ChatFormat,並在 botowners 中新增自己,用/tell start\n# /!\ 這個機器人可能會造成刷屏,如果許多玩家與它互動。 +config.ChatBot.HangmanGame=һʾ컥ӵС[ҿһһĸز³zĆ~\n# Ҫ_ʹ ChatFormatK botowners Լ/tell start\n# /!\ @C˿ܕˢScӡ # ChatBot.Mailer -config.ChatBot.Mailer=在玩家和伺服器之間中繼訊息,就像一個郵件外掛一樣。\n# 這個機器人可以在收件人離線時儲存訊息,並在他們加入伺服器時傳送訊息。\n# /!\ 伺服器管理員可以以任意玩家的身份傳送任意訊息,請記住這一點。 +config.ChatBot.Mailer=Һŷ֮g^ӍϢһ]һӡ\n# @C˿ռxrӍϢKŷrӍϢ\n# /!\ ŷTҵ݂ӍϢՈӛס@һc # ChatBot.Map -config.ChatBot.Map=允許你將地圖渲染成.jpg圖片,該圖片會被渲染到Rendered_Maps資料夾中。\n# 注意:這個功能目前只對解決使用地圖的驗證碼有用。\n# 如果一些伺服器解決驗證碼的時間很短,請啟用Auto_Render_On_Update並準備快速開啟該檔案。\n# 在linux上,你可以使用FTP來訪問生成的檔案。 -config.ChatBot.Map.Should_Resize=是否需要調整地圖的大小?(預設大小是128x128) -config.ChatBot.Map.Resize_To=將地圖調整到什麼大小?(注意:大小越大,質量越低) -config.ChatBot.Map.Auto_Render_On_Update=一旦接收到新的地圖或已有地圖被更新,自動渲染該地圖。 -config.ChatBot.Map.Delete_All_On_Unload=在解除安裝/重新載入地圖時刪除所有已渲染的地圖(退出MCC時不會刪除影象) -config.ChatBot.Map.Notify_On_First_Update=當第一次從伺服器上收到一張地圖時,傳送一個通知。 +config.ChatBot.Map=S㌢؈DȾ.jpgDƬԓDƬȾRendered_MapsYϊAС\n# ע⣺@ĿǰֻQʹõ؈DCaá\n# һЩŷQCaĕrg̣ܶՈAuto_Render_On_UpdateKʂ_ԓn\n# linuxϣʹFTPLɵęn +config.ChatBot.Map.Render_In_Console=ǷڿƙȾ؈D +config.ChatBot.Map.Save_To_File=Ƿ񌢵؈Dn +config.ChatBot.Map.Auto_Render_On_Update=һյµĵ؈Dе؈D£ԄȾԓ؈D +config.ChatBot.Map.Delete_All_On_Unload=ڽb/d؈DrhȾĵ؈D˳MCCrhӰ +config.ChatBot.Map.Notify_On_First_Update=һΏŷյһ؈Drһ֪ͨ # ChatBot.PlayerListLogger -config.ChatBot.PlayerListLogger=定期記錄當前的玩家列表到檔案中。 -config.ChatBot.PlayerListLogger.Delay=(單位:秒) +config.ChatBot.PlayerListLogger=ӛ䛮ǰбnС +config.ChatBot.PlayerListLogger.Delay=λ룩 # ChatBot.RemoteControl -config.ChatBot.RemoteControl=通過遊戲中的私聊向機器人傳送MCC控制檯命令\n# 你需要先配置好[ChatFormat]章節的設定,並在[Main.Advanced.bot_owners]中新增自己的賬號。\n# /!\ 伺服器管理員可以以任意玩家的身份傳送任意訊息,僅在信任他們時啟用本功能。 +config.ChatBot.RemoteControl=ͨ^[е˽C˂MCCƙ\n# Ҫú[ChatFormat]¹OK[Main.Advanced.bot_owners]Լ~̖\n# /!\ ŷTҵ݂ӍϢHrñܡ # ChatBot.ReplayCapture -config.ChatBot.ReplayCapture=使用"/replay start"開始記錄遊戲,並在之後使用 Replay Mod (https://www.replaymod.com/) 進行重放。\n# 請注意,由於技術限制,玩家自身不會顯示在重放檔案中。\n# /!\ 你應該使用"/replay stop"停止記錄或者使用"/quit"退出程式,否則回放檔案可能會損壞。 -config.ChatBot.ReplayCapture.Backup_Interval=每間隔多少秒自動儲存一次回放檔案,以秒為單位。使用-1禁用自動儲存。 +config.ChatBot.ReplayCapture=ʹ"/replay start"_ʼӛ[򣬁K֮ʹ Replay Mod (https://www.replaymod.com/) Mطš\n# Ոע⣬춼gƣ@ʾطřnС\n# /!\ 㑪ԓʹ"/replay stop"ֹͣӛ䛻ʹ"/quit"˳ʽtطřnܕpġ +config.ChatBot.ReplayCapture.Backup_Interval=ÿgԄӃһλطřnλʹ-1ԄӃ档 # ChatBot.ScriptScheduler -config.ChatBot.ScriptScheduler=在加入伺服器時、到達特定時間時或以設定的時間間隔執行命令或指令碼檔案\n# 詳細使用方法請檢視 https://mccteam.github.io/guide/chat-bots.html#script-scheduler +config.ChatBot.ScriptScheduler=ڼŷr_ضrgrOĕrggָan\n# Ԕʹ÷Ոzҕ https://mccteam.github.io/guide/chat-bots.html#script-scheduler diff --git a/MinecraftClient/Scripting/DynamicRun/Builder/CompileRunner.cs b/MinecraftClient/Scripting/DynamicRun/Builder/CompileRunner.cs index 0bb3b829..555622fc 100644 --- a/MinecraftClient/Scripting/DynamicRun/Builder/CompileRunner.cs +++ b/MinecraftClient/Scripting/DynamicRun/Builder/CompileRunner.cs @@ -24,7 +24,7 @@ namespace DynamicRun.Builder GC.WaitForPendingFinalizers(); } - ConsoleIO.WriteLogLine(assemblyLoadContextWeakRef.Item1.IsAlive ? "Script failed to clean-up" : "Script finished!"); + ConsoleIO.WriteLogLine(assemblyLoadContextWeakRef.Item1.IsAlive ? "Script continues to run." : "Script finished!"); return assemblyLoadContextWeakRef.Item2; } diff --git a/MinecraftClient/Scripting/DynamicRun/Builder/Compiler.cs b/MinecraftClient/Scripting/DynamicRun/Builder/Compiler.cs index 8029afe2..0ade609f 100644 --- a/MinecraftClient/Scripting/DynamicRun/Builder/Compiler.cs +++ b/MinecraftClient/Scripting/DynamicRun/Builder/Compiler.cs @@ -10,6 +10,7 @@ using System.IO; using System.IO.MemoryMappedFiles; using System.Linq; using System.Reflection; +using System.Runtime.InteropServices; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Text; @@ -22,7 +23,7 @@ namespace DynamicRun.Builder { public CompileResult Compile(string filepath, string fileName) { - ConsoleIO.WriteLogLine($"Starting compilation of: '{fileName}'"); + ConsoleIO.WriteLogLine($"Starting compilation..."); using var peStream = new MemoryStream(); var result = GenerateCode(filepath, fileName).Emit(peStream); @@ -62,26 +63,21 @@ namespace DynamicRun.Builder var mods = Assembly.GetEntryAssembly()!.GetModules(); -#pragma warning disable IL3000 - // System.Private.CoreLib - var A = typeof(object).Assembly.Location; - // System.Console - var B = typeof(Console).Assembly.Location; - // The path to MinecraftClient.dll - var C = typeof(Program).Assembly.Location; - var references = new List - { - MetadataReference.CreateFromFile(A), - MetadataReference.CreateFromFile(B) - }; +#pragma warning disable IL3000 // We determine if we are in a self-contained binary by checking specifically if the Assembly file path is null. - // We're on a Single File Application, so we need to extract the executable to get the assembly. - if (string.IsNullOrEmpty(C)) + var SystemPrivateCoreLib = typeof(object).Assembly.Location; // System.Private.CoreLib + var SystemConsole = typeof(Console).Assembly.Location; // System.Console + var MinecraftClientDll = typeof(Program).Assembly.Location; // The path to MinecraftClient.dll + + var references = new List(); + + // We're on a self-contained binary, so we need to extract the executable to get the assemblies. + if (string.IsNullOrEmpty(MinecraftClientDll)) { // Create a temporary file to copy the executable to. - var executableDir = System.AppContext.BaseDirectory; - var executablePath = Path.Combine(executableDir, "MinecraftClient.exe"); + var executableDir = AppContext.BaseDirectory; + var executablePath = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? Path.Combine(executableDir, "MinecraftClient.exe") : Path.Combine(executableDir, "MinecraftClient"); var tempFileName = Path.GetTempFileName(); if (File.Exists(executablePath)) { @@ -99,6 +95,7 @@ namespace DynamicRun.Builder var assemblyrefs = Assembly.GetEntryAssembly()?.GetReferencedAssemblies().ToList()!; assemblyrefs.Add(new("MinecraftClient")); + assemblyrefs.Add(new("System.Private.CoreLib")); foreach (var refs in assemblyrefs) { @@ -133,10 +130,13 @@ namespace DynamicRun.Builder } else { - references.Add(MetadataReference.CreateFromFile(C)); + references.Add(MetadataReference.CreateFromFile(SystemPrivateCoreLib)); + references.Add(MetadataReference.CreateFromFile(SystemConsole)); + references.Add(MetadataReference.CreateFromFile(MinecraftClientDll)); Assembly.GetEntryAssembly()?.GetReferencedAssemblies().ToList().ForEach(a => references.Add(MetadataReference.CreateFromFile(Assembly.Load(a).Location))); } #pragma warning restore IL3000 + return CSharpCompilation.Create($"{fileName}.dll", new[] { parsedSyntaxTree }, references: references, diff --git a/MinecraftClient/Settings.cs b/MinecraftClient/Settings.cs index d3ebdbed..9f4d2f27 100644 --- a/MinecraftClient/Settings.cs +++ b/MinecraftClient/Settings.cs @@ -396,6 +396,11 @@ namespace MinecraftClient for (int i = 0; i < Advanced.BotOwners.Count; ++i) Advanced.BotOwners[i] = ToLowerIfNeed(Advanced.BotOwners[i]); + + if (Advanced.MinTerminalWidth < 1) + Advanced.MinTerminalWidth = 1; + if (Advanced.MinTerminalHeight < 1) + Advanced.MinTerminalHeight = 1; } [TomlDoNotInlineObject] @@ -466,6 +471,12 @@ namespace MinecraftClient [TomlInlineComment("$config.Main.Advanced.terrain_and_movements$")] public bool TerrainAndMovements = false; + [TomlInlineComment("$config.Main.Advanced.move_head_while_walking$")] + public bool MoveHeadWhileWalking = true; + + [TomlInlineComment("$config.Main.Advanced.movement_speed$")] + public int MovementSpeed = 2; + [TomlInlineComment("$config.Main.Advanced.inventory_handling$")] public bool InventoryHandling = false; @@ -511,17 +522,20 @@ namespace MinecraftClient [TomlInlineComment("$config.Main.Advanced.minecraft_realms$")] public bool MinecraftRealms = false; - [TomlInlineComment("$config.Main.Advanced.move_head_while_walking$")] - public bool MoveHeadWhileWalking = true; - [TomlInlineComment("$config.Main.Advanced.timeout$")] public int TcpTimeout = 30; [TomlInlineComment("$config.Main.Advanced.enable_emoji$")] public bool EnableEmoji = true; - [TomlInlineComment("$config.Main.Advanced.movement_speed$")] - public int MovementSpeed = 2; + [TomlInlineComment("$config.Main.Advanced.TerminalColorDepth$")] + public TerminalColorDepthType TerminalColorDepth = TerminalColorDepthType.bit_24; + + [TomlInlineComment("$config.Main.Advanced.MinTerminalWidth$")] + public int MinTerminalWidth = 16; + + [TomlInlineComment("$config.Main.Advanced.MinTerminalHeight$")] + public int MinTerminalHeight = 10; /// /// Load login/password using an account alias @@ -549,6 +563,8 @@ namespace MinecraftClient public enum ResolveSrvRecordType { no, fast, yes }; public enum ForgeConfigType { no, auto, force }; + + public enum TerminalColorDepthType { bit_4, bit_8, bit_24}; } public struct AccountInfoConfig @@ -1238,9 +1254,10 @@ namespace MinecraftClient { public static string GetFullMessage(this Exception ex) { + string msg = ex.Message.Replace("+", "->"); return ex.InnerException == null - ? ex.Message - : ex.Message + "\n --> " + ex.InnerException.GetFullMessage(); + ? msg + : msg + "\n --> " + ex.InnerException.GetFullMessage(); } } } diff --git a/README.md b/README.md index 4d744f0a..67bf7f97 100644 --- a/README.md +++ b/README.md @@ -50,11 +50,11 @@ If you'd like to contribute to Minecraft Console Client, great, just fork the re Check out: [How to update or add translations for MCC](https://mccteam.github.io/guide/contibuting.html#translations). MCC now supports the following languages (Alphabetical order) : - * `de.ini` (54.64% translated) : Deutsch - German + * `de.ini` (54.40% translated) : Deutsch - German * `en.ini` : English - English - * `fr.ini` (54.64% translated) : Français (France) - French - * `ru.ini` (53.74% translated) : Русский (Russkiy) - Russian - * `vi.ini` (53.74% translated) : Tiếng Việt (Việt Nam) - Vietnamese + * `fr.ini` (54.40% translated) : Français (France) - French + * `ru.ini` (53.50% translated) : Русский (Russkiy) - Russian + * `vi.ini` (53.50% translated) : Tiếng Việt (Việt Nam) - Vietnamese * `zh-Hans.ini` (100.00% translated) : 简体中文 - Chinese Simplified * `zh-Hant.ini` (100.00% translated) : 繁體中文 - Chinese Traditional