Better translation

This commit is contained in:
BruceChen 2022-10-17 20:00:33 +08:00
parent bce2bc8b7f
commit 117a38b5f9
21 changed files with 95 additions and 156 deletions

View file

@ -247,7 +247,7 @@ namespace MinecraftClient.ChatBots
{ {
currentDig = blockLoc; currentDig = blockLoc;
if (Config.Log_Block_Dig) if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.dig", blockLoc.X, blockLoc.Y, blockLoc.Z, block.Type)); LogToConsole(Translations.Get("cmd.dig.dig", blockLoc.X, blockLoc.Y, blockLoc.Z, block.GetTypeString()));
return true; return true;
} }
else else
@ -308,7 +308,7 @@ namespace MinecraftClient.ChatBots
{ {
currentDig = target; currentDig = target;
if (Config.Log_Block_Dig) if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.dig", target.X, target.Y, target.Z, targetBlock.Type)); LogToConsole(Translations.Get("cmd.dig.dig", target.X, target.Y, target.Z, targetBlock.GetTypeString()));
return true; return true;
} }
else else
@ -342,7 +342,7 @@ namespace MinecraftClient.ChatBots
{ {
currentDig = blockLoc; currentDig = blockLoc;
if (Config.Log_Block_Dig) if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.dig", blockLoc.X, blockLoc.Y, blockLoc.Z, block.Type)); LogToConsole(Translations.Get("cmd.dig.dig", blockLoc.X, blockLoc.Y, blockLoc.Z, block.GetTypeString()));
return true; return true;
} }
else else

View file

@ -144,7 +144,7 @@ namespace MinecraftClient.ChatBots
private Location LastPos = Location.Zero; private Location LastPos = Location.Zero;
private DateTime CaughtTime = DateTime.Now; private DateTime CaughtTime = DateTime.Now;
private int fishItemCounter = 10; private int fishItemCounter = 10;
private Entity fish = new(-1, EntityType.Item, Location.Zero); private Entity fishItem = new(-1, EntityType.Item, Location.Zero);
private int counter = 0; private int counter = 0;
private readonly object stateLock = new(); private readonly object stateLock = new();
@ -221,7 +221,7 @@ namespace MinecraftClient.ChatBots
if (Config.Auto_Start) if (Config.Auto_Start)
{ {
double delay = Config.Fishing_Delay; double delay = Config.Fishing_Delay;
LogToConsole(Translations.Get("bot.autoFish.start", delay)); LogToConsole(Translations.Get("bot.autoFish.start_at", delay));
lock (stateLock) lock (stateLock)
{ {
isFishing = false; isFishing = false;
@ -352,7 +352,7 @@ namespace MinecraftClient.ChatBots
{ {
if (Config.Log_Fish_Bobber) if (Config.Log_Fish_Bobber)
LogToConsole(string.Format("Item ({0}) spawn at {1}, distance = {2:0.00}", entity.ID, entity.Location, entity.Location.Distance(LastPos))); LogToConsole(string.Format("Item ({0}) spawn at {1}, distance = {2:0.00}", entity.ID, entity.Location, entity.Location.Distance(LastPos)));
fish = entity; fishItem = entity;
} }
else if (entity.Type == EntityType.FishingBobber && entity.ObjectData == GetPlayerEntityID()) else if (entity.Type == EntityType.FishingBobber && entity.ObjectData == GetPlayerEntityID())
{ {
@ -431,7 +431,7 @@ namespace MinecraftClient.ChatBots
public override void OnEntityMetadata(Entity entity, Dictionary<int, object?> metadata) public override void OnEntityMetadata(Entity entity, Dictionary<int, object?> metadata)
{ {
if (fishItemCounter < 10 && entity.ID == fish.ID && metadata.TryGetValue(8, out object? item)) if (fishItemCounter < 10 && entity.ID == fishItem.ID && metadata.TryGetValue(8, out object? item))
{ {
LogToConsole(Translations.Get("bot.autoFish.got", ((Item)item!).ToFullString())); LogToConsole(Translations.Get("bot.autoFish.got", ((Item)item!).ToFullString()));
fishItemCounter = 10; fishItemCounter = 10;

View file

@ -1,5 +1,4 @@
using System; using System;
using System.Xml.Linq;
using Tomlet.Attributes; using Tomlet.Attributes;
using static MinecraftClient.ChatBots.ScriptScheduler.Configs; using static MinecraftClient.ChatBots.ScriptScheduler.Configs;

View file

@ -10,7 +10,7 @@ namespace MinecraftClient.Commands
public override string CmdUsage { get { return "blockinfo <x> <y> <z> [-s]"; } } public override string CmdUsage { get { return "blockinfo <x> <y> <z> [-s]"; } }
public override string CmdDesc { get { return "cmd.blockinfo.desc"; } } public override string CmdDesc { get { return "cmd.blockinfo.desc"; } }
public override string Run(McClient handler, string command, Dictionary<string, object> localVars) public override string Run(McClient handler, string command, Dictionary<string, object>? localVars)
{ {
string[] args = GetArgs(command); string[] args = GetArgs(command);
@ -24,7 +24,7 @@ namespace MinecraftClient.Commands
Block block = handler.GetWorld().GetBlock(targetBlockLocation); Block block = handler.GetWorld().GetBlock(targetBlockLocation);
handler.Log.Info(Translations.TryGet("cmd.blockinfo.BlockType") + ": " + block.Type); handler.Log.Info(Translations.TryGet("cmd.blockinfo.BlockType") + ": " + block.GetTypeString());
if (reportSurrounding) if (reportSurrounding)
{ {
@ -38,14 +38,14 @@ namespace MinecraftClient.Commands
Block blockZPositive = handler.GetWorld().GetBlock(new Location(targetBlockLocation.X, targetBlockLocation.Y, targetBlockLocation.Z + 1)); Block blockZPositive = handler.GetWorld().GetBlock(new Location(targetBlockLocation.X, targetBlockLocation.Y, targetBlockLocation.Z + 1));
Block blockZNegative = handler.GetWorld().GetBlock(new Location(targetBlockLocation.X, targetBlockLocation.Y, targetBlockLocation.Z - 1)); Block blockZNegative = handler.GetWorld().GetBlock(new Location(targetBlockLocation.X, targetBlockLocation.Y, targetBlockLocation.Z - 1));
sb.AppendLine("[X " + Translations.TryGet("cmd.blockinfo.Positive") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockXPositive.Type); sb.AppendLine("[X " + Translations.TryGet("cmd.blockinfo.Positive") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockXPositive.GetTypeString());
sb.AppendLine("[X " + Translations.TryGet("cmd.blockinfo.Negative") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockXNegative.Type); sb.AppendLine("[X " + Translations.TryGet("cmd.blockinfo.Negative") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockXNegative.GetTypeString());
sb.AppendLine(" "); sb.AppendLine(" ");
sb.AppendLine("[Y " + Translations.TryGet("cmd.blockinfo.Positive") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockYPositive.Type); sb.AppendLine("[Y " + Translations.TryGet("cmd.blockinfo.Positive") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockYPositive.GetTypeString());
sb.AppendLine("[Y " + Translations.TryGet("cmd.blockinfo.Negative") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockYNegative.Type); sb.AppendLine("[Y " + Translations.TryGet("cmd.blockinfo.Negative") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockYNegative.GetTypeString());
sb.AppendLine(" "); sb.AppendLine(" ");
sb.AppendLine("[Z " + Translations.TryGet("cmd.blockinfo.Positive") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockZPositive.Type); sb.AppendLine("[Z " + Translations.TryGet("cmd.blockinfo.Positive") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockZPositive.GetTypeString());
sb.AppendLine("[Z " + Translations.TryGet("cmd.blockinfo.Negative") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockZNegative.Type); sb.AppendLine("[Z " + Translations.TryGet("cmd.blockinfo.Negative") + "] " + Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockZNegative.GetTypeString());
handler.Log.Info(sb.ToString()); handler.Log.Info(sb.ToString());
} }

View file

@ -24,7 +24,7 @@ namespace MinecraftClient.Commands
else if (block.Type == Material.Air) else if (block.Type == Material.Air)
return Translations.Get("cmd.dig.no_block"); return Translations.Get("cmd.dig.no_block");
else if (handler.DigBlock(blockLoc, lookAtBlock: false)) else if (handler.DigBlock(blockLoc, lookAtBlock: false))
return Translations.Get("cmd.dig.dig", blockLoc.X, blockLoc.Y, blockLoc.Z, block.Type); return Translations.Get("cmd.dig.dig", blockLoc.X, blockLoc.Y, blockLoc.Z, block.GetTypeString());
else else
return Translations.Get("cmd.dig.fail"); return Translations.Get("cmd.dig.fail");
} }
@ -42,7 +42,7 @@ namespace MinecraftClient.Commands
else if (handler.DigBlock(blockToBreak)) else if (handler.DigBlock(blockToBreak))
{ {
blockToBreak = blockToBreak.ToCenter(); blockToBreak = blockToBreak.ToCenter();
return Translations.Get("cmd.dig.dig", blockToBreak.X, blockToBreak.Y, blockToBreak.Z, block.Type); return Translations.Get("cmd.dig.dig", blockToBreak.X, blockToBreak.Y, blockToBreak.Z, block.GetTypeString());
} }
else else
return Translations.Get("cmd.dig.fail"); return Translations.Get("cmd.dig.fail");

View file

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Text;
using MinecraftClient.Inventory; using MinecraftClient.Inventory;
using MinecraftClient.Mapping; using MinecraftClient.Mapping;
@ -56,43 +57,44 @@ namespace MinecraftClient.Commands
color = "§e"; // Yellow color = "§e"; // Yellow
string location = String.Format("X:{0}, Y:{1}, Z:{2}", Math.Round(entity.Location.X, 2), Math.Round(entity.Location.Y, 2), Math.Round(entity.Location.Z, 2)); string location = String.Format("X:{0}, Y:{1}, Z:{2}", Math.Round(entity.Location.X, 2), Math.Round(entity.Location.Y, 2), Math.Round(entity.Location.Z, 2));
string done = Translations.Replace("([cmd.entityCmd.entity]): {0}\n [MCC] Type: {1}", id, type); StringBuilder done = new();
done.Append(Translations.Replace("([cmd.entityCmd.entity]): {0}\n [MCC] Type: {1}", id, entity.GetTypeString()));
if (!String.IsNullOrEmpty(nickname)) if (!String.IsNullOrEmpty(nickname))
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.nickname]): {0}", nickname); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.nickname]): {0}", nickname));
else if (!String.IsNullOrEmpty(customname)) else if (!String.IsNullOrEmpty(customname))
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.customname]): {0}§8", customname.Replace("&", "§")); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.customname]): {0}§8", customname.Replace("&", "§")));
if (type == EntityType.Player) if (type == EntityType.Player)
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.latency]): {0}", latency); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.latency]): {0}", latency));
else if (type == EntityType.Item || type == EntityType.ItemFrame || type == Mapping.EntityType.EyeOfEnder || type == Mapping.EntityType.Egg || type == Mapping.EntityType.EnderPearl || type == Mapping.EntityType.Potion || type == Mapping.EntityType.Fireball || type == Mapping.EntityType.FireworkRocket) else if (type == EntityType.Item || type == EntityType.ItemFrame || type == Mapping.EntityType.EyeOfEnder || type == Mapping.EntityType.Egg || type == Mapping.EntityType.EnderPearl || type == Mapping.EntityType.Potion || type == Mapping.EntityType.Fireball || type == Mapping.EntityType.FireworkRocket)
{ {
string? displayName = item.DisplayName; string? displayName = item.DisplayName;
if (String.IsNullOrEmpty(displayName)) if (String.IsNullOrEmpty(displayName))
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.item]): {0} x{1}", item.Type, item.Count); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.item]): {0} x{1}", item.GetTypeString(), item.Count));
else else
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.item]): {0} x{1} - {2}§8", item.Type, item.Count, displayName); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.item]): {0} x{1} - {2}§8", item.GetTypeString(), item.Count, displayName));
} }
if (entity.Equipment.Count >= 1 && entity.Equipment != null) if (entity.Equipment.Count >= 1 && entity.Equipment != null)
{ {
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.equipment]):"); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.equipment]):"));
if (entity.Equipment.ContainsKey(0) && entity.Equipment[0] != null) if (entity.Equipment.ContainsKey(0) && entity.Equipment[0] != null)
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.mainhand]): {0} x{1}", entity.Equipment[0].Type, entity.Equipment[0].Count); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.mainhand]): {0} x{1}", entity.Equipment[0].GetTypeString(), entity.Equipment[0].Count));
if (entity.Equipment.ContainsKey(1) && entity.Equipment[1] != null) if (entity.Equipment.ContainsKey(1) && entity.Equipment[1] != null)
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.offhand]): {0} x{1}", entity.Equipment[1].Type, entity.Equipment[1].Count); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.offhand]): {0} x{1}", entity.Equipment[1].GetTypeString(), entity.Equipment[1].Count));
if (entity.Equipment.ContainsKey(5) && entity.Equipment[5] != null) if (entity.Equipment.ContainsKey(5) && entity.Equipment[5] != null)
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.helmet]): {0} x{1}", entity.Equipment[5].Type, entity.Equipment[5].Count); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.helmet]): {0} x{1}", entity.Equipment[5].GetTypeString(), entity.Equipment[5].Count));
if (entity.Equipment.ContainsKey(4) && entity.Equipment[4] != null) if (entity.Equipment.ContainsKey(4) && entity.Equipment[4] != null)
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.chestplate]): {0} x{1}", entity.Equipment[4].Type, entity.Equipment[4].Count); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.chestplate]): {0} x{1}", entity.Equipment[4].GetTypeString(), entity.Equipment[4].Count));
if (entity.Equipment.ContainsKey(3) && entity.Equipment[3] != null) if (entity.Equipment.ContainsKey(3) && entity.Equipment[3] != null)
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.leggings]): {0} x{1}", entity.Equipment[3].Type, entity.Equipment[3].Count); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.leggings]): {0} x{1}", entity.Equipment[3].GetTypeString(), entity.Equipment[3].Count));
if (entity.Equipment.ContainsKey(2) && entity.Equipment[2] != null) if (entity.Equipment.ContainsKey(2) && entity.Equipment[2] != null)
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.boots]): {0} x{1}", entity.Equipment[2].Type, entity.Equipment[2].Count); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.boots]): {0} x{1}", entity.Equipment[2].GetTypeString(), entity.Equipment[2].Count));
} }
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.pose]): {0}", pose); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.pose]): {0}", pose));
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.health]): {0}", color + health + "§8"); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.health]): {0}", color + health + "§8"));
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.distance]): {0}", distance); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.distance]): {0}", distance));
done += Translations.Replace("\n [MCC] ([cmd.entityCmd.location]): {0}", location); done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.location]): {0}", location));
return done; return done.ToString();
} }
} }
else return Translations.Get("cmd.entityCmd.not_found"); else return Translations.Get("cmd.entityCmd.not_found");
@ -132,10 +134,8 @@ namespace MinecraftClient.Commands
else else
{ {
Dictionary<int, Entity> entities = handler.GetEntities(); Dictionary<int, Entity> entities = handler.GetEntities();
List<string> response = new() StringBuilder response = new();
{ response.AppendLine(Translations.Get("cmd.entityCmd.entities"));
Translations.Get("cmd.entityCmd.entities")
};
foreach (var entity2 in entities) foreach (var entity2 in entities)
{ {
int id = entity2.Key; int id = entity2.Key;
@ -149,16 +149,16 @@ namespace MinecraftClient.Commands
string location = String.Format("X:{0}, Y:{1}, Z:{2}", Math.Round(entity2.Value.Location.X, 2), Math.Round(entity2.Value.Location.Y, 2), Math.Round(entity2.Value.Location.Z, 2)); string location = String.Format("X:{0}, Y:{1}, Z:{2}", Math.Round(entity2.Value.Location.X, 2), Math.Round(entity2.Value.Location.Y, 2), Math.Round(entity2.Value.Location.Z, 2));
if (type == EntityType.Item || type == EntityType.ItemFrame || type == EntityType.EyeOfEnder || type == EntityType.Egg || type == EntityType.EnderPearl || type == EntityType.Potion || type == EntityType.Fireball || type == EntityType.FireworkRocket) if (type == EntityType.Item || type == EntityType.ItemFrame || type == EntityType.EyeOfEnder || type == EntityType.Egg || type == EntityType.EnderPearl || type == EntityType.Potion || type == EntityType.Fireball || type == EntityType.FireworkRocket)
response.Add(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.item]): {2}, ([cmd.entityCmd.location]): {3}", id, type, item.Type, location)); response.AppendLine(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.item]): {2}, ([cmd.entityCmd.location]): {3}", id, entity2.Value.GetTypeString(), item.GetTypeString(), location));
else if (type == EntityType.Player && !String.IsNullOrEmpty(nickname)) else if (type == EntityType.Player && !String.IsNullOrEmpty(nickname))
response.Add(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.nickname]): §8{2}§8, ([cmd.entityCmd.latency]): {3}, ([cmd.entityCmd.health]): {4}, ([cmd.entityCmd.pose]): {5}, ([cmd.entityCmd.location]): {6}", id, type, nickname, latency, health, pose, location)); response.AppendLine(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.nickname]): §8{2}§8, ([cmd.entityCmd.latency]): {3}, ([cmd.entityCmd.health]): {4}, ([cmd.entityCmd.pose]): {5}, ([cmd.entityCmd.location]): {6}", id, entity2.Value.GetTypeString(), nickname, latency, health, pose, location));
else if (type == EntityType.Player && !String.IsNullOrEmpty(customname)) else if (type == EntityType.Player && !String.IsNullOrEmpty(customname))
response.Add(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.customname]): §8{2}§8, ([cmd.entityCmd.latency]): {3}, ([cmd.entityCmd.health]): {4}, ([cmd.entityCmd.pose]): {5}, ([cmd.entityCmd.location]): {6}", id, type, customname.Replace("&", "§"), latency, health, pose, location)); response.AppendLine(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.customname]): §8{2}§8, ([cmd.entityCmd.latency]): {3}, ([cmd.entityCmd.health]): {4}, ([cmd.entityCmd.pose]): {5}, ([cmd.entityCmd.location]): {6}", id, entity2.Value.GetTypeString(), customname.Replace("&", "§"), latency, health, pose, location));
else else
response.Add(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.health]): {2}, ([cmd.entityCmd.location]): {3}", id, type, health, location)); response.AppendLine(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.health]): {2}, ([cmd.entityCmd.location]): {3}", id, entity2.Value.GetTypeString(), health, location));
} }
response.Add(GetCmdDescTranslated()); response.Append(GetCmdDescTranslated());
return String.Join("\n", response); return response.ToString();
} }
} }
else return Translations.Get("extra.entity_required"); else return Translations.Get("extra.entity_required");

View file

@ -148,7 +148,7 @@ namespace MinecraftClient.Commands
response.AppendLine(String.Format("{0} (#{1}):", inventories[invId].Title, invId)); response.AppendLine(String.Format("{0} (#{1}):", inventories[invId].Title, invId));
foreach (Item item in itemsList) foreach (Item item in itemsList)
response.AppendLine(String.Format("\t- {0}", item.ToString())); response.AppendLine(String.Format("\t- {0}", item.ToFullString()));
response.AppendLine(" "); response.AppendLine(" ");
} }
@ -195,7 +195,7 @@ namespace MinecraftClient.Commands
string hotbarString = isHotbar ? (hotbar + 1).ToString() : " "; string hotbarString = isHotbar ? (hotbar + 1).ToString() : " ";
if ((hotbar + 1) == selectedHotbar) if ((hotbar + 1) == selectedHotbar)
hotbarString = ">" + hotbarString; hotbarString = ">" + hotbarString;
response.AppendLine(String.Format("{0,2} | #{1,-2}: {2}", hotbarString, itemId, item.ToString())); response.AppendLine(String.Format("{0,2} | #{1,-2}: {2}", hotbarString, itemId, item.ToFullString()));
} }
if (inventoryId == 0) if (inventoryId == 0)

View file

@ -0,0 +1,12 @@
using System.Linq;
namespace MinecraftClient
{
public static class ExtensionMethods
{
public static string ToUnderscoreCase(this string str)
{
return string.Concat(str.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString())).ToLower();
}
}
}

View file

@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using MinecraftClient.Protocol;
using MinecraftClient.Protocol.Handlers; using MinecraftClient.Protocol.Handlers;
namespace MinecraftClient.Inventory namespace MinecraftClient.Inventory
@ -136,50 +137,6 @@ namespace MinecraftClient.Inventory
{ 37, Enchantment.Mending }, { 37, Enchantment.Mending },
{ 38, Enchantment.VanishingCurse } { 38, Enchantment.VanishingCurse }
}; };
private static Dictionary<Enchantment, string> enchantmentNames = new Dictionary<Enchantment, string>()
{
//type
{ Enchantment.Protection, "Enchantment.Protection" },
{ Enchantment.FireProtection, "Enchantment.FireProtection" },
{ Enchantment.FeatherFalling, "Enchantment.FeatherFalling" },
{ Enchantment.BlastProtection, "Enchantment.BlastProtection" },
{ Enchantment.ProjectileProtection, "Enchantment.ProjectileProtection" },
{ Enchantment.Respiration, "Enchantment.Respiration" },
{ Enchantment.AquaAffinity, "Enchantment.AquaAffinity" },
{ Enchantment.Thorns, "Enchantment.Thorns" },
{ Enchantment.DepthStrieder, "Enchantment.DepthStrieder" },
{ Enchantment.FrostWalker, "Enchantment.FrostWalker" },
{ Enchantment.BindingCurse, "Enchantment.BindingCurse" },
{ Enchantment.SoulSpeed, "Enchantment.SoulSpeed" },
{ Enchantment.SwiftSneak, "Enchantment.SwiftSneak" },
{ Enchantment.Sharpness, "Enchantment.Sharpness" },
{ Enchantment.Smite, "Enchantment.Smite" },
{ Enchantment.BaneOfArthropods, "Enchantment.BaneOfArthropods" },
{ Enchantment.Knockback, "Enchantment.Knockback" },
{ Enchantment.FireAspect, "Enchantment.FireAspect" },
{ Enchantment.Looting, "Enchantment.Looting" },
{ Enchantment.Sweeping, "Enchantment.Sweeping" },
{ Enchantment.Efficency, "Enchantment.Efficency" },
{ Enchantment.SilkTouch, "Enchantment.SilkTouch" },
{ Enchantment.Unbreaking, "Enchantment.Unbreaking" },
{ Enchantment.Fortune, "Enchantment.Fortune" },
{ Enchantment.Power, "Enchantment.Power" },
{ Enchantment.Punch, "Enchantment.Punch" },
{ Enchantment.Flame, "Enchantment.Flame" },
{ Enchantment.Infinity, "Enchantment.Infinity" },
{ Enchantment.LuckOfTheSea, "Enchantment.LuckOfTheSea" },
{ Enchantment.Lure, "Enchantment.Lure" },
{ Enchantment.Loyality, "Enchantment.Loyality" },
{ Enchantment.Impaling, "Enchantment.Impaling" },
{ Enchantment.Riptide, "Enchantment.Riptide" },
{ Enchantment.Channeling, "Enchantment.Channeling" },
{ Enchantment.Multishot, "Enchantment.Multishot" },
{ Enchantment.QuickCharge, "Enchantment.QuickCharge" },
{ Enchantment.Piercing, "Enchantment.Piercing" },
{ Enchantment.Mending, "Enchantment.Mending" },
{ Enchantment.VanishingCurse, "Enchantment.VanishingCurse" }
};
#pragma warning restore format // @formatter:on #pragma warning restore format // @formatter:on
public static Enchantment GetEnchantmentById(int protocolVersion, short id) public static Enchantment GetEnchantmentById(int protocolVersion, short id)
@ -202,10 +159,11 @@ namespace MinecraftClient.Inventory
public static string GetEnchantmentName(Enchantment enchantment) public static string GetEnchantmentName(Enchantment enchantment)
{ {
if (!enchantmentNames.ContainsKey(enchantment)) string? trans = ChatParser.TranslateString("enchantment.minecraft." + enchantment.ToString().ToUnderscoreCase());
if (string.IsNullOrEmpty(trans))
return "Unknown Enchantment with ID: " + ((short)enchantment) + " (Probably not named in the code yet)"; return "Unknown Enchantment with ID: " + ((short)enchantment) + " (Probably not named in the code yet)";
else
return Translations.TryGet(enchantmentNames[enchantment]); return trans;
} }
public static string ConvertLevelToRomanNumbers(int num) public static string ConvertLevelToRomanNumbers(int num)

View file

@ -3,10 +3,6 @@ using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using Microsoft.VisualBasic;
using MinecraftClient.Protocol;
namespace MinecraftClient.Inventory namespace MinecraftClient.Inventory
{ {
@ -117,14 +113,14 @@ namespace MinecraftClient.Inventory
} }
} }
private string GetTranslatedType(ItemType itemType) public string GetTypeString()
{ {
string type = itemType.ToString(); string type = Type.ToString();
string type_renamed = string.Concat(type.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString())).ToLower(); string type_renamed = type.ToUnderscoreCase();
string? res1 = ChatParser.TranslateString("item.minecraft." + type_renamed); string? res1 = Protocol.ChatParser.TranslateString("item.minecraft." + type_renamed);
if (!string.IsNullOrEmpty(res1)) if (!string.IsNullOrEmpty(res1))
return res1; return res1;
string? res2 = ChatParser.TranslateString("block.minecraft." + type_renamed); string? res2 = Protocol.ChatParser.TranslateString("block.minecraft." + type_renamed);
if (!string.IsNullOrEmpty(res2)) if (!string.IsNullOrEmpty(res2))
return res2; return res2;
return type; return type;
@ -144,8 +140,8 @@ namespace MinecraftClient.Inventory
short level = (short)enchantment["lvl"]; short level = (short)enchantment["lvl"];
string id = ((string)enchantment["id"]).Replace(':', '.'); string id = ((string)enchantment["id"]).Replace(':', '.');
sb.AppendFormat(" | {0} {1}", sb.AppendFormat(" | {0} {1}",
ChatParser.TranslateString("enchantment." + id) ?? id, Protocol.ChatParser.TranslateString("enchantment." + id) ?? id,
ChatParser.TranslateString("enchantment.level." + level) ?? level.ToString()); Protocol.ChatParser.TranslateString("enchantment.level." + level) ?? level.ToString());
} }
} }
} }
@ -158,7 +154,7 @@ namespace MinecraftClient.Inventory
{ {
StringBuilder sb = new(); StringBuilder sb = new();
sb.AppendFormat("x{0,-2} {1}", Count, GetTranslatedType(Type)); sb.AppendFormat("x{0,-2} {1}", Count, GetTypeString());
string? displayName = DisplayName; string? displayName = DisplayName;
if (!String.IsNullOrEmpty(displayName)) if (!String.IsNullOrEmpty(displayName))

View file

@ -112,6 +112,13 @@ namespace MinecraftClient.Mapping
blockIdAndMeta = typeAndMeta; blockIdAndMeta = typeAndMeta;
} }
public string GetTypeString()
{
string typeStr = Type.ToString();
string? trans = Protocol.ChatParser.TranslateString("block.minecraft." + typeStr.ToUnderscoreCase());
return string.IsNullOrEmpty(trans) ? typeStr : trans;
}
/// <summary> /// <summary>
/// String representation of the block /// String representation of the block
/// </summary> /// </summary>

View file

@ -154,5 +154,12 @@ namespace MinecraftClient.Mapping
Yaw = yaw * (1 / 256) * 360; // to angle in 360 degree Yaw = yaw * (1 / 256) * 360; // to angle in 360 degree
Pitch = pitch * (1 / 256) * 360; Pitch = pitch * (1 / 256) * 360;
} }
public string GetTypeString()
{
string typeStr = Type.ToString();
string? trans = Protocol.ChatParser.TranslateString("entity.minecraft." + typeStr.ToUnderscoreCase());
return string.IsNullOrEmpty(trans) ? typeStr : trans;
}
} }
} }

View file

@ -64,7 +64,7 @@ namespace MinecraftClient.Mapping
/// <summary> /// <summary>
/// Parse location from the string. /// Parse location from the string.
/// return NULL if the parsing fails. /// throw FormatException if the parsing fails.
/// </summary> /// </summary>
/// <param name="x">The string representation of the X-axis coordinate.</param> /// <param name="x">The string representation of the X-axis coordinate.</param>
/// <param name="y">The string representation of the Y-axis coordinate.</param> /// <param name="y">The string representation of the Y-axis coordinate.</param>
@ -99,7 +99,7 @@ namespace MinecraftClient.Mapping
/// <summary> /// <summary>
/// Parse location from the string (relative coordinate representation is supported). /// Parse location from the string (relative coordinate representation is supported).
/// return NULL if the parsing fails. /// throw FormatException if the parsing fails.
/// </summary> /// </summary>
/// <param name="current">Relative position base point.</param> /// <param name="current">Relative position base point.</param>
/// <param name="x">The string representation of the X-axis coordinate.</param> /// <param name="x">The string representation of the X-axis coordinate.</param>

View file

@ -159,46 +159,6 @@ Enchantment.middle_slot=Middle slot
Enchantment.bottom_slot=Bottom slot Enchantment.bottom_slot=Bottom slot
Enchantment.levels=Levels Enchantment.levels=Levels
Enchantment.Protection=Protection
Enchantment.FireProtection=Fire Protection
Enchantment.FeatherFalling=Feather Falling
Enchantment.BlastProtection=Blast Protection
Enchantment.ProjectileProtection=Projectile Protection
Enchantment.Respiration=Respiration
Enchantment.AquaAffinity=Aqua Affinity
Enchantment.Thorns=Thorns
Enchantment.DepthStrieder=Depth Strieder
Enchantment.FrostWalker=Frost Walker
Enchantment.BindingCurse=Curse of Binding
Enchantment.SoulSpeed=Soul Speed
Enchantment.SwiftSneak=Swift Sneak
Enchantment.Sharpness=Sharpness
Enchantment.Smite=Smite
Enchantment.BaneOfArthropods=Bane of Arthropods
Enchantment.Knockback=Knockback
Enchantment.FireAspect=Fire Aspect
Enchantment.Looting=Looting
Enchantment.Sweeping=Sweeping
Enchantment.Efficency=Efficency
Enchantment.SilkTouch=Silk Touch
Enchantment.Unbreaking=Unbreaking
Enchantment.Fortune=Fortune
Enchantment.Power=Power
Enchantment.Punch=Punch
Enchantment.Flame=Flame
Enchantment.Infinity=Infinity
Enchantment.LuckOfTheSea=Luck of the Sea
Enchantment.Lure=Lure
Enchantment.Loyality=Loyality
Enchantment.Impaling=Impaling
Enchantment.Riptide=Riptide
Enchantment.Channeling=Channeling
Enchantment.Multishot=Multishot
Enchantment.QuickCharge=Quick Charge
Enchantment.Piercing=Piercing
Enchantment.Mending=Mending
Enchantment.VanishingCurse=Curse of Vanishing
[forge] [forge]
# Messages from Forge handler # Messages from Forge handler
forge.version=§8Forge protocol version : {0} forge.version=§8Forge protocol version : {0}
@ -587,7 +547,7 @@ bot.autoDrop.no_inventory=Cannot find inventory {0}!
# AutoFish # AutoFish
bot.autoFish.no_inv_handle=Inventory handling is not enabled. Cannot check rod durability and switch rods. bot.autoFish.no_inv_handle=Inventory handling is not enabled. Cannot check rod durability and switch rods.
bot.autoFish.start=Fishing will start in {0:0.0} second(s). bot.autoFish.start_at=Fishing will start in {0:0.0} second(s).
bot.autoFish.throw=Casting successfully. bot.autoFish.throw=Casting successfully.
bot.autoFish.caught=Retract the fishing rod. (Count: {0}) bot.autoFish.caught=Retract the fishing rod. (Count: {0})
bot.autoFish.caught_at=Retract the fishing rod at ({0:0.0},{1:0.0},{2:0.0})! (Count: {3}) bot.autoFish.caught_at=Retract the fishing rod at ({0:0.0},{1:0.0},{2:0.0})! (Count: {3})

View file

@ -52,13 +52,13 @@ 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). 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) : MCC now supports the following languages (Alphabetical order) :
* `de.ini` (49.19% translated) : Deutsch - German * `de.ini` (51.34% translated) : Deutsch - German
* `en.ini` : English - English * `en.ini` : English - English
* `fr.ini` (49.19% translated) : Français (France) - French * `fr.ini` (51.34% translated) : Français (France) - French
* `ru.ini` (48.38% translated) : Русский (Russkiy) - Russian * `ru.ini` (50.49% translated) : Русский (Russkiy) - Russian
* `vi.ini` (48.38% translated) : Tiếng Việt (Việt Nam) - Vietnamese * `vi.ini` (50.49% translated) : Tiếng Việt (Việt Nam) - Vietnamese
* `zh-Hans.ini` (90.43% translated) : 简体中文 - Chinese Simplified * `zh-Hans.ini` (95.50% translated) : 简体中文 - Chinese Simplified
* `zh-Hant.ini` (90.43% translated) : 繁體中文 - Chinese Traditional * `zh-Hant.ini` (95.50% translated) : 繁體中文 - Chinese Traditional
## Building from the source 🏗️ ## Building from the source 🏗️