Crowdin localization support (#2310)

* Switching to use resource files

* Update Crowdin configuration file

* Code cleanup
This commit is contained in:
BruceChen 2022-10-28 11:13:20 +08:00 committed by GitHub
parent a27491c1b6
commit 077e3a5e9f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
193 changed files with 102089 additions and 3564 deletions

View file

@ -1,26 +1,32 @@
 
Microsoft Visual Studio Solution File, Format Version 11.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2010 # Visual Studio Version 17
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MinecraftClient", "MinecraftClient\MinecraftClient.csproj", "{1E2FACE4-F5CA-4323-9641-740C6A551770}" VisualStudioVersion = 17.3.32901.215
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MinecraftClient", "MinecraftClient\MinecraftClient.csproj", "{1E2FACE4-F5CA-4323-9641-740C6A551770}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ConsoleInteractive", "ConsoleInteractive\ConsoleInteractive\ConsoleInteractive\ConsoleInteractive.csproj", "{93DA4D71-EFAD-4493-BE21-A105AF663660}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ConsoleInteractive", "ConsoleInteractive\ConsoleInteractive\ConsoleInteractive\ConsoleInteractive.csproj", "{93DA4D71-EFAD-4493-BE21-A105AF663660}"
EndProject EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Release|Any CPU = Release|Any CPU
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution GlobalSection(ProjectConfigurationPlatforms) = postSolution
{1E2FACE4-F5CA-4323-9641-740C6A551770}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1E2FACE4-F5CA-4323-9641-740C6A551770}.Release|Any CPU.Build.0 = Release|Any CPU
{1E2FACE4-F5CA-4323-9641-740C6A551770}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1E2FACE4-F5CA-4323-9641-740C6A551770}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1E2FACE4-F5CA-4323-9641-740C6A551770}.Debug|Any CPU.Build.0 = Debug|Any CPU {1E2FACE4-F5CA-4323-9641-740C6A551770}.Debug|Any CPU.Build.0 = Debug|Any CPU
{93DA4D71-EFAD-4493-BE21-A105AF663660}.Release|Any CPU.ActiveCfg = Release|Any CPU {1E2FACE4-F5CA-4323-9641-740C6A551770}.Release|Any CPU.ActiveCfg = Release|Any CPU
{93DA4D71-EFAD-4493-BE21-A105AF663660}.Release|Any CPU.Build.0 = Release|Any CPU {1E2FACE4-F5CA-4323-9641-740C6A551770}.Release|Any CPU.Build.0 = Release|Any CPU
{93DA4D71-EFAD-4493-BE21-A105AF663660}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {93DA4D71-EFAD-4493-BE21-A105AF663660}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{93DA4D71-EFAD-4493-BE21-A105AF663660}.Debug|Any CPU.Build.0 = Debug|Any CPU {93DA4D71-EFAD-4493-BE21-A105AF663660}.Debug|Any CPU.Build.0 = Debug|Any CPU
{93DA4D71-EFAD-4493-BE21-A105AF663660}.Release|Any CPU.ActiveCfg = Release|Any CPU
{93DA4D71-EFAD-4493-BE21-A105AF663660}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
RESX_ShowErrorsInErrorList = False
SolutionGuid = {6DED60F4-9CF4-4DB3-8966-582B2EBE8487}
EndGlobalSection
EndGlobal EndGlobal

View file

@ -69,7 +69,7 @@ namespace MinecraftClient.ChatBots
if (!checkSuccessed) if (!checkSuccessed)
{ {
LogToConsole(BotName, Translations.TryGet("general.bot_unload")); LogToConsole(BotName, Translations.general_bot_unload);
Enabled = false; Enabled = false;
} }
} }
@ -123,7 +123,7 @@ namespace MinecraftClient.ChatBots
Console.Beep(); Console.Beep();
Console.Beep(); Console.Beep();
} }
LogToConsole(Translations.TryGet("bot.alerts.start_rain")); LogToConsole(Translations.bot_alerts_start_rain);
} }
} }
else if (curRainLevel >= threshold && level < threshold) else if (curRainLevel >= threshold && level < threshold)
@ -134,7 +134,7 @@ namespace MinecraftClient.ChatBots
{ {
Console.Beep(); Console.Beep();
} }
LogToConsole(Translations.TryGet("bot.alerts.end_rain")); LogToConsole(Translations.bot_alerts_end_rain);
} }
} }
curRainLevel = level; curRainLevel = level;
@ -151,7 +151,7 @@ namespace MinecraftClient.ChatBots
Console.Beep(); Console.Beep();
Console.Beep(); Console.Beep();
} }
LogToConsole(Translations.TryGet("bot.alerts.start_thunderstorm")); LogToConsole(Translations.bot_alerts_start_thunderstorm);
} }
} }
else if (curThunderLevel >= threshold && level < threshold) else if (curThunderLevel >= threshold && level < threshold)
@ -162,7 +162,7 @@ namespace MinecraftClient.ChatBots
{ {
Console.Beep(); Console.Beep();
} }
LogToConsole(Translations.TryGet("bot.alerts.end_thunderstorm")); LogToConsole(Translations.bot_alerts_end_thunderstorm);
} }
} }
curThunderLevel = level; curThunderLevel = level;

View file

@ -43,7 +43,7 @@ namespace MinecraftClient.ChatBots
if (Walk_Range <= 0) if (Walk_Range <= 0)
{ {
Walk_Range = 5; Walk_Range = 5;
LogToConsole(BotName, Translations.TryGet("bot.antiafk.invalid_walk_range")); LogToConsole(BotName, Translations.bot_antiafk_invalid_walk_range);
} }
Delay.min = Math.Max(1.0, Delay.min); Delay.min = Math.Max(1.0, Delay.min);
@ -55,7 +55,7 @@ namespace MinecraftClient.ChatBots
if (Delay.min > Delay.max) if (Delay.min > Delay.max)
{ {
(Delay.min, Delay.max) = (Delay.max, Delay.min); (Delay.min, Delay.max) = (Delay.max, Delay.min);
LogToConsole(BotName, Translations.TryGet("bot.antiafk.swapping")); LogToConsole(BotName, Translations.bot_antiafk_swapping);
} }
Command ??= string.Empty; Command ??= string.Empty;
@ -96,7 +96,7 @@ namespace MinecraftClient.ChatBots
{ {
if (!GetTerrainEnabled()) if (!GetTerrainEnabled())
{ {
LogToConsole(Translations.TryGet("bot.antiafk.not_using_terrain_handling")); LogToConsole(Translations.bot_antiafk_not_using_terrain_handling);
} }
} }
} }

View file

@ -48,7 +48,7 @@ namespace MinecraftClient.ChatBots
{ {
if (Cooldown_Time.Custom && Cooldown_Time.value <= 0) if (Cooldown_Time.Custom && Cooldown_Time.value <= 0)
{ {
LogToConsole(BotName, Translations.TryGet("bot.autoAttack.invalidcooldown")); LogToConsole(BotName, Translations.bot_autoAttack_invalidcooldown);
Cooldown_Time.value = 1.0; Cooldown_Time.value = 1.0;
} }
} }
@ -113,8 +113,8 @@ namespace MinecraftClient.ChatBots
{ {
if (!GetEntityHandlingEnabled()) if (!GetEntityHandlingEnabled())
{ {
LogToConsoleTranslated("extra.entity_required"); LogToConsole(Translations.extra_entity_required);
LogToConsoleTranslated("general.bot_unload"); LogToConsole(Translations.general_bot_unload);
UnloadBot(); UnloadBot();
} }
} }

View file

@ -61,11 +61,11 @@ namespace MinecraftClient.ChatBots
if (string.IsNullOrWhiteSpace(recipe.Name)) if (string.IsNullOrWhiteSpace(recipe.Name))
{ {
recipe.Name = new Random().NextInt64().ToString(); recipe.Name = new Random().NextInt64().ToString();
LogToConsole(BotName, Translations.TryGet("bot.autoCraft.exception.name_miss")); LogToConsole(BotName, Translations.bot_autoCraft_exception_name_miss);
} }
if (nameList.Contains(recipe.Name)) if (nameList.Contains(recipe.Name))
{ {
LogToConsole(BotName, Translations.TryGet("bot.autoCraft.exception.duplicate", recipe.Name)); LogToConsole(BotName, string.Format(Translations.bot_autoCraft_exception_duplicate, recipe.Name));
do do
{ {
recipe.Name = new Random().NextInt64().ToString(); recipe.Name = new Random().NextInt64().ToString();
@ -85,12 +85,12 @@ namespace MinecraftClient.ChatBots
for (int i = 0; i < fixLength; ++i) for (int i = 0; i < fixLength; ++i)
Slots[i] = (i < recipe.Slots.Length) ? recipe.Slots[i] : ItemType.Null; Slots[i] = (i < recipe.Slots.Length) ? recipe.Slots[i] : ItemType.Null;
recipe.Slots = Slots; recipe.Slots = Slots;
LogToConsole(BotName, Translations.TryGet("bot.autocraft.invaild_slots")); LogToConsole(BotName, Translations.bot_autocraft_invaild_slots);
} }
if (recipe.Result == ItemType.Air || recipe.Result == ItemType.Null) if (recipe.Result == ItemType.Air || recipe.Result == ItemType.Null)
{ {
LogToConsole(BotName, Translations.TryGet("bot.autocraft.invaild_result")); LogToConsole(BotName, Translations.bot_autocraft_invaild_result);
} }
} }
} }
@ -283,13 +283,13 @@ namespace MinecraftClient.ChatBots
{ {
if (!GetInventoryEnabled()) if (!GetInventoryEnabled())
{ {
LogToConsoleTranslated("extra.inventory_required"); LogToConsole(Translations.extra_inventory_required);
LogToConsoleTranslated("general.bot_unload"); LogToConsole(Translations.general_bot_unload);
UnloadBot(); UnloadBot();
return; return;
} }
RegisterChatBotCommand("autocraft", Translations.Get("bot.autoCraft.cmd"), GetHelp(), CommandHandler); RegisterChatBotCommand("autocraft", Translations.bot_autoCraft_cmd, GetHelp(), CommandHandler);
RegisterChatBotCommand("ac", Translations.Get("bot.autoCraft.alias"), GetHelp(), CommandHandler); RegisterChatBotCommand("ac", Translations.bot_autoCraft_alias, GetHelp(), CommandHandler);
} }
public string CommandHandler(string cmd, string[] args) public string CommandHandler(string cmd, string[] args)
@ -302,7 +302,7 @@ namespace MinecraftClient.ChatBots
StringBuilder nameList = new(); StringBuilder nameList = new();
foreach (RecipeConfig recipe in Config.Recipes) foreach (RecipeConfig recipe in Config.Recipes)
nameList.Append(recipe.Name).Append(", "); nameList.Append(recipe.Name).Append(", ");
return Translations.Get("bot.autoCraft.cmd.list", Config.Recipes.Length, nameList.ToString()); return string.Format(Translations.bot_autoCraft_cmd_list, Config.Recipes.Length, nameList.ToString());
case "start": case "start":
if (args.Length >= 2) if (args.Length >= 2)
{ {
@ -327,13 +327,13 @@ namespace MinecraftClient.ChatBots
return ""; return "";
} }
else else
return Translations.Get("bot.autoCraft.recipe_not_exist"); return Translations.bot_autoCraft_recipe_not_exist;
} }
else else
return Translations.Get("bot.autoCraft.no_recipe_name"); return Translations.bot_autoCraft_no_recipe_name;
case "stop": case "stop":
StopCrafting(); StopCrafting();
return Translations.Get("bot.autoCraft.stop"); return Translations.bot_autoCraft_stop;
case "help": case "help":
return GetCommandHelp(args.Length >= 2 ? args[1] : ""); return GetCommandHelp(args.Length >= 2 ? args[1] : "");
default: default:
@ -345,7 +345,7 @@ namespace MinecraftClient.ChatBots
private static string GetHelp() private static string GetHelp()
{ {
return Translations.Get("bot.autoCraft.available_cmd", "load, list, reload, resetcfg, start, stop, help"); return string.Format(Translations.bot_autoCraft_available_cmd, "load, list, reload, resetcfg, start, stop, help");
} }
private string GetCommandHelp(string cmd) private string GetCommandHelp(string cmd)
@ -353,13 +353,13 @@ namespace MinecraftClient.ChatBots
return cmd.ToLower() switch return cmd.ToLower() switch
{ {
#pragma warning disable format // @formatter:off #pragma warning disable format // @formatter:off
"load" => Translations.Get("bot.autocraft.help.load"), "load" => Translations.bot_autoCraft_help_load,
"list" => Translations.Get("bot.autocraft.help.list"), "list" => Translations.bot_autoCraft_help_list,
"reload" => Translations.Get("bot.autocraft.help.reload"), "reload" => Translations.bot_autoCraft_help_reload,
"resetcfg" => Translations.Get("bot.autocraft.help.resetcfg"), "resetcfg" => Translations.bot_autoCraft_help_resetcfg,
"start" => Translations.Get("bot.autocraft.help.start"), "start" => Translations.bot_autoCraft_help_start,
"stop" => Translations.Get("bot.autocraft.help.stop"), "stop" => Translations.bot_autoCraft_help_stop,
"help" => Translations.Get("bot.autocraft.help.help"), "help" => Translations.bot_autoCraft_help_help,
_ => GetHelp(), _ => GetHelp(),
#pragma warning restore format // @formatter:on #pragma warning restore format // @formatter:on
}; };
@ -468,7 +468,7 @@ namespace MinecraftClient.ChatBots
// table required but not found. Try to open one // table required but not found. Try to open one
OpenTable(Config._Table_Location); OpenTable(Config._Table_Location);
waitingForTable = true; waitingForTable = true;
SetTimeout(Translations.Get("bot.autoCraft.table_not_found")); SetTimeout(Translations.bot_autoCraft_table_not_found);
return; return;
} }
} }
@ -495,10 +495,10 @@ namespace MinecraftClient.ChatBots
// Repeat the whole process again // Repeat the whole process again
actionSteps.Add(new ActionStep(ActionType.Repeat)); actionSteps.Add(new ActionStep(ActionType.Repeat));
// Start crafting // Start crafting
LogToConsoleTranslated("bot.autoCraft.start", recipe.ResultItem); LogToConsole(string.Format(Translations.bot_autoCraft_start, recipe.ResultItem));
HandleNextStep(); HandleNextStep();
} }
else LogToConsoleTranslated("bot.autoCraft.start_fail", recipe.ResultItem); else LogToConsole(string.Format(Translations.bot_autoCraft_start_fail, recipe.ResultItem));
} }
/// <summary> /// <summary>
@ -516,7 +516,7 @@ namespace MinecraftClient.ChatBots
if (GetInventories().ContainsKey(inventoryInUse)) if (GetInventories().ContainsKey(inventoryInUse))
{ {
CloseInventory(inventoryInUse); CloseInventory(inventoryInUse);
LogToConsoleTranslated("bot.autoCraft.close_inventory", inventoryInUse); LogToConsole(string.Format(Translations.bot_autoCraft_close_inventory, inventoryInUse));
} }
} }
@ -614,12 +614,12 @@ namespace MinecraftClient.ChatBots
if (actionSteps[index - 1].ActionType == ActionType.LeftClick && actionSteps[index - 1].ItemType != ItemType.Air) if (actionSteps[index - 1].ActionType == ActionType.LeftClick && actionSteps[index - 1].ItemType != ItemType.Air)
{ {
// Inform user the missing meterial name // Inform user the missing meterial name
LogToConsoleTranslated("bot.autoCraft.missing_material", actionSteps[index - 1].ItemType.ToString()); LogToConsole(string.Format(Translations.bot_autoCraft_missing_material, actionSteps[index - 1].ItemType.ToString()));
} }
if (Config.OnFailure == OnFailConfig.abort) if (Config.OnFailure == OnFailConfig.abort)
{ {
StopCrafting(); StopCrafting();
LogToConsoleTranslated("bot.autoCraft.aborted"); LogToConsole(Translations.bot_autoCraft_aborted);
} }
else else
{ {
@ -627,7 +627,7 @@ namespace MinecraftClient.ChatBots
// Even though crafting failed, action step index will still increase // Even though crafting failed, action step index will still increase
// we want to do that failed step again so decrease index by 1 // we want to do that failed step again so decrease index by 1
index--; index--;
LogToConsoleTranslated("bot.autoCraft.craft_fail"); LogToConsole(Translations.bot_autoCraft_craft_fail);
} }
} }
} }
@ -669,7 +669,7 @@ namespace MinecraftClient.ChatBots
private void HandleUpdateTimeout() private void HandleUpdateTimeout()
{ {
LogToConsoleTranslated("bot.autoCraft.timeout", timeoutAction); LogToConsole(string.Format(Translations.bot_autoCraft_timeout, timeoutAction));
} }
/// <summary> /// <summary>

View file

@ -107,17 +107,17 @@ namespace MinecraftClient.ChatBots
{ {
if (!GetTerrainEnabled()) if (!GetTerrainEnabled())
{ {
LogToConsoleTranslated("extra.terrainandmovement_required"); LogToConsole(Translations.extra_terrainandmovement_required);
LogToConsoleTranslated("general.bot_unload"); LogToConsole(Translations.general_bot_unload);
UnloadBot(); UnloadBot();
return; return;
} }
inventoryEnabled = GetInventoryEnabled(); inventoryEnabled = GetInventoryEnabled();
if (!inventoryEnabled && Config.Auto_Tool_Switch) if (!inventoryEnabled && Config.Auto_Tool_Switch)
LogToConsoleTranslated("bot.autodig.no_inv_handle"); LogToConsole(Translations.bot_autodig_no_inv_handle);
RegisterChatBotCommand("digbot", Translations.Get("bot.digbot.cmd"), GetHelp(), CommandHandler); RegisterChatBotCommand("digbot", Translations.bot_autodig_cmd, GetHelp(), CommandHandler);
} }
public string CommandHandler(string cmd, string[] args) public string CommandHandler(string cmd, string[] args)
@ -132,10 +132,10 @@ namespace MinecraftClient.ChatBots
counter = 0; counter = 0;
state = State.WaitingStart; state = State.WaitingStart;
} }
return Translations.Get("bot.autodig.start"); return Translations.bot_autodig_start;
case "stop": case "stop":
StopDigging(); StopDigging();
return Translations.Get("bot.autodig.stop"); return Translations.bot_autodig_stop;
case "help": case "help":
return GetCommandHelp(args.Length >= 2 ? args[1] : ""); return GetCommandHelp(args.Length >= 2 ? args[1] : "");
default: default:
@ -150,7 +150,7 @@ namespace MinecraftClient.ChatBots
if (Config.Auto_Start_Delay > 0) if (Config.Auto_Start_Delay > 0)
{ {
double delay = Config.Auto_Start_Delay; double delay = Config.Auto_Start_Delay;
LogToConsole(Translations.Get("bot.autodig.start_delay", delay)); LogToConsole(string.Format(Translations.bot_autodig_start_delay, delay));
lock (stateLock) lock (stateLock)
{ {
counter = Settings.DoubleToTick(delay); counter = Settings.DoubleToTick(delay);
@ -201,7 +201,7 @@ namespace MinecraftClient.ChatBots
case State.Digging: case State.Digging:
if (++counter > Settings.DoubleToTick(Config.Dig_Timeout)) if (++counter > Settings.DoubleToTick(Config.Dig_Timeout))
{ {
LogToConsole(GetTimestamp() + ": " + Translations.Get("bot.autodig.dig_timeout")); LogToConsole(GetTimestamp() + ": " + Translations.bot_autodig_dig_timeout);
state = State.WaitingStart; state = State.WaitingStart;
counter = 0; counter = 0;
} }
@ -223,7 +223,7 @@ namespace MinecraftClient.ChatBots
{ {
AlreadyWaitting = true; AlreadyWaitting = true;
if (Config.Log_Block_Dig) if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.too_far")); LogToConsole(Translations.cmd_dig_too_far);
} }
return false; return false;
} }
@ -233,7 +233,7 @@ namespace MinecraftClient.ChatBots
{ {
AlreadyWaitting = true; AlreadyWaitting = true;
if (Config.Log_Block_Dig) if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.no_block")); LogToConsole(Translations.cmd_dig_no_block);
} }
return false; return false;
} }
@ -247,12 +247,12 @@ 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.GetTypeString())); LogToConsole(string.Format(Translations.cmd_dig_dig, blockLoc.X, blockLoc.Y, blockLoc.Z, block.GetTypeString()));
return true; return true;
} }
else else
{ {
LogToConsole(Translations.Get("cmd.dig.fail")); LogToConsole(Translations.cmd_dig_fail);
return false; return false;
} }
} }
@ -262,7 +262,7 @@ namespace MinecraftClient.ChatBots
{ {
AlreadyWaitting = true; AlreadyWaitting = true;
if (Config.Log_Block_Dig) if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("bot.autodig.not_allow")); LogToConsole(Translations.bot_autodig_not_allow);
} }
return false; return false;
} }
@ -273,7 +273,7 @@ namespace MinecraftClient.ChatBots
{ {
AlreadyWaitting = true; AlreadyWaitting = true;
if (Config.Log_Block_Dig) if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("bot.autodig.not_allow")); LogToConsole(Translations.bot_autodig_not_allow);
} }
return false; return false;
} }
@ -308,12 +308,12 @@ 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.GetTypeString())); LogToConsole(string.Format(Translations.cmd_dig_dig, target.X, target.Y, target.Z, targetBlock.GetTypeString()));
return true; return true;
} }
else else
{ {
LogToConsole(Translations.Get("cmd.dig.fail")); LogToConsole(Translations.cmd_dig_fail);
return false; return false;
} }
} }
@ -323,7 +323,7 @@ namespace MinecraftClient.ChatBots
{ {
AlreadyWaitting = true; AlreadyWaitting = true;
if (Config.Log_Block_Dig) if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.no_block")); LogToConsole(Translations.cmd_dig_no_block);
} }
return false; return false;
} }
@ -342,12 +342,12 @@ 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.GetTypeString())); LogToConsole(string.Format(Translations.cmd_dig_dig, blockLoc.X, blockLoc.Y, blockLoc.Z, block.GetTypeString()));
return true; return true;
} }
else else
{ {
LogToConsole(Translations.Get("cmd.dig.fail")); LogToConsole(Translations.cmd_dig_fail);
return false; return false;
} }
} }
@ -357,7 +357,7 @@ namespace MinecraftClient.ChatBots
{ {
AlreadyWaitting = true; AlreadyWaitting = true;
if (Config.Log_Block_Dig) if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.no_block")); LogToConsole(Translations.cmd_dig_no_block);
} }
return false; return false;
} }
@ -404,7 +404,7 @@ namespace MinecraftClient.ChatBots
private static string GetHelp() private static string GetHelp()
{ {
return Translations.Get("bot.autodig.available_cmd", "start, stop, help"); return string.Format(Translations.bot_autodig_available_cmd, "start, stop, help");
} }
private string GetCommandHelp(string cmd) private string GetCommandHelp(string cmd)
@ -412,9 +412,9 @@ namespace MinecraftClient.ChatBots
return cmd.ToLower() switch return cmd.ToLower() switch
{ {
#pragma warning disable format // @formatter:off #pragma warning disable format // @formatter:off
"start" => Translations.Get("bot.autodig.help.start"), "start" => Translations.bot_autodig_help_start,
"stop" => Translations.Get("bot.autodig.help.stop"), "stop" => Translations.bot_autodig_help_stop,
"help" => Translations.Get("bot.autodig.help.help"), "help" => Translations.bot_autodig_help_help,
_ => GetHelp(), _ => GetHelp(),
#pragma warning restore format // @formatter:on #pragma warning restore format // @formatter:on
}; };

View file

@ -48,26 +48,26 @@ namespace MinecraftClient.ChatBots
Config.Enabled = true; Config.Enabled = true;
inventoryUpdated = 0; inventoryUpdated = 0;
OnUpdateFinish(); OnUpdateFinish();
return Translations.Get("bot.autoDrop.on"); return Translations.bot_autoDrop_on;
case "off": case "off":
Config.Enabled = false; Config.Enabled = false;
return Translations.Get("bot.autoDrop.off"); return Translations.bot_autoDrop_off;
case "add": case "add":
if (args.Length >= 2) if (args.Length >= 2)
{ {
if (Enum.TryParse(args[1], true, out ItemType item)) if (Enum.TryParse(args[1], true, out ItemType item))
{ {
Config.Items.Add(item); Config.Items.Add(item);
return Translations.Get("bot.autoDrop.added", item.ToString()); return string.Format(Translations.bot_autoDrop_added, item.ToString());
} }
else else
{ {
return Translations.Get("bot.autoDrop.incorrect_name", args[1]); return string.Format(Translations.bot_autoDrop_incorrect_name, args[1]);
} }
} }
else else
{ {
return Translations.Get("cmd.inventory.help.usage") + ": add <item name>"; return Translations.cmd_inventory_help_usage + ": add <item name>";
} }
case "remove": case "remove":
if (args.Length >= 2) if (args.Length >= 2)
@ -77,30 +77,30 @@ namespace MinecraftClient.ChatBots
if (Config.Items.Contains(item)) if (Config.Items.Contains(item))
{ {
Config.Items.Remove(item); Config.Items.Remove(item);
return Translations.Get("bot.autoDrop.removed", item.ToString()); return string.Format(Translations.bot_autoDrop_removed, item.ToString());
} }
else else
{ {
return Translations.Get("bot.autoDrop.not_in_list"); return Translations.bot_autoDrop_not_in_list;
} }
} }
else else
{ {
return Translations.Get("bot.autoDrop.incorrect_name", args[1]); return string.Format(Translations.bot_autoDrop_incorrect_name, args[1]);
} }
} }
else else
{ {
return Translations.Get("cmd.inventory.help.usage") + ": remove <item name>"; return Translations.cmd_inventory_help_usage + ": remove <item name>";
} }
case "list": case "list":
if (Config.Items.Count > 0) if (Config.Items.Count > 0)
{ {
return Translations.Get("bot.autoDrop.list", Config.Items.Count, string.Join("\n", Config.Items)); return string.Format(Translations.bot_autoDrop_list, Config.Items.Count, string.Join("\n", Config.Items));
} }
else else
{ {
return Translations.Get("bot.autoDrop.no_item"); return Translations.bot_autoDrop_no_item;
} }
case "mode": case "mode":
if (args.Length >= 2) if (args.Length >= 2)
@ -117,15 +117,15 @@ namespace MinecraftClient.ChatBots
Config.Mode = DropMode.everything; Config.Mode = DropMode.everything;
break; break;
default: default:
return Translations.Get("bot.autoDrop.unknown_mode"); // Unknwon mode. Available modes: Include, Exclude, Everything return Translations.bot_autoDrop_unknown_mode; // Unknwon mode. Available modes: Include, Exclude, Everything
} }
inventoryUpdated = 0; inventoryUpdated = 0;
OnUpdateFinish(); OnUpdateFinish();
return Translations.Get("bot.autoDrop.switched", Config.Mode.ToString()); // Switched to {0} mode. return string.Format(Translations.bot_autoDrop_switched, Config.Mode.ToString()); // Switched to {0} mode.
} }
else else
{ {
return Translations.Get("bot.autoDrop.unknown_mode"); return Translations.bot_autoDrop_unknown_mode;
} }
default: default:
return GetHelp(); return GetHelp();
@ -139,20 +139,20 @@ namespace MinecraftClient.ChatBots
private static string GetHelp() private static string GetHelp()
{ {
return Translations.Get("general.available_cmd", "on, off, add, remove, list, mode"); return string.Format(Translations.general_available_cmd, "on, off, add, remove, list, mode");
} }
public override void Initialize() public override void Initialize()
{ {
if (!GetInventoryEnabled()) if (!GetInventoryEnabled())
{ {
LogToConsoleTranslated("extra.inventory_required"); LogToConsole(Translations.extra_inventory_required);
LogToConsoleTranslated("general.bot_unload"); LogToConsole(Translations.general_bot_unload);
UnloadBot(); UnloadBot();
return; return;
} }
RegisterChatBotCommand("autodrop", Translations.Get("bot.autoDrop.cmd"), GetHelp(), CommandHandler); RegisterChatBotCommand("autodrop", Translations.bot_autoDrop_cmd, GetHelp(), CommandHandler);
RegisterChatBotCommand("ad", Translations.Get("bot.autoDrop.alias"), GetHelp(), CommandHandler); RegisterChatBotCommand("ad", Translations.bot_autoDrop_alias, GetHelp(), CommandHandler);
} }
public override void Update() public override void Update()
@ -185,7 +185,7 @@ namespace MinecraftClient.ChatBots
if (!GetInventories().ContainsKey(inventoryUpdated)) if (!GetInventories().ContainsKey(inventoryUpdated))
{ {
// Inventory updated but no inventory ? // Inventory updated but no inventory ?
LogDebugToConsoleTranslated("bot.autoDrop.no_inventory", inventoryUpdated); LogDebugToConsole(string.Format(Translations.bot_autoDrop_no_inventory, inventoryUpdated));
return; return;
} }
var inventory = GetInventories()[inventoryUpdated]; var inventory = GetInventories()[inventoryUpdated];

View file

@ -173,14 +173,14 @@ namespace MinecraftClient.ChatBots
{ {
if (!GetEntityHandlingEnabled()) if (!GetEntityHandlingEnabled())
{ {
LogToConsoleTranslated("extra.entity_required"); LogToConsole(Translations.extra_entity_required);
state = FishingState.WaitJoinGame; state = FishingState.WaitJoinGame;
} }
inventoryEnabled = GetInventoryEnabled(); inventoryEnabled = GetInventoryEnabled();
if (!inventoryEnabled) if (!inventoryEnabled)
LogToConsoleTranslated("bot.autoFish.no_inv_handle"); LogToConsole(Translations.bot_autoFish_no_inv_handle);
RegisterChatBotCommand("fish", Translations.Get("bot.autoFish.cmd"), GetHelp(), CommandHandler); RegisterChatBotCommand("fish", Translations.bot_autoFish_cmd, GetHelp(), CommandHandler);
} }
public string CommandHandler(string cmd, string[] args) public string CommandHandler(string cmd, string[] args)
@ -197,7 +197,7 @@ namespace MinecraftClient.ChatBots
counter = 0; counter = 0;
state = FishingState.StartMove; state = FishingState.StartMove;
} }
return Translations.Get("bot.autoFish.start"); return Translations.bot_autoFish_start;
case "stop": case "stop":
isFishing = false; isFishing = false;
lock (stateLock) lock (stateLock)
@ -208,14 +208,14 @@ namespace MinecraftClient.ChatBots
state = FishingState.Stopping; state = FishingState.Stopping;
} }
StopFishing(); StopFishing();
return Translations.Get("bot.autoFish.stop"); return Translations.bot_autoFish_stop;
case "status": case "status":
if (args.Length >= 2) if (args.Length >= 2)
{ {
if (args[1] == "clear") if (args[1] == "clear")
{ {
fishItemCnt = new(); fishItemCnt = new();
return Translations.Get("bot.autoFish.status_clear"); return Translations.bot_autoFish_status_clear;
} }
else else
{ {
@ -225,12 +225,12 @@ namespace MinecraftClient.ChatBots
else else
{ {
if (fishItemCnt.Count == 0) if (fishItemCnt.Count == 0)
return Translations.Get("bot.autoFish.status_info"); return Translations.bot_autoFish_status_info;
List<KeyValuePair<ItemType, uint>> orderedList = fishItemCnt.OrderBy(x => x.Value).ToList(); List<KeyValuePair<ItemType, uint>> orderedList = fishItemCnt.OrderBy(x => x.Value).ToList();
int maxLen = orderedList[^1].Value.ToString().Length; int maxLen = orderedList[^1].Value.ToString().Length;
StringBuilder sb = new(); StringBuilder sb = new();
sb.Append(Translations.Get("bot.autoFish.status_info")); sb.Append(Translations.bot_autoFish_status_info);
foreach ((ItemType type, uint cnt) in orderedList) foreach ((ItemType type, uint cnt) in orderedList)
{ {
sb.Append(Environment.NewLine); sb.Append(Environment.NewLine);
@ -258,7 +258,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_at", delay)); LogToConsole(string.Format(Translations.bot_autoFish_start_at, delay));
lock (stateLock) lock (stateLock)
{ {
isFishing = false; isFishing = false;
@ -321,7 +321,7 @@ namespace MinecraftClient.ChatBots
{ {
if (castTimeout < 6000) if (castTimeout < 6000)
castTimeout *= 2; // Exponential backoff castTimeout *= 2; // Exponential backoff
LogToConsole(GetShortTimestamp() + ": " + Translations.Get("bot.autoFish.cast_timeout", castTimeout / 10.0)); LogToConsole(GetShortTimestamp() + ": " + string.Format(Translations.bot_autoFish_cast_timeout, castTimeout / 10.0));
counter = Settings.DoubleToTick(Config.Cast_Delay); counter = Settings.DoubleToTick(Config.Cast_Delay);
state = FishingState.WaitingToCast; state = FishingState.WaitingToCast;
@ -330,7 +330,7 @@ namespace MinecraftClient.ChatBots
case FishingState.WaitingFishToBite: case FishingState.WaitingFishToBite:
if (++counter > Settings.DoubleToTick(Config.Fishing_Timeout)) if (++counter > Settings.DoubleToTick(Config.Fishing_Timeout))
{ {
LogToConsole(GetShortTimestamp() + ": " + Translations.Get("bot.autoFish.fishing_timeout")); LogToConsole(GetShortTimestamp() + ": " + Translations.bot_autoFish_fishing_timeout);
counter = Settings.DoubleToTick(Config.Cast_Delay); counter = Settings.DoubleToTick(Config.Cast_Delay);
state = FishingState.WaitingToCast; state = FishingState.WaitingToCast;
@ -348,7 +348,7 @@ namespace MinecraftClient.ChatBots
} }
else else
{ {
LogToConsole(Translations.Get("extra.terrainandmovement_required")); LogToConsole(Translations.extra_terrainandmovement_required);
state = FishingState.WaitJoinGame; state = FishingState.WaitJoinGame;
} }
} }
@ -364,7 +364,7 @@ namespace MinecraftClient.ChatBots
if (!ClientIsMoving()) if (!ClientIsMoving())
{ {
LookAtLocation(nextYaw, nextPitch); LookAtLocation(nextYaw, nextPitch);
LogToConsole(Translations.Get("bot.autoFish.update_lookat", nextYaw, nextPitch)); LogToConsole(string.Format(Translations.bot_autoFish_update_lookat, nextYaw, nextPitch));
state = FishingState.DurabilityCheck; state = FishingState.DurabilityCheck;
goto case FishingState.DurabilityCheck; goto case FishingState.DurabilityCheck;
@ -399,7 +399,7 @@ namespace MinecraftClient.ChatBots
fishItemCounter = 15; fishItemCounter = 15;
LogToConsole(GetShortTimestamp() + ": " + Translations.Get("bot.autoFish.throw")); LogToConsole(GetShortTimestamp() + ": " + Translations.bot_autoFish_throw);
lock (stateLock) lock (stateLock)
{ {
fishingBobber = entity; fishingBobber = entity;
@ -426,7 +426,7 @@ namespace MinecraftClient.ChatBots
if (Config.Antidespawn) if (Config.Antidespawn)
{ {
LogToConsoleTranslated("bot.autoFish.despawn"); LogToConsole(Translations.bot_autoFish_despawn);
lock (stateLock) lock (stateLock)
{ {
@ -473,7 +473,7 @@ namespace MinecraftClient.ChatBots
{ {
fishItemCounter = 15; fishItemCounter = 15;
Item item = (Item)itemObj!; Item item = (Item)itemObj!;
LogToConsole(Translations.Get("bot.autoFish.got", item.ToFullString())); LogToConsole(string.Format(Translations.bot_autoFish_got, item.ToFullString()));
if (fishItemCnt.ContainsKey(item.Type)) if (fishItemCnt.ContainsKey(item.Type))
fishItemCnt[item.Type] += (uint)item.Count; fishItemCnt[item.Type] += (uint)item.Count;
else else
@ -514,10 +514,10 @@ namespace MinecraftClient.ChatBots
{ {
++fishCount; ++fishCount;
if (Config.Enable_Move && Config.Movements.Length > 0) if (Config.Enable_Move && Config.Movements.Length > 0)
LogToConsole(GetShortTimestamp() + ": " + Translations.Get("bot.autoFish.caught_at", LogToConsole(GetShortTimestamp() + ": " + string.Format(Translations.bot_autoFish_caught_at,
fishingBobber!.Location.X, fishingBobber!.Location.Y, fishingBobber!.Location.Z, fishCount)); fishingBobber!.Location.X, fishingBobber!.Location.Y, fishingBobber!.Location.Z, fishCount));
else else
LogToConsole(GetShortTimestamp() + ": " + Translations.Get("bot.autoFish.caught", fishCount)); LogToConsole(GetShortTimestamp() + ": " + string.Format(Translations.bot_autoFish_caught, fishCount));
lock (stateLock) lock (stateLock)
{ {
@ -558,7 +558,7 @@ namespace MinecraftClient.ChatBots
if (!Movement.CheckChunkLoading(GetWorld(), current, goal)) if (!Movement.CheckChunkLoading(GetWorld(), current, goal))
{ {
isMoveSuccessed = false; isMoveSuccessed = false;
LogToConsole(Translations.Get("cmd.move.chunk_not_loaded", goal.X, goal.Y, goal.Z)); LogToConsole(string.Format(Translations.cmd_move_chunk_not_loaded, goal.X, goal.Y, goal.Z));
} }
else else
{ {
@ -568,11 +568,11 @@ namespace MinecraftClient.ChatBots
if (!isMoveSuccessed) if (!isMoveSuccessed)
{ {
(nextYaw, nextPitch) = (GetYaw(), GetPitch()); (nextYaw, nextPitch) = (GetYaw(), GetPitch());
LogToConsole(Translations.Get("cmd.move.fail", goal)); LogToConsole(string.Format(Translations.cmd_move_fail, goal));
} }
else else
{ {
LogToConsole(Translations.Get("cmd.move.walk", goal, current)); LogToConsole(string.Format(Translations.cmd_move_walk, goal, current));
} }
} }
@ -598,7 +598,7 @@ namespace MinecraftClient.ChatBots
else else
{ {
if (!isWaitingRod) if (!isWaitingRod)
LogToConsole(GetTimestamp() + ": " + Translations.Get("bot.autoFish.no_rod")); LogToConsole(GetTimestamp() + ": " + Translations.bot_autoFish_no_rod);
if (Config.Auto_Rod_Switch) if (Config.Auto_Rod_Switch)
{ {
@ -609,7 +609,7 @@ namespace MinecraftClient.ChatBots
WindowAction(0, slot, WindowActionType.LeftClick); WindowAction(0, slot, WindowActionType.LeftClick);
WindowAction(0, itemSolt, WindowActionType.LeftClick); WindowAction(0, itemSolt, WindowActionType.LeftClick);
WindowAction(0, slot, WindowActionType.LeftClick); WindowAction(0, slot, WindowActionType.LeftClick);
LogToConsole(GetTimestamp() + ": " + Translations.Get("bot.autoFish.switch", slot, (64 - item.Damage))); LogToConsole(GetTimestamp() + ": " + string.Format(Translations.bot_autoFish_switch, slot, (64 - item.Damage)));
isWaitingRod = false; isWaitingRod = false;
return true; return true;
} }
@ -623,7 +623,7 @@ namespace MinecraftClient.ChatBots
private static string GetHelp() private static string GetHelp()
{ {
return Translations.Get("bot.autoFish.available_cmd", "start, stop, status, help"); return string.Format(Translations.bot_autoFish_available_cmd, "start, stop, status, help");
} }
private string GetCommandHelp(string cmd) private string GetCommandHelp(string cmd)
@ -631,10 +631,10 @@ namespace MinecraftClient.ChatBots
return cmd.ToLower() switch return cmd.ToLower() switch
{ {
#pragma warning disable format // @formatter:off #pragma warning disable format // @formatter:off
"start" => Translations.Get("bot.autoFish.help.start"), "start" => Translations.bot_autoFish_help_start,
"stop" => Translations.Get("bot.autoFish.help.stop"), "stop" => Translations.bot_autoFish_help_stop,
"status" => Translations.Get("bot.autoFish.help.status"), "status" => Translations.bot_autoFish_help_status,
"help" => Translations.Get("bot.autoFish.help.help"), "help" => Translations.bot_autoFish_help_help,
_ => GetHelp(), _ => GetHelp(),
#pragma warning restore format // @formatter:on #pragma warning restore format // @formatter:on
}; };

View file

@ -79,7 +79,7 @@ namespace MinecraftClient.ChatBots
/// <param name="retries">Number of retries if connection fails (-1 = infinite)</param> /// <param name="retries">Number of retries if connection fails (-1 = infinite)</param>
public AutoRelog() public AutoRelog()
{ {
LogDebugToConsoleTranslated("bot.autoRelog.launch", Config.Retries); LogDebugToConsole(string.Format(Translations.bot_autoRelog_launch, Config.Retries));
} }
public override void Initialize() public override void Initialize()
@ -87,7 +87,7 @@ namespace MinecraftClient.ChatBots
McClient.ReconnectionAttemptsLeft = Config.Retries; McClient.ReconnectionAttemptsLeft = Config.Retries;
if (Config.Ignore_Kick_Message) if (Config.Ignore_Kick_Message)
{ {
LogDebugToConsoleTranslated("bot.autoRelog.no_kick_msg"); LogDebugToConsole(Translations.bot_autoRelog_no_kick_msg);
} }
} }
@ -95,14 +95,14 @@ namespace MinecraftClient.ChatBots
{ {
if (reason == DisconnectReason.UserLogout) if (reason == DisconnectReason.UserLogout)
{ {
LogDebugToConsoleTranslated("bot.autoRelog.ignore_user_logout"); LogDebugToConsole(Translations.bot_autoRelog_ignore_user_logout);
} }
else if (Config.Retries < 0 || Configs._BotRecoAttempts < Config.Retries) else if (Config.Retries < 0 || Configs._BotRecoAttempts < Config.Retries)
{ {
message = GetVerbatim(message); message = GetVerbatim(message);
string comp = message.ToLower(); string comp = message.ToLower();
LogDebugToConsoleTranslated("bot.autoRelog.disconnect_msg", message); LogDebugToConsole(string.Format(Translations.bot_autoRelog_disconnect_msg, message));
if (Config.Ignore_Kick_Message) if (Config.Ignore_Kick_Message)
{ {
@ -121,7 +121,7 @@ namespace MinecraftClient.ChatBots
} }
} }
LogDebugToConsoleTranslated("bot.autoRelog.reconnect_ignore"); LogDebugToConsole(Translations.bot_autoRelog_reconnect_ignore);
} }
return false; return false;
@ -130,8 +130,8 @@ namespace MinecraftClient.ChatBots
private void LaunchDelayedReconnection(string? msg) private void LaunchDelayedReconnection(string? msg)
{ {
double delay = random.NextDouble() * (Config.Delay.max - Config.Delay.min) + Config.Delay.min; 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); LogDebugToConsole(string.Format(string.IsNullOrEmpty(msg) ? Translations.bot_autoRelog_reconnect_always : Translations.bot_autoRelog_reconnect, msg));
LogToConsoleTranslated("bot.autoRelog.wait", delay); LogToConsole(string.Format(Translations.bot_autoRelog_wait, delay));
System.Threading.Thread.Sleep((int)Math.Floor(delay * 1000)); System.Threading.Thread.Sleep((int)Math.Floor(delay * 1000));
ReconnectToTheServer(); ReconnectToTheServer();
} }

View file

@ -37,8 +37,8 @@ namespace MinecraftClient.ChatBots
if (!File.Exists(Matches_File)) if (!File.Exists(Matches_File))
{ {
LogToConsole(BotName, Translations.TryGet("bot.autoRespond.file_not_found", Path.GetFullPath(Matches_File))); LogToConsole(BotName, string.Format(Translations.bot_autoRespond_file_not_found, Path.GetFullPath(Matches_File)));
LogToConsole(BotName, Translations.TryGet("general.bot_unload")); LogToConsole(BotName, Translations.general_bot_unload);
Enabled = false; Enabled = false;
} }
} }
@ -167,8 +167,8 @@ namespace MinecraftClient.ChatBots
/// <returns></returns> /// <returns></returns>
public override string ToString() public override string ToString()
{ {
return Translations.Get( return string.Format(
"bot.autoRespond.match", Translations.bot_autoRespond_match,
match, match,
regex, regex,
actionPublic, actionPublic,
@ -196,7 +196,7 @@ namespace MinecraftClient.ChatBots
TimeSpan cooldown = TimeSpan.Zero; TimeSpan cooldown = TimeSpan.Zero;
respondRules = new List<RespondRule>(); respondRules = new List<RespondRule>();
LogDebugToConsoleTranslated("bot.autoRespond.loading", System.IO.Path.GetFullPath(Config.Matches_File)); LogDebugToConsole(string.Format(Translations.bot_autoRespond_loading, System.IO.Path.GetFullPath(Config.Matches_File)));
foreach (string lineRAW in File.ReadAllLines(Config.Matches_File, Encoding.UTF8)) foreach (string lineRAW in File.ReadAllLines(Config.Matches_File, Encoding.UTF8))
{ {
@ -243,7 +243,7 @@ namespace MinecraftClient.ChatBots
} }
else else
{ {
LogToConsoleTranslated("bot.autoRespond.file_not_found", System.IO.Path.GetFullPath(Config.Matches_File)); LogToConsole(string.Format(Translations.bot_autoRespond_file_not_found, System.IO.Path.GetFullPath(Config.Matches_File)));
UnloadBot(); //No need to keep the bot active UnloadBot(); //No need to keep the bot active
} }
} }
@ -270,11 +270,11 @@ namespace MinecraftClient.ChatBots
if (matchRegex != null || matchString != null) if (matchRegex != null || matchString != null)
{ {
respondRules!.Add(rule); respondRules!.Add(rule);
LogDebugToConsoleTranslated("bot.autoRespond.loaded_match", rule); LogDebugToConsole(string.Format(Translations.bot_autoRespond_loaded_match, rule));
} }
else LogDebugToConsoleTranslated("bot.autoRespond.no_trigger", rule); else LogDebugToConsole(string.Format(Translations.bot_autoRespond_no_trigger, rule));
} }
else LogDebugToConsoleTranslated("bot.autoRespond.no_action", rule); else LogDebugToConsole(string.Format(Translations.bot_autoRespond_no_action, rule));
} }
} }
@ -307,7 +307,7 @@ namespace MinecraftClient.ChatBots
if (!String.IsNullOrEmpty(toPerform)) if (!String.IsNullOrEmpty(toPerform))
{ {
string? response = null; string? response = null;
LogToConsoleTranslated("bot.autoRespond.match_run", toPerform); LogToConsole(string.Format(Translations.bot_autoRespond_match_run, toPerform));
PerformInternalCommand(toPerform, ref response, localVars); PerformInternalCommand(toPerform, ref response, localVars);
if (!String.IsNullOrEmpty(response)) if (!String.IsNullOrEmpty(response))
LogToConsole(response); LogToConsole(response);

View file

@ -35,8 +35,8 @@ namespace MinecraftClient.ChatBots
string Log_File_Full = Settings.Config.AppVar.ExpandVars(Log_File); string Log_File_Full = Settings.Config.AppVar.ExpandVars(Log_File);
if (String.IsNullOrEmpty(Log_File_Full) || Log_File_Full.IndexOfAny(Path.GetInvalidPathChars()) >= 0) if (String.IsNullOrEmpty(Log_File_Full) || Log_File_Full.IndexOfAny(Path.GetInvalidPathChars()) >= 0)
{ {
LogToConsole(BotName, Translations.TryGet("bot.chatLog.invalid_file", Log_File_Full)); LogToConsole(BotName, string.Format(Translations.bot_chatLog_invalid_file, Log_File_Full));
LogToConsole(BotName, Translations.TryGet("general.bot_unload")); LogToConsole(BotName, Translations.general_bot_unload);
Enabled = false; Enabled = false;
} }
} }

View file

@ -94,13 +94,13 @@ namespace MinecraftClient.ChatBots
if (discordChannel != null) if (discordChannel != null)
discordBotClient.SendMessageAsync(discordChannel, new DiscordEmbedBuilder discordBotClient.SendMessageAsync(discordChannel, new DiscordEmbedBuilder
{ {
Description = Translations.TryGet("bot.DiscordBridge.disconnected"), Description = Translations.bot_DiscordBridge_disconnected,
Color = new DiscordColor(0xFF0000) Color = new DiscordColor(0xFF0000)
}).Wait(Config.Message_Send_Timeout * 1000); }).Wait(Config.Message_Send_Timeout * 1000);
} }
catch (Exception e) catch (Exception e)
{ {
LogToConsole("§w§l§f" + Translations.TryGet("bot.DiscordBridge.canceled_sending")); LogToConsole("§w§l§f" + Translations.bot_DiscordBridge_canceled_sending);
LogDebugToConsole(e); LogDebugToConsole(e);
} }
@ -122,34 +122,33 @@ namespace MinecraftClient.ChatBots
{ {
string direction = args[1].ToLower().Trim(); string direction = args[1].ToLower().Trim();
string? bridgeName = ""; string bridgeName;
switch (direction) switch (direction)
{ {
case "b": case "b":
case "both": case "both":
bridgeName = "bot.DiscordBridge.direction.both"; bridgeName = Translations.bot_DiscordBridge_direction_both;
bridgeDirection = BridgeDirection.Both; bridgeDirection = BridgeDirection.Both;
break; break;
case "mc": case "mc":
case "minecraft": case "minecraft":
bridgeName = "bot.DiscordBridge.direction.minecraft"; bridgeName = Translations.bot_DiscordBridge_direction_minecraft;
bridgeDirection = BridgeDirection.Minecraft; bridgeDirection = BridgeDirection.Minecraft;
break; break;
case "d": case "d":
case "dcs": case "dcs":
case "discord": case "discord":
bridgeName = "bot.DiscordBridge.direction.discord"; bridgeName = Translations.bot_DiscordBridge_direction_discord;
bridgeDirection = BridgeDirection.Discord; bridgeDirection = BridgeDirection.Discord;
break; break;
default: default:
return Translations.TryGet("bot.DiscordBridge.invalid_direction"); return Translations.bot_DiscordBridge_invalid_direction;
} }
return Translations.TryGet("bot.DiscordBridge.direction", Translations.TryGet(bridgeName)); return string.Format(Translations.bot_DiscordBridge_direction, bridgeName);
}; };
} }
@ -212,7 +211,7 @@ namespace MinecraftClient.ChatBots
} }
catch (Exception e) catch (Exception e)
{ {
LogToConsole("§w§l§f" + Translations.TryGet("bot.DiscordBridge.canceled_sending")); LogToConsole("§w§l§f" + Translations.bot_DiscordBridge_canceled_sending);
LogDebugToConsole(e); LogDebugToConsole(e);
} }
} }
@ -228,7 +227,7 @@ namespace MinecraftClient.ChatBots
} }
catch (Exception e) catch (Exception e)
{ {
LogToConsole("§w§l§f" + Translations.TryGet("bot.DiscordBridge.canceled_sending")); LogToConsole("§w§l§f" + Translations.bot_DiscordBridge_canceled_sending);
LogDebugToConsole(e); LogDebugToConsole(e);
} }
} }
@ -244,7 +243,7 @@ namespace MinecraftClient.ChatBots
} }
catch (Exception e) catch (Exception e)
{ {
LogToConsole("§w§l§f" + Translations.TryGet("bot.DiscordBridge.canceled_sending")); LogToConsole("§w§l§f" + Translations.bot_DiscordBridge_canceled_sending);
LogDebugToConsole(e); LogDebugToConsole(e);
} }
} }
@ -270,7 +269,7 @@ namespace MinecraftClient.ChatBots
} }
catch (Exception e) catch (Exception e)
{ {
LogToConsole("§w§l§f" + Translations.TryGet("bot.DiscordBridge.canceled_sending")); LogToConsole("§w§l§f" + Translations.bot_DiscordBridge_canceled_sending);
LogDebugToConsole(e); LogDebugToConsole(e);
} }
} }
@ -285,7 +284,7 @@ namespace MinecraftClient.ChatBots
private bool CanSendMessages() private bool CanSendMessages()
{ {
return discordBotClient == null || discordChannel == null || bridgeDirection == BridgeDirection.Minecraft ? false : true; return discordBotClient != null && discordChannel != null && bridgeDirection != BridgeDirection.Minecraft;
} }
async Task MainAsync() async Task MainAsync()
@ -294,7 +293,7 @@ namespace MinecraftClient.ChatBots
{ {
if (string.IsNullOrEmpty(Config.Token.Trim())) if (string.IsNullOrEmpty(Config.Token.Trim()))
{ {
LogToConsole(Translations.TryGet("bot.DiscordBridge.missing_token")); LogToConsole(Translations.bot_DiscordBridge_missing_token);
UnloadBot(); UnloadBot();
return; return;
} }
@ -317,7 +316,7 @@ namespace MinecraftClient.ChatBots
{ {
if (e is NotFoundException) if (e is NotFoundException)
{ {
LogToConsole(Translations.TryGet("bot.DiscordBridge.guild_not_found", Config.GuildId)); LogToConsole(string.Format(Translations.bot_DiscordBridge_guild_not_found, Config.GuildId));
UnloadBot(); UnloadBot();
return; return;
} }
@ -334,7 +333,7 @@ namespace MinecraftClient.ChatBots
{ {
if (e is NotFoundException) if (e is NotFoundException)
{ {
LogToConsole(Translations.TryGet("bot.DiscordBridge.channel_not_found", Config.ChannelId)); LogToConsole(string.Format(Translations.bot_DiscordBridge_channel_not_found, Config.ChannelId));
UnloadBot(); UnloadBot();
return; return;
} }
@ -376,7 +375,7 @@ namespace MinecraftClient.ChatBots
await e.Message.DeleteOwnReactionAsync(DiscordEmoji.FromName(discordBotClient, ":gear:")); await e.Message.DeleteOwnReactionAsync(DiscordEmoji.FromName(discordBotClient, ":gear:"));
await e.Message.CreateReactionAsync(DiscordEmoji.FromName(discordBotClient, ":white_check_mark:")); await e.Message.CreateReactionAsync(DiscordEmoji.FromName(discordBotClient, ":white_check_mark:"));
await e.Message.RespondAsync($"{Translations.TryGet("bot.DiscordBridge.command_executed")}:\n```{result}```"); await e.Message.RespondAsync($"{Translations.bot_DiscordBridge_command_executed}:\n```{result}```");
} }
else SendText(message); else SendText(message);
}; };
@ -395,17 +394,17 @@ namespace MinecraftClient.ChatBots
await discordBotClient.SendMessageAsync(discordChannel, new DiscordEmbedBuilder await discordBotClient.SendMessageAsync(discordChannel, new DiscordEmbedBuilder
{ {
Description = Translations.TryGet("bot.DiscordBridge.connected"), Description = Translations.bot_DiscordBridge_connected,
Color = new DiscordColor(0x00FF00) Color = new DiscordColor(0x00FF00)
}); });
IsConnected = true; IsConnected = true;
LogToConsole("§y§l§f" + Translations.TryGet("bot.DiscordBridge.connected")); LogToConsole("§y§l§f" + Translations.bot_DiscordBridge_connected);
await Task.Delay(-1); await Task.Delay(-1);
} }
catch (Exception e) catch (Exception e)
{ {
LogToConsole("§w§l§f" + Translations.TryGet("bot.DiscordBridge.unknown_error")); LogToConsole("§w§l§f" + Translations.bot_DiscordBridge_unknown_error);
LogToConsole(e); LogToConsole(e);
return; return;
} }

View file

@ -65,19 +65,19 @@ namespace MinecraftClient.ChatBots
{ {
if (GetProtocolVersion() < Protocol18Handler.MC_1_13_Version) if (GetProtocolVersion() < Protocol18Handler.MC_1_13_Version)
{ {
LogToConsole(Translations.TryGet("bot.farmer.not_implemented")); LogToConsole(Translations.bot_farmer_not_implemented);
return; return;
} }
if (!GetTerrainEnabled()) if (!GetTerrainEnabled())
{ {
LogToConsole(Translations.TryGet("bot.farmer.needs_terrain")); LogToConsole(Translations.bot_farmer_needs_terrain);
return; return;
} }
if (!GetInventoryEnabled()) if (!GetInventoryEnabled())
{ {
LogToConsole(Translations.TryGet("bot.farmer.needs_inventory")); LogToConsole(Translations.bot_farmer_needs_inventory);
return; return;
} }
@ -91,10 +91,10 @@ namespace MinecraftClient.ChatBots
if (args[0].Equals("stop", StringComparison.OrdinalIgnoreCase)) if (args[0].Equals("stop", StringComparison.OrdinalIgnoreCase))
{ {
if (!running) if (!running)
return Translations.TryGet("bot.farmer.already_stopped"); return Translations.bot_farmer_already_stopped;
running = false; running = false;
return Translations.TryGet("bot.farmer.stopping"); return Translations.bot_farmer_stopping;
} }
if (args[0].Equals("start", StringComparison.OrdinalIgnoreCase)) if (args[0].Equals("start", StringComparison.OrdinalIgnoreCase))
@ -102,10 +102,10 @@ namespace MinecraftClient.ChatBots
if (args.Length >= 2) if (args.Length >= 2)
{ {
if (running) if (running)
return Translations.TryGet("bot.farmer.already_running"); return Translations.bot_farmer_already_running;
if (!Enum.TryParse(args[1], true, out CropType whatToFarm)) if (!Enum.TryParse(args[1], true, out CropType whatToFarm))
return Translations.TryGet("bot.farmer.invalid_crop_type"); return Translations.bot_farmer_invalid_crop_type;
int radius = 30; int radius = 30;
@ -123,7 +123,7 @@ namespace MinecraftClient.ChatBots
if (!currentArg.Contains(':')) if (!currentArg.Contains(':'))
{ {
LogToConsole("§x§1§0" + Translations.TryGet("bot.farmer.warining_invalid_parameter", currentArg)); LogToConsole("§x§1§0" + string.Format(Translations.bot_farmer_warining_invalid_parameter, currentArg));
continue; continue;
} }
@ -131,7 +131,7 @@ namespace MinecraftClient.ChatBots
if (parts.Length != 2) if (parts.Length != 2)
{ {
LogToConsole("§x§1§0" + Translations.TryGet("bot.farmer.warining_invalid_parameter", currentArg)); LogToConsole("§x§1§0" + string.Format(Translations.bot_farmer_warining_invalid_parameter, currentArg));
continue; continue;
} }
@ -140,11 +140,11 @@ namespace MinecraftClient.ChatBots
case "r": case "r":
case "radius": case "radius":
if (!int.TryParse(parts[1], NumberStyles.Any, CultureInfo.CurrentCulture, out radius)) if (!int.TryParse(parts[1], NumberStyles.Any, CultureInfo.CurrentCulture, out radius))
LogToConsole("§x§1§0" + Translations.TryGet("bot.farmer.invalid_radius")); LogToConsole("§x§1§0" + Translations.bot_farmer_invalid_radius);
if (radius <= 0) if (radius <= 0)
{ {
LogToConsole("§x§1§0" + Translations.TryGet("bot.farmer.invalid_radius")); LogToConsole("§x§1§0" + Translations.bot_farmer_invalid_radius);
radius = 30; radius = 30;
} }
@ -157,7 +157,7 @@ namespace MinecraftClient.ChatBots
if (parts[1].Equals("true") || parts[1].Equals("1")) if (parts[1].Equals("true") || parts[1].Equals("1"))
{ {
LogToConsole("§x§1§0" + Translations.TryGet("bot.farmer.warining_force_unsafe")); LogToConsole("§x§1§0" + Translations.bot_farmer_warining_force_unsafe);
allowUnsafe = true; allowUnsafe = true;
} }
else allowUnsafe = false; else allowUnsafe = false;
@ -171,7 +171,7 @@ namespace MinecraftClient.ChatBots
if (parts[1].Equals("true") || parts[1].Equals("1")) if (parts[1].Equals("true") || parts[1].Equals("1"))
{ {
LogToConsole("§w§1§f" + Translations.TryGet("bot.farmer.warining_allow_teleport")); LogToConsole("§w§1§f" + Translations.bot_farmer_warining_allow_teleport);
allowTeleport = true; allowTeleport = true;
} }
else allowTeleport = false; else allowTeleport = false;
@ -204,7 +204,7 @@ namespace MinecraftClient.ChatBots
} }
} }
return Translations.TryGet("bot.farmer.desc") + ": " + commandDescription; return Translations.bot_farmer_desc + ": " + commandDescription;
} }
public override void AfterGameJoined() public override void AfterGameJoined()
@ -220,9 +220,9 @@ namespace MinecraftClient.ChatBots
private void MainPorcess() private void MainPorcess()
{ {
LogToConsole("§y§1§f" + Translations.TryGet("bot.farmer.started")); LogToConsole("§y§1§f" + Translations.bot_farmer_started);
LogToConsole("§y§1§f " + Translations.TryGet("bot.farmer.crop_type") + ": " + cropType); LogToConsole("§y§1§f " + Translations.bot_farmer_crop_type + ": " + cropType);
LogToConsole("§y§1§f " + Translations.TryGet("bot.farmer.radius") + ": " + farmingRadius); LogToConsole("§y§1§f " + Translations.bot_farmer_radius + ": " + farmingRadius);
while (running) while (running)
{ {
@ -442,7 +442,7 @@ namespace MinecraftClient.ChatBots
Thread.Sleep(Config.Delay_Between_Tasks * 1000); Thread.Sleep(Config.Delay_Between_Tasks * 1000);
} }
LogToConsole(Translations.TryGet("bot.farmer.stopped")); LogToConsole(Translations.bot_farmer_stopped);
} }
private Material GetMaterialForCropType(CropType type) private Material GetMaterialForCropType(CropType type)

View file

@ -41,16 +41,16 @@ namespace MinecraftClient.ChatBots
{ {
if (!GetEntityHandlingEnabled()) if (!GetEntityHandlingEnabled())
{ {
LogToConsoleTranslated("extra.entity_required"); LogToConsole(Translations.extra_entity_required);
LogToConsoleTranslated("general.bot_unload"); LogToConsole(Translations.general_bot_unload);
UnloadBot(); UnloadBot();
return; return;
} }
if (!GetTerrainEnabled()) if (!GetTerrainEnabled())
{ {
LogToConsoleTranslated("extra.terrainandmovement_required"); LogToConsole(Translations.extra_terrainandmovement_required);
LogToConsoleTranslated("general.bot_unload"); LogToConsole(Translations.general_bot_unload);
UnloadBot(); UnloadBot();
return; return;
} }
@ -65,44 +65,48 @@ namespace MinecraftClient.ChatBots
if (args[0].Equals("stop", StringComparison.OrdinalIgnoreCase)) if (args[0].Equals("stop", StringComparison.OrdinalIgnoreCase))
{ {
if (_playerToFollow == null) if (_playerToFollow == null)
return Translations.TryGet("cmd.follow.already_stopped"); return Translations.cmd_follow_already_stopped;
_playerToFollow = null; _playerToFollow = null;
return Translations.TryGet("cmd.follow.stopping"); return Translations.cmd_follow_stopping;
} }
else else
{ {
if (!IsValidName(args[0])) if (!IsValidName(args[0]))
return Translations.TryGet("cmd.follow.invalid_name"); return Translations.cmd_follow_invalid_name;
Entity? player = GetEntities().Values.ToList().Find(entity => Entity? player = GetEntities().Values.ToList().Find(entity =>
entity.Type == EntityType.Player && !string.IsNullOrEmpty(entity.Name) && entity.Name.Equals(args[0], StringComparison.OrdinalIgnoreCase)); entity.Type == EntityType.Player && !string.IsNullOrEmpty(entity.Name) && entity.Name.Equals(args[0], StringComparison.OrdinalIgnoreCase));
if (player == null) if (player == null)
return Translations.TryGet("cmd.follow.invalid_player"); return Translations.cmd_follow_invalid_player;
if (!CanMoveThere(player.Location)) if (!CanMoveThere(player.Location))
return Translations.TryGet("cmd.follow.cant_reach_player"); return Translations.cmd_follow_cant_reach_player;
if (_playerToFollow != null && _playerToFollow.Equals(args[0], StringComparison.OrdinalIgnoreCase)) if (_playerToFollow != null && _playerToFollow.Equals(args[0], StringComparison.OrdinalIgnoreCase))
return Translations.TryGet("cmd.follow.already_following", _playerToFollow); return string.Format(Translations.cmd_follow_already_following, _playerToFollow);
string result = Translations.TryGet(_playerToFollow != null ? "cmd.follow.switched" : "cmd.follow.started", player.Name!); string result;
if (_playerToFollow != null)
result = string.Format(Translations.cmd_follow_switched, player.Name!);
else
result = string.Format(Translations.cmd_follow_started, player.Name!);
_playerToFollow = args[0].Trim().ToLower(); _playerToFollow = args[0].Trim().ToLower();
LogToConsoleTranslated("cmd.follow.note"); LogToConsole(Translations.cmd_follow_note);
if (args.Length == 2 && args[1].Equals("-f", StringComparison.OrdinalIgnoreCase)) if (args.Length == 2 && args[1].Equals("-f", StringComparison.OrdinalIgnoreCase))
{ {
_unsafeEnabled = true; _unsafeEnabled = true;
LogToConsoleTranslated("cmd.follow.unsafe_enabled"); LogToConsole(Translations.cmd_follow_unsafe_enabled);
} }
return result; return result;
} }
} }
return Translations.TryGet("cmd.follow.desc") + ": " + Translations.TryGet("cmd.follow.usage"); return Translations.cmd_follow_desc + ": " + Translations.cmd_follow_usage;
} }
public override void Update() public override void Update()
@ -146,8 +150,8 @@ namespace MinecraftClient.ChatBots
if (_playerToFollow != null && !string.IsNullOrEmpty(entity.Name) && _playerToFollow.Equals(entity.Name, StringComparison.OrdinalIgnoreCase)) if (_playerToFollow != null && !string.IsNullOrEmpty(entity.Name) && _playerToFollow.Equals(entity.Name, StringComparison.OrdinalIgnoreCase))
{ {
LogToConsoleTranslated("cmd.follow.player_came_to_the_range", _playerToFollow); LogToConsole(string.Format(Translations.cmd_follow_player_came_to_the_range, _playerToFollow));
LogToConsoleTranslated("cmd.follow.resuming"); LogToConsole(Translations.cmd_follow_resuming);
} }
} }
@ -158,8 +162,8 @@ namespace MinecraftClient.ChatBots
if (_playerToFollow != null && !string.IsNullOrEmpty(entity.Name) && _playerToFollow.Equals(entity.Name, StringComparison.OrdinalIgnoreCase)) if (_playerToFollow != null && !string.IsNullOrEmpty(entity.Name) && _playerToFollow.Equals(entity.Name, StringComparison.OrdinalIgnoreCase))
{ {
LogToConsoleTranslated("cmd.follow.player_left_the_range", _playerToFollow); LogToConsole(string.Format(Translations.cmd_follow_player_left_the_range, _playerToFollow));
LogToConsoleTranslated("cmd.follow.pausing"); LogToConsole(Translations.cmd_follow_pausing);
} }
} }
@ -167,8 +171,8 @@ namespace MinecraftClient.ChatBots
{ {
if (_playerToFollow != null && !string.IsNullOrEmpty(name) && _playerToFollow.Equals(name, StringComparison.OrdinalIgnoreCase)) if (_playerToFollow != null && !string.IsNullOrEmpty(name) && _playerToFollow.Equals(name, StringComparison.OrdinalIgnoreCase))
{ {
LogToConsoleTranslated("cmd.follow.player_left", _playerToFollow); LogToConsole(string.Format(Translations.cmd_follow_player_left, _playerToFollow));
LogToConsoleTranslated("cmd.follow.stopping"); LogToConsole(Translations.cmd_follow_stopping);
_playerToFollow = null; _playerToFollow = null;
} }
} }

View file

@ -45,25 +45,25 @@ namespace MinecraftClient.ChatBots
if (Config.MaxDatabaseSize <= 0) if (Config.MaxDatabaseSize <= 0)
{ {
LogToConsole(BotName, Translations.TryGet("bot.mailer.init_fail.db_size")); LogToConsole(BotName, Translations.bot_mailer_init_fail_db_size);
checkSuccessed = false; checkSuccessed = false;
} }
if (Config.MaxMailsPerPlayer <= 0) if (Config.MaxMailsPerPlayer <= 0)
{ {
LogToConsole(BotName, Translations.TryGet("bot.mailer.init_fail.max_mails")); LogToConsole(BotName, Translations.bot_mailer_init_fail_max_mails);
checkSuccessed = false; checkSuccessed = false;
} }
if (Config.MailRetentionDays <= 0) if (Config.MailRetentionDays <= 0)
{ {
LogToConsole(BotName, Translations.TryGet("bot.mailer.init_fail.mail_retention")); LogToConsole(BotName, Translations.bot_mailer_init_fail_mail_retention);
checkSuccessed = false; checkSuccessed = false;
} }
if (!checkSuccessed) if (!checkSuccessed)
{ {
LogToConsole(BotName, Translations.TryGet("general.bot_unload")); LogToConsole(BotName, Translations.general_bot_unload);
Enabled = false; Enabled = false;
} }
} }
@ -218,32 +218,32 @@ namespace MinecraftClient.ChatBots
/// </summary> /// </summary>
public override void Initialize() public override void Initialize()
{ {
LogDebugToConsoleTranslated("bot.mailer.init"); LogDebugToConsole(Translations.bot_mailer_init);
LogDebugToConsoleTranslated("bot.mailer.init.db" + Config.DatabaseFile); LogDebugToConsole(Translations.bot_mailer_init_db + Config.DatabaseFile);
LogDebugToConsoleTranslated("bot.mailer.init.ignore" + Config.IgnoreListFile); LogDebugToConsole(Translations.bot_mailer_init_ignore + Config.IgnoreListFile);
LogDebugToConsoleTranslated("bot.mailer.init.public" + Config.PublicInteractions); LogDebugToConsole(Translations.bot_mailer_init_public + Config.PublicInteractions);
LogDebugToConsoleTranslated("bot.mailer.init.max_mails" + Config.MaxMailsPerPlayer); LogDebugToConsole(Translations.bot_mailer_init_max_mails + Config.MaxMailsPerPlayer);
LogDebugToConsoleTranslated("bot.mailer.init.db_size" + Config.MaxDatabaseSize); LogDebugToConsole(Translations.bot_mailer_init_db_size + Config.MaxDatabaseSize);
LogDebugToConsoleTranslated("bot.mailer.init.mail_retention" + Config.MailRetentionDays + " days"); LogDebugToConsole(Translations.bot_mailer_init_mail_retention + Config.MailRetentionDays + " days");
if (!File.Exists(Config.DatabaseFile)) if (!File.Exists(Config.DatabaseFile))
{ {
LogToConsoleTranslated("bot.mailer.create.db", Path.GetFullPath(Config.DatabaseFile)); LogToConsole(string.Format(Translations.bot_mailer_create_db, Path.GetFullPath(Config.DatabaseFile)));
new MailDatabase().SaveToFile(Config.DatabaseFile); new MailDatabase().SaveToFile(Config.DatabaseFile);
} }
if (!File.Exists(Config.IgnoreListFile)) if (!File.Exists(Config.IgnoreListFile))
{ {
LogToConsoleTranslated("bot.mailer.create.ignore", Path.GetFullPath(Config.IgnoreListFile)); LogToConsole(string.Format(Translations.bot_mailer_create_ignore, Path.GetFullPath(Config.IgnoreListFile)));
new IgnoreList().SaveToFile(Config.IgnoreListFile); new IgnoreList().SaveToFile(Config.IgnoreListFile);
} }
lock (readWriteLock) lock (readWriteLock)
{ {
LogDebugToConsoleTranslated("bot.mailer.load.db", Path.GetFullPath(Config.DatabaseFile)); LogDebugToConsole(string.Format(Translations.bot_mailer_load_db, Path.GetFullPath(Config.DatabaseFile)));
mailDatabase = MailDatabase.FromFile(Config.DatabaseFile); mailDatabase = MailDatabase.FromFile(Config.DatabaseFile);
LogDebugToConsoleTranslated("bot.mailer.load.ignore", Path.GetFullPath(Config.IgnoreListFile)); LogDebugToConsole(string.Format(Translations.bot_mailer_load_ignore, Path.GetFullPath(Config.IgnoreListFile)));
ignoreList = IgnoreList.FromFile(Config.IgnoreListFile); ignoreList = IgnoreList.FromFile(Config.IgnoreListFile);
} }
@ -251,7 +251,7 @@ namespace MinecraftClient.ChatBots
mailDbFileMonitor = new FileMonitor(Path.GetDirectoryName(Config.DatabaseFile)!, Path.GetFileName(Config.DatabaseFile), FileMonitorCallback); mailDbFileMonitor = new FileMonitor(Path.GetDirectoryName(Config.DatabaseFile)!, Path.GetFileName(Config.DatabaseFile), FileMonitorCallback);
ignoreListFileMonitor = new FileMonitor(Path.GetDirectoryName(Config.IgnoreListFile)!, Path.GetFileName(Config.IgnoreListFile), FileMonitorCallback); ignoreListFileMonitor = new FileMonitor(Path.GetDirectoryName(Config.IgnoreListFile)!, Path.GetFileName(Config.IgnoreListFile), FileMonitorCallback);
RegisterChatBotCommand("mailer", Translations.Get("bot.mailer.cmd"), "mailer <getmails|addignored|getignored|removeignored>", ProcessInternalCommand); RegisterChatBotCommand("mailer", Translations.bot_mailer_cmd, "mailer <getmails|addignored|getignored|removeignored>", ProcessInternalCommand);
} }
/// <summary> /// <summary>
@ -299,7 +299,7 @@ namespace MinecraftClient.ChatBots
if (message.Length <= maxMessageLength) if (message.Length <= maxMessageLength)
{ {
Mail mail = new(username, recipient, message, anonymous, DateTime.Now); Mail mail = new(username, recipient, message, anonymous, DateTime.Now);
LogToConsoleTranslated("bot.mailer.saving", mail.ToString()); LogToConsole(string.Format(Translations.bot_mailer_saving, mail.ToString()));
lock (readWriteLock) lock (readWriteLock)
{ {
mailDatabase.Add(mail); mailDatabase.Add(mail);
@ -317,7 +317,7 @@ namespace MinecraftClient.ChatBots
break; break;
} }
} }
else LogDebugToConsoleTranslated("bot.mailer.user_ignored", username); else LogDebugToConsole(string.Format(Translations.bot_mailer_user_ignored, username));
} }
} }
@ -329,7 +329,7 @@ namespace MinecraftClient.ChatBots
DateTime dateNow = DateTime.Now; DateTime dateNow = DateTime.Now;
if (nextMailSend < dateNow) if (nextMailSend < dateNow)
{ {
LogDebugToConsoleTranslated("bot.mailer.process_mails", DateTime.Now); LogDebugToConsole(string.Format(Translations.bot_mailer_process_mails, DateTime.Now));
// Process at most 3 mails at a time to avoid spamming. Other mails will be processed on next mail send // Process at most 3 mails at a time to avoid spamming. Other mails will be processed on next mail send
HashSet<string> onlinePlayersLowercase = new(GetOnlinePlayers().Select(name => name.ToLower())); HashSet<string> onlinePlayersLowercase = new(GetOnlinePlayers().Select(name => name.ToLower()));
@ -338,7 +338,7 @@ namespace MinecraftClient.ChatBots
string sender = mail.Anonymous ? "Anonymous" : mail.Sender; string sender = mail.Anonymous ? "Anonymous" : mail.Sender;
SendPrivateMessage(mail.Recipient, sender + " mailed: " + mail.Content); SendPrivateMessage(mail.Recipient, sender + " mailed: " + mail.Content);
mail.SetDelivered(); mail.SetDelivered();
LogDebugToConsoleTranslated("bot.mailer.delivered", mail.ToString()); LogDebugToConsole(string.Format(Translations.bot_mailer_delivered, mail.ToString()));
} }
lock (readWriteLock) lock (readWriteLock)
@ -377,10 +377,10 @@ namespace MinecraftClient.ChatBots
switch (commandName) switch (commandName)
{ {
case "getmails": // Sorry, I (ReinforceZwei) replaced "=" to "-" because it would affect the parsing of translation file (key=value) case "getmails": // Sorry, I (ReinforceZwei) replaced "=" to "-" because it would affect the parsing of translation file (key=value)
return Translations.Get("bot.mailer.cmd.getmails", string.Join("\n", mailDatabase)); return string.Format(Translations.bot_mailer_cmd_getmails, string.Join("\n", mailDatabase));
case "getignored": case "getignored":
return Translations.Get("bot.mailer.cmd.getignored", string.Join("\n", ignoreList)); return string.Format(Translations.bot_mailer_cmd_getignored, string.Join("\n", ignoreList));
case "addignored": case "addignored":
case "removeignored": case "removeignored":
@ -397,7 +397,7 @@ namespace MinecraftClient.ChatBots
ignoreList.SaveToFile(Config.IgnoreListFile); ignoreList.SaveToFile(Config.IgnoreListFile);
} }
} }
return Translations.Get("bot.mailer.cmd.ignore.added", args[1]); return string.Format(Translations.bot_mailer_cmd_ignore_added, args[1]);
} }
else else
{ {
@ -409,13 +409,13 @@ namespace MinecraftClient.ChatBots
ignoreList.SaveToFile(Config.IgnoreListFile); ignoreList.SaveToFile(Config.IgnoreListFile);
} }
} }
return Translations.Get("bot.mailer.cmd.ignore.removed", args[1]); return string.Format(Translations.bot_mailer_cmd_ignore_removed, args[1]);
} }
} }
else return Translations.Get("bot.mailer.cmd.ignore.invalid", commandName); else return string.Format(Translations.bot_mailer_cmd_ignore_invalid, commandName);
} }
} }
return Translations.Get("bot.mailer.cmd.help") + ": /help mailer"; return Translations.bot_mailer_cmd_help + ": /help mailer";
} }
} }
} }

View file

@ -99,12 +99,12 @@ namespace MinecraftClient.ChatBots
if (args.Length == 0 || (args.Length == 1 && (args[0].ToLower().Equals("list") || args[0].ToLower().Equals("l")))) if (args.Length == 0 || (args.Length == 1 && (args[0].ToLower().Equals("list") || args[0].ToLower().Equals("l"))))
{ {
if (cachedMaps.Count == 0) if (cachedMaps.Count == 0)
return Translations.TryGet("bot.map.no_maps"); return Translations.bot_map_no_maps;
LogToConsoleTranslated("bot.map.received"); LogToConsole(Translations.bot_map_received);
foreach (var (key, value) in new SortedDictionary<int, McMap>(cachedMaps)) foreach (var (key, value) in new SortedDictionary<int, McMap>(cachedMaps))
LogToConsoleTranslated("bot.map.list_item", key, value.LastUpdated); LogToConsole(string.Format(Translations.bot_map_list_item, key, value.LastUpdated));
return ""; return "";
} }
@ -119,7 +119,7 @@ namespace MinecraftClient.ChatBots
if (int.TryParse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture, out int mapId)) if (int.TryParse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture, out int mapId))
{ {
if (!cachedMaps.ContainsKey(mapId)) if (!cachedMaps.ContainsKey(mapId))
return Translations.TryGet("bot.map.cmd.not_found", mapId); return string.Format(Translations.bot_map_cmd_not_found, mapId);
try try
{ {
@ -135,10 +135,10 @@ namespace MinecraftClient.ChatBots
catch (Exception e) catch (Exception e)
{ {
LogDebugToConsole(e.StackTrace!); LogDebugToConsole(e.StackTrace!);
return Translations.TryGet("bot.map.failed_to_render", mapId); return string.Format(Translations.bot_map_failed_to_render, mapId);
} }
} }
return Translations.TryGet("bot.map.cmd.invalid_id"); return Translations.bot_map_cmd_invalid_id;
} }
} }
return ""; return "";
@ -172,7 +172,7 @@ namespace MinecraftClient.ChatBots
cachedMaps.Add(mapid, map); cachedMaps.Add(mapid, map);
if (Config.Notify_On_First_Update) if (Config.Notify_On_First_Update)
LogToConsoleTranslated("bot.map.received_map", map.MapId); LogToConsole(string.Format(Translations.bot_map_received_map, map.MapId));
} }
else else
{ {
@ -232,7 +232,7 @@ namespace MinecraftClient.ChatBots
} }
file.Close(); file.Close();
LogToConsole(Translations.TryGet("bot.map.rendered", map.MapId, fileName)); LogToConsole(string.Format(Translations.bot_map_rendered, map.MapId, fileName));
if (Config.Rasize_Rendered_Image) if (Config.Rasize_Rendered_Image)
{ {
@ -243,7 +243,7 @@ namespace MinecraftClient.ChatBots
image.Resize(size); image.Resize(size);
image.Write(fileName); image.Write(fileName);
LogToConsole(Translations.TryGet("bot.map.resized_rendered_image", map.MapId, Config.Resize_To)); LogToConsole(string.Format(Translations.bot_map_resized_rendered_image, map.MapId, Config.Resize_To));
} }
} }
@ -292,10 +292,10 @@ namespace MinecraftClient.ChatBots
newFileName = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + newFileName; newFileName = Directory.GetCurrentDirectory() + Path.DirectorySeparatorChar + newFileName;
if (Config.Send_Rendered_To_Discord) if (Config.Send_Rendered_To_Discord)
LogToConsole(Translations.TryGet("bot.map.sent_to_discord", map.MapId)); LogToConsole(string.Format(Translations.bot_map_sent_to_discord, map.MapId));
if (Config.Send_Rendered_To_Telegram) if (Config.Send_Rendered_To_Telegram)
LogToConsole(Translations.TryGet("bot.map.sent_to_telegram", map.MapId)); LogToConsole(string.Format(Translations.bot_map_sent_to_telegram, map.MapId));
// Wait for 2 seconds and then try until file is free for deletion // Wait for 2 seconds and then try until file is free for deletion
// 10 seconds timeout // 10 seconds timeout
@ -313,7 +313,7 @@ namespace MinecraftClient.ChatBots
if (File.Exists(newFileName)) if (File.Exists(newFileName))
File.Delete(newFileName); File.Delete(newFileName);
} }
catch (IOException e) { } catch (IOException) { }
} }
}); });
} }
@ -331,7 +331,7 @@ namespace MinecraftClient.ChatBots
int scaleY = (map.Height + consoleHeight - 1) / consoleHeight; int scaleY = (map.Height + consoleHeight - 1) / consoleHeight;
int scale = Math.Max(scaleX, scaleY); int scale = Math.Max(scaleX, scaleY);
if (scale > 1) if (scale > 1)
sb.AppendLine(Translations.Get("bot.map.scale", map.Width, map.Height, map.Width / scale, map.Height / scale)); sb.AppendLine(string.Format(Translations.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) for (int base_y = 0; base_y < map.Height; base_y += scale)
{ {

View file

@ -40,7 +40,7 @@ namespace MinecraftClient.ChatBots
replay.MetaData.serverName = GetServerHost() + GetServerPort(); replay.MetaData.serverName = GetServerHost() + GetServerPort();
backupCounter = Settings.DoubleToTick(Config.Backup_Interval); backupCounter = Settings.DoubleToTick(Config.Backup_Interval);
RegisterChatBotCommand("replay", Translations.Get("bot.replayCapture.cmd"), "replay <save|stop>", Command); RegisterChatBotCommand("replay", Translations.bot_replayCapture_cmd, "replay <save|stop>", Command);
} }
public override void OnNetworkPacket(int packetID, List<byte> packetData, bool isLogin, bool isInbound) public override void OnNetworkPacket(int packetID, List<byte> packetData, bool isLogin, bool isInbound)
@ -80,18 +80,18 @@ namespace MinecraftClient.ChatBots
case "save": case "save":
{ {
replay.CreateBackupReplay(@"replay_recordings\" + replay.GetReplayDefaultName()); replay.CreateBackupReplay(@"replay_recordings\" + replay.GetReplayDefaultName());
return Translations.Get("bot.replayCapture.created"); return Translations.bot_replayCapture_created;
} }
case "stop": case "stop":
{ {
replay.OnShutDown(); replay.OnShutDown();
return Translations.Get("bot.replayCapture.stopped"); return Translations.bot_replayCapture_stopped;
} }
} }
} }
return Translations.Get("general.available_cmd", "save, stop"); return string.Format(Translations.general_available_cmd, "save, stop");
} }
else return Translations.Get("bot.replayCapture.restart"); else return Translations.bot_replayCapture_restart;
} }
catch (Exception e) catch (Exception e)
{ {

View file

@ -118,7 +118,7 @@ namespace MinecraftClient.ChatBots
caller = type.Name; caller = type.Name;
} }
catch { } catch { }
ConsoleIO.WriteLineFormatted(Translations.Get("bot.script.not_found", caller, filename)); ConsoleIO.WriteLineFormatted(string.Format(Translations.bot_script_not_found, caller, filename));
} }
return false; return false;
@ -134,14 +134,14 @@ namespace MinecraftClient.ChatBots
thread = null; thread = null;
if (!String.IsNullOrEmpty(owner)) if (!String.IsNullOrEmpty(owner))
SendPrivateMessage(owner, Translations.Get("bot.script.pm.loaded", file)); SendPrivateMessage(owner, string.Format(Translations.bot_script_pm_loaded, file));
} }
else else
{ {
LogToConsoleTranslated("bot.script.file_not_found", System.IO.Path.GetFullPath(file)); LogToConsole(string.Format(Translations.bot_script_file_not_found, System.IO.Path.GetFullPath(file)));
if (!String.IsNullOrEmpty(owner)) if (!String.IsNullOrEmpty(owner))
SendPrivateMessage(owner, Translations.Get("bot.script.file_not_found", file)); SendPrivateMessage(owner, string.Format(Translations.bot_script_file_not_found, file));
UnloadBot(); //No need to keep the bot active UnloadBot(); //No need to keep the bot active
} }
@ -162,7 +162,7 @@ namespace MinecraftClient.ChatBots
} }
catch (CSharpException e) catch (CSharpException e)
{ {
string errorMessage = Translations.Get("bot.script.fail", file, e.ExceptionType); string errorMessage = string.Format(Translations.bot_script_fail, file, e.ExceptionType);
LogToConsole(errorMessage); LogToConsole(errorMessage);
if (owner != null) if (owner != null)
SendPrivateMessage(owner, errorMessage); SendPrivateMessage(owner, errorMessage);

View file

@ -58,26 +58,26 @@ namespace MinecraftClient.ChatBots
|| (task.Trigger_On_Interval.Enable && task.Trigger_On_Interval.MinTime > 0)) || (task.Trigger_On_Interval.Enable && task.Trigger_On_Interval.MinTime > 0))
{ {
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
LogToConsole(BotName, Translations.TryGet("bot.scriptScheduler.loaded_task", Task2String(task))); LogToConsole(BotName, string.Format(Translations.bot_scriptScheduler_loaded_task, Task2String(task)));
task.Trigger_On_Interval_Countdown = Settings.DoubleToTick(task.Trigger_On_Interval.MinTime); //Init countdown for interval task.Trigger_On_Interval_Countdown = Settings.DoubleToTick(task.Trigger_On_Interval.MinTime); //Init countdown for interval
} }
else else
{ {
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
LogToConsole(BotName, Translations.TryGet("bot.scriptScheduler.no_trigger", Task2String(task))); LogToConsole(BotName, string.Format(Translations.bot_scriptScheduler_no_trigger, Task2String(task)));
} }
} }
else else
{ {
task.Action ??= string.Empty; task.Action ??= string.Empty;
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
LogToConsole(BotName, Translations.TryGet("bot.scriptScheduler.no_action", Task2String(task))); LogToConsole(BotName, string.Format(Translations.bot_scriptScheduler_no_action, Task2String(task)));
} }
} }
if (Enabled && TaskList.Length == 0) if (Enabled && TaskList.Length == 0)
{ {
LogToConsole(BotName, Translations.TryGet("general.bot_unload")); LogToConsole(BotName, Translations.general_bot_unload);
Enabled = false; Enabled = false;
} }
} }
@ -189,7 +189,7 @@ namespace MinecraftClient.ChatBots
if (!task.Trigger_On_Time_Already_Triggered) if (!task.Trigger_On_Time_Already_Triggered)
{ {
task.Trigger_On_Time_Already_Triggered = true; task.Trigger_On_Time_Already_Triggered = true;
LogDebugToConsoleTranslated("bot.scriptScheduler.running_time", task.Action); LogDebugToConsole(string.Format(Translations.bot_scriptScheduler_running_time, task.Action));
PerformInternalCommand(task.Action); PerformInternalCommand(task.Action);
} }
} }
@ -207,7 +207,7 @@ namespace MinecraftClient.ChatBots
{ {
if (task.Trigger_On_Login || (firstlogin_done == false && task.Trigger_On_First_Login)) if (task.Trigger_On_Login || (firstlogin_done == false && task.Trigger_On_First_Login))
{ {
LogDebugToConsoleTranslated("bot.scriptScheduler.running_login", task.Action); LogDebugToConsole(string.Format(Translations.bot_scriptScheduler_running_login, task.Action));
PerformInternalCommand(task.Action); PerformInternalCommand(task.Action);
} }
} }
@ -227,7 +227,7 @@ namespace MinecraftClient.ChatBots
task.Trigger_On_Interval_Countdown = random.Next( task.Trigger_On_Interval_Countdown = random.Next(
Settings.DoubleToTick(task.Trigger_On_Interval.MinTime), Settings.DoubleToTick(task.Trigger_On_Interval.MaxTime) Settings.DoubleToTick(task.Trigger_On_Interval.MinTime), Settings.DoubleToTick(task.Trigger_On_Interval.MaxTime)
); );
LogDebugToConsoleTranslated("bot.scriptScheduler.running_inverval", task.Action); LogDebugToConsole(string.Format(Translations.bot_scriptScheduler_running_inverval, task.Action));
PerformInternalCommand(task.Action); PerformInternalCommand(task.Action);
} }
else task.Trigger_On_Interval_Countdown--; else task.Trigger_On_Interval_Countdown--;
@ -243,8 +243,8 @@ namespace MinecraftClient.ChatBots
private static string Task2String(TaskConfig task) private static string Task2String(TaskConfig task)
{ {
return Translations.Get( return string.Format(
"bot.scriptScheduler.task", Translations.bot_scriptScheduler_task,
task.Trigger_On_First_Login, task.Trigger_On_First_Login,
task.Trigger_On_Login, task.Trigger_On_Login,
task.Trigger_On_Times.Enable, task.Trigger_On_Times.Enable,

View file

@ -1,10 +1,8 @@
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using DSharpPlus.Entities;
using Telegram.Bot; using Telegram.Bot;
using Telegram.Bot.Exceptions; using Telegram.Bot.Exceptions;
using Telegram.Bot.Polling; using Telegram.Bot.Polling;
@ -93,13 +91,13 @@ namespace MinecraftClient.ChatBots
{ {
try try
{ {
SendMessage(Translations.TryGet("bot.TelegramBridge.disconnected")); SendMessage(Translations.bot_TelegramBridge_disconnected);
cancellationToken?.Cancel(); cancellationToken?.Cancel();
botClient = null; botClient = null;
} }
catch (Exception e) catch (Exception e)
{ {
LogToConsole("§w§l§f" + Translations.TryGet("bot.TelegramBridge.canceled_sending")); LogToConsole("§w§l§f" + Translations.bot_TelegramBridge_canceled_sending);
LogDebugToConsole(e); LogDebugToConsole(e);
} }
@ -120,34 +118,33 @@ namespace MinecraftClient.ChatBots
{ {
string direction = args[1].ToLower().Trim(); string direction = args[1].ToLower().Trim();
string? bridgeName = ""; string bridgeName;
switch (direction) switch (direction)
{ {
case "b": case "b":
case "both": case "both":
bridgeName = "bot.TelegramBridge.direction.both"; bridgeName = Translations.bot_TelegramBridge_direction_both;
bridgeDirection = BridgeDirection.Both; bridgeDirection = BridgeDirection.Both;
break; break;
case "mc": case "mc":
case "minecraft": case "minecraft":
bridgeName = "bot.TelegramBridge.direction.minecraft"; bridgeName = Translations.bot_TelegramBridge_direction_minecraft;
bridgeDirection = BridgeDirection.Minecraft; bridgeDirection = BridgeDirection.Minecraft;
break; break;
case "t": case "t":
case "tg": case "tg":
case "telegram": case "telegram":
bridgeName = "bot.TelegramBridge.direction.discord"; bridgeName = Translations.bot_TelegramBridge_direction_Telegram;
bridgeDirection = BridgeDirection.Telegram; bridgeDirection = BridgeDirection.Telegram;
break; break;
default: default:
return Translations.TryGet("bot.TelegramBridge.invalid_direction"); return Translations.bot_TelegramBridge_invalid_direction;
} }
return Translations.TryGet("bot.TelegramBridge.direction", Translations.TryGet(bridgeName)); return string.Format(Translations.bot_TelegramBridge_direction, bridgeName);
}; };
} }
@ -191,7 +188,7 @@ namespace MinecraftClient.ChatBots
} }
catch (Exception e) catch (Exception e)
{ {
LogToConsole("§w§l§f" + Translations.TryGet("bot.TelegramBridge.canceled_sending")); LogToConsole("§w§l§f" + Translations.bot_TelegramBridge_canceled_sending);
LogDebugToConsole(e); LogDebugToConsole(e);
} }
} }
@ -214,7 +211,7 @@ namespace MinecraftClient.ChatBots
} }
catch (Exception e) catch (Exception e)
{ {
LogToConsole("§w§l§f" + Translations.TryGet("bot.TelegramBridge.canceled_sending")); LogToConsole("§w§l§f" + Translations.bot_TelegramBridge_canceled_sending);
LogDebugToConsole(e); LogDebugToConsole(e);
} }
} }
@ -230,13 +227,13 @@ namespace MinecraftClient.ChatBots
{ {
if (string.IsNullOrEmpty(Config.Token.Trim())) if (string.IsNullOrEmpty(Config.Token.Trim()))
{ {
LogToConsole(Translations.TryGet("bot.TelegramBridge.missing_token")); LogToConsole(Translations.bot_TelegramBridge_missing_token);
UnloadBot(); UnloadBot();
return; return;
} }
if (string.IsNullOrEmpty(Config.ChannelId.Trim())) if (string.IsNullOrEmpty(Config.ChannelId.Trim()))
LogToConsole("§w§l§f" + Translations.TryGet("bot.TelegramBridge.missing_channel_id")); LogToConsole("§w§l§f" + Translations.bot_TelegramBridge_missing_channel_id);
botClient = new TelegramBotClient(Config.Token.Trim()); botClient = new TelegramBotClient(Config.Token.Trim());
cancellationToken = new CancellationTokenSource(); cancellationToken = new CancellationTokenSource();
@ -254,13 +251,13 @@ namespace MinecraftClient.ChatBots
IsConnected = true; IsConnected = true;
SendMessage("✅ " + Translations.TryGet("bot.TelegramBridge.connected")); SendMessage($"✅ {Translations.bot_TelegramBridge_connected}");
LogToConsole("§y§l§f" + Translations.TryGet("bot.TelegramBridge.connected")); LogToConsole($"§y§l§f{Translations.bot_TelegramBridge_connected}");
if (Config.Authorized_Chat_Ids.Length == 0) if (Config.Authorized_Chat_Ids.Length == 0)
{ {
SendMessage("⚠️ *" + Translations.TryGet("bot.TelegramBridge.missing_authorized_channels") + "* ⚠️"); SendMessage($"⚠️ *{Translations.bot_TelegramBridge_missing_authorized_channels}* ⚠️");
LogToConsole("§w§l§f" + Translations.TryGet("bot.TelegramBridge.missing_authorized_channels")); LogToConsole($"§w§l§f{Translations.bot_TelegramBridge_missing_authorized_channels}");
return; return;
} }
@ -268,7 +265,7 @@ namespace MinecraftClient.ChatBots
} }
catch (Exception e) catch (Exception e)
{ {
LogToConsole("§w§l§f" + Translations.TryGet("bot.TelegramBridge.unknown_error")); LogToConsole($"§w§l§f{Translations.bot_TelegramBridge_unknown_error}");
LogToConsole(e); LogToConsole(e);
return; return;
} }
@ -309,7 +306,7 @@ namespace MinecraftClient.ChatBots
await botClient.SendTextMessageAsync( await botClient.SendTextMessageAsync(
chatId: chatId, chatId: chatId,
replyToMessageId: message.MessageId, replyToMessageId: message.MessageId,
text: Translations.TryGet("bot.TelegramBridge.unauthorized"), text: Translations.bot_TelegramBridge_unauthorized,
cancellationToken: _cancellationToken, cancellationToken: _cancellationToken,
parseMode: ParseMode.Markdown); parseMode: ParseMode.Markdown);
return; return;
@ -335,7 +332,7 @@ namespace MinecraftClient.ChatBots
chatId: chatId, chatId: chatId,
replyToMessageId: replyToMessageId:
message.MessageId, message.MessageId,
text: $"{Translations.TryGet("bot.TelegramBridge.command_executed")}:\n\n{result}", text: $"{Translations.bot_TelegramBridge_command_executed}:\n\n{result}",
cancellationToken: _cancellationToken, cancellationToken: _cancellationToken,
parseMode: ParseMode.Markdown); parseMode: ParseMode.Markdown);
} }

View file

@ -14,11 +14,11 @@
if (IsPrivateMessage(text, ref message, ref username)) if (IsPrivateMessage(text, ref message, ref username))
{ {
LogToConsoleTranslated("bot.testBot.told", username, message); LogToConsole(string.Format(Translations.bot_testBot_told, username, message));
} }
else if (IsChatMessage(text, ref message, ref username)) else if (IsChatMessage(text, ref message, ref username))
{ {
LogToConsoleTranslated("bot.testBot.said", username, message); LogToConsole(string.Format(Translations.bot_testBot_said, username, message));
} }
} }
} }

View file

@ -28,8 +28,8 @@ namespace MinecraftClient
/// <returns>Translated command description</returns> /// <returns>Translated command description</returns>
public string GetCmdDescTranslated() public string GetCmdDescTranslated()
{ {
string s = string.IsNullOrEmpty(CmdUsage) || string.IsNullOrEmpty(CmdDesc) ? "" : ": "; // If either one is empty, no colon : string s = (string.IsNullOrEmpty(CmdUsage) || string.IsNullOrEmpty(CmdDesc)) ? "" : ": "; // If either one is empty, no colon :
return CmdUsage + s + Translations.TryGet(CmdDesc); return CmdUsage + s + CmdDesc;
} }
/// <summary> /// <summary>

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "animation"; } } public override string CmdName { get { return "animation"; } }
public override string CmdUsage { get { return "animation <mainhand|offhand>"; } } public override string CmdUsage { get { return "animation <mainhand|offhand>"; } }
public override string CmdDesc { get { return "cmd.animation.desc"; } } public override string CmdDesc { get { return Translations.cmd_animation_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)
{ {
@ -18,12 +18,12 @@ namespace MinecraftClient.Commands
if (args[0] == "mainhand" || args[0] == "0") if (args[0] == "mainhand" || args[0] == "0")
{ {
handler.DoAnimation(0); handler.DoAnimation(0);
return Translations.Get("general.done"); return Translations.general_done;
} }
else if (args[0] == "offhand" || args[0] == "1") else if (args[0] == "offhand" || args[0] == "1")
{ {
handler.DoAnimation(1); handler.DoAnimation(1);
return Translations.Get("general.done"); return Translations.general_done;
} }
else else
{ {

View file

@ -11,7 +11,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "bed"; } } public override string CmdName { get { return "bed"; } }
public override string CmdUsage { get { return "bed leave|sleep <x> <y> <z>|sleep <radius>"; } } public override string CmdUsage { get { return "bed leave|sleep <x> <y> <z>|sleep <radius>"; } }
public override string CmdDesc { get { return "cmd.bed.desc"; } } public override string CmdDesc { get { return Translations.cmd_bed_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)
{ {
@ -24,20 +24,20 @@ namespace MinecraftClient.Commands
if (subcommand.Equals("leave") || subcommand.Equals("l")) if (subcommand.Equals("leave") || subcommand.Equals("l"))
{ {
handler.SendEntityAction(Protocol.EntityActionType.LeaveBed); handler.SendEntityAction(Protocol.EntityActionType.LeaveBed);
return Translations.TryGet("cmd.bed.leaving"); return Translations.cmd_bed_leaving;
} }
if (subcommand.Equals("sleep") || subcommand.Equals("s")) if (subcommand.Equals("sleep") || subcommand.Equals("s"))
{ {
if (!handler.GetTerrainEnabled()) if (!handler.GetTerrainEnabled())
return Translations.TryGet("error.terrain_not_enabled"); return Translations.error_terrain_not_enabled;
if (args.Length == 2) if (args.Length == 2)
{ {
if (!int.TryParse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture, out int radius)) if (!int.TryParse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture, out int radius))
return CmdUsage; return CmdUsage;
handler.GetLogger().Info(Translations.TryGet("cmd.bed.searching", radius)); handler.GetLogger().Info(string.Format(Translations.cmd_bed_searching, radius));
Location current = handler.GetCurrentLocation(); Location current = handler.GetCurrentLocation();
Location bedLocation = current; Location bedLocation = current;
@ -75,12 +75,12 @@ namespace MinecraftClient.Commands
} }
if (!found) if (!found)
return Translations.TryGet("cmd.bed.bed_not_found"); return Translations.cmd_bed_bed_not_found;
handler.Log.Info(Translations.TryGet("cmd.bed.found_a_bed_at", bedLocation.X, bedLocation.Y, bedLocation.Z)); handler.Log.Info(string.Format(Translations.cmd_bed_found_a_bed_at, bedLocation.X, bedLocation.Y, bedLocation.Z));
if (!Movement.CheckChunkLoading(handler.GetWorld(), current, bedLocation)) if (!Movement.CheckChunkLoading(handler.GetWorld(), current, bedLocation))
return Translations.Get("cmd.move.chunk_not_loaded", bedLocation.X, bedLocation.Y, bedLocation.Z); return string.Format(Translations.cmd_move_chunk_not_loaded, bedLocation.X, bedLocation.Y, bedLocation.Z);
if (handler.MoveTo(bedLocation)) if (handler.MoveTo(bedLocation))
{ {
@ -100,27 +100,27 @@ namespace MinecraftClient.Commands
if (!atTheLocation) if (!atTheLocation)
{ {
handler.Log.Info(Translations.TryGet("cmd.bed.failed_to_reach_in_time", bedLocation.X, bedLocation.Y, bedLocation.Z)); handler.Log.Info(string.Format(Translations.cmd_bed_failed_to_reach_in_time, bedLocation.X, bedLocation.Y, bedLocation.Z));
return; return;
} }
handler.Log.Info(Translations.TryGet("cmd.bed.moving", bedLocation.X, bedLocation.Y, bedLocation.Z)); handler.Log.Info(string.Format(Translations.cmd_bed_moving, bedLocation.X, bedLocation.Y, bedLocation.Z));
bool res = handler.PlaceBlock(bedLocation, Direction.Down); bool res = handler.PlaceBlock(bedLocation, Direction.Down);
handler.Log.Info(Translations.TryGet( handler.Log.Info(string.Format(
"cmd.bed.trying_to_use", Translations.cmd_bed_trying_to_use,
bedLocation.X, bedLocation.X,
bedLocation.Y, bedLocation.Y,
bedLocation.Z, bedLocation.Z,
Translations.TryGet(res ? "cmd.bed.in" : "cmd.bed.not_in") res ? Translations.cmd_bed_in : Translations.cmd_bed_not_in
)); ));
}); });
return ""; return "";
} }
return Translations.Get("cmd.bed.cant_reach_safely"); return Translations.cmd_bed_cant_reach_safely;
} }
if (args.Length >= 3) if (args.Length >= 3)
@ -129,16 +129,16 @@ namespace MinecraftClient.Commands
Location blockCenter = block.ToCenter(); Location blockCenter = block.ToCenter();
if (!handler.GetWorld().GetBlock(block).Type.IsBed()) if (!handler.GetWorld().GetBlock(block).Type.IsBed())
return Translations.TryGet("cmd.bed.not_a_bed", blockCenter.X, blockCenter.Y, blockCenter.Z); return string.Format(Translations.cmd_bed_not_a_bed, blockCenter.X, blockCenter.Y, blockCenter.Z);
bool res = handler.PlaceBlock(block, Direction.Down); bool res = handler.PlaceBlock(block, Direction.Down);
return Translations.TryGet( return string.Format(
"cmd.bed.trying_to_use", Translations.cmd_bed_trying_to_use,
blockCenter.X, blockCenter.X,
blockCenter.Y, blockCenter.Y,
blockCenter.Z, blockCenter.Z,
Translations.TryGet(res ? "cmd.bed.in" : "cmd.bed.not_in") res ? Translations.cmd_bed_in : Translations.cmd_bed_not_in
); );
} }
} }

View file

@ -8,12 +8,12 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "blockinfo"; } } public override string CmdName { get { return "blockinfo"; } }
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 Translations.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)
{ {
if (!handler.GetTerrainEnabled()) if (!handler.GetTerrainEnabled())
return Translations.TryGet("error.terrain_not_enabled"); return Translations.error_terrain_not_enabled;
string[] args = GetArgs(command); string[] args = GetArgs(command);
@ -27,12 +27,12 @@ namespace MinecraftClient.Commands
Block block = handler.GetWorld().GetBlock(targetBlockLocation); Block block = handler.GetWorld().GetBlock(targetBlockLocation);
handler.Log.Info(Translations.TryGet("cmd.blockinfo.BlockType") + ": " + block.GetTypeString()); handler.Log.Info($"{Translations.cmd_blockinfo_BlockType}: {block.GetTypeString()}");
if (reportSurrounding) if (reportSurrounding)
{ {
StringBuilder sb = new(); StringBuilder sb = new();
sb.AppendLine(Translations.TryGet("cmd.blockinfo.BlocksAround") + ":"); sb.AppendLine($"{Translations.cmd_blockinfo_BlocksAround}:");
Block blockXPositive = handler.GetWorld().GetBlock(new Location(targetBlockLocation.X + 1, targetBlockLocation.Y, targetBlockLocation.Z)); Block blockXPositive = handler.GetWorld().GetBlock(new Location(targetBlockLocation.X + 1, targetBlockLocation.Y, targetBlockLocation.Z));
Block blockXNegative = handler.GetWorld().GetBlock(new Location(targetBlockLocation.X - 1, targetBlockLocation.Y, targetBlockLocation.Z)); Block blockXNegative = handler.GetWorld().GetBlock(new Location(targetBlockLocation.X - 1, targetBlockLocation.Y, targetBlockLocation.Z));
@ -41,24 +41,18 @@ 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") + "] " + sb.AppendLine($"[X {Translations.cmd_blockinfo_Positive}] {Translations.cmd_blockinfo_BlockType}: {blockXPositive.GetTypeString()}");
Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockXPositive.GetTypeString()); sb.AppendLine($"[X {Translations.cmd_blockinfo_Negative}] {Translations.cmd_blockinfo_BlockType}: {blockXNegative.GetTypeString()}");
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") + "] " + sb.AppendLine($"[Y {Translations.cmd_blockinfo_Positive}] {Translations.cmd_blockinfo_BlockType}: {blockYPositive.GetTypeString()}");
Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockYPositive.GetTypeString()); sb.AppendLine($"[Y {Translations.cmd_blockinfo_Negative}] {Translations.cmd_blockinfo_BlockType}: {blockYNegative.GetTypeString()}");
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") + "] " + sb.AppendLine($"[Z {Translations.cmd_blockinfo_Positive}] {Translations.cmd_blockinfo_BlockType}: {blockZPositive.GetTypeString()}");
Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockZPositive.GetTypeString()); sb.AppendLine($"[Z {Translations.cmd_blockinfo_Negative}] {Translations.cmd_blockinfo_BlockType}: {blockZNegative.GetTypeString()}");
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

@ -8,7 +8,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "bots"; } } public override string CmdName { get { return "bots"; } }
public override string CmdUsage { get { return "bots [list|unload <bot name|all>]"; } } public override string CmdUsage { get { return "bots [list|unload <bot name|all>]"; } }
public override string CmdDesc { get { return "cmd.bots.desc"; } } public override string CmdDesc { get { return Translations.cmd_bots_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)
{ {
@ -25,7 +25,7 @@ namespace MinecraftClient.Commands
int length = handler.GetLoadedChatBots().Count; int length = handler.GetLoadedChatBots().Count;
if (length == 0) if (length == 0)
return Translations.TryGet("cmd.bots.noloaded"); return Translations.cmd_bots_noloaded;
for (int i = 0; i < length; i++) for (int i = 0; i < length; i++)
{ {
@ -36,7 +36,7 @@ namespace MinecraftClient.Commands
} }
return Translations.Get("cmd.bots.list") + ": " + sb.ToString(); return Translations.cmd_bots_list + ": " + sb.ToString();
} }
} }
@ -49,20 +49,20 @@ namespace MinecraftClient.Commands
if (botName.ToLower().Equals("all", StringComparison.OrdinalIgnoreCase)) if (botName.ToLower().Equals("all", StringComparison.OrdinalIgnoreCase))
{ {
if (handler.GetLoadedChatBots().Count == 0) if (handler.GetLoadedChatBots().Count == 0)
return Translations.TryGet("cmd.bots.noloaded"); return Translations.cmd_bots_noloaded;
handler.UnloadAllBots(); handler.UnloadAllBots();
return Translations.TryGet("cmd.bots.unloaded_all"); return Translations.cmd_bots_unloaded_all;
} }
else else
{ {
ChatBot? bot = handler.GetLoadedChatBots().Find(bot => bot.GetType().Name.ToLower() == botName.ToLower()); ChatBot? bot = handler.GetLoadedChatBots().Find(bot => bot.GetType().Name.ToLower() == botName.ToLower());
if (bot == null) if (bot == null)
return Translations.TryGet("cmd.bots.notfound", botName); return string.Format(Translations.cmd_bots_notfound, botName);
handler.BotUnLoad(bot); handler.BotUnLoad(bot);
return Translations.TryGet("cmd.bots.unloaded", botName); return string.Format(Translations.cmd_bots_unloaded, botName);
} }
} }
} }

View file

@ -7,12 +7,12 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "changeslot"; } } public override string CmdName { get { return "changeslot"; } }
public override string CmdUsage { get { return "changeslot <1-9>"; } } public override string CmdUsage { get { return "changeslot <1-9>"; } }
public override string CmdDesc { get { return "cmd.changeSlot.desc"; } } public override string CmdDesc { get { return Translations.cmd_changeSlot_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)
{ {
if (!handler.GetInventoryEnabled()) if (!handler.GetInventoryEnabled())
return Translations.Get("extra.inventory_required"); return Translations.extra_inventory_required;
if (HasArg(command)) if (HasArg(command))
{ {
@ -23,17 +23,17 @@ namespace MinecraftClient.Commands
} }
catch (FormatException) catch (FormatException)
{ {
return Translations.Get("cmd.changeSlot.nan"); return Translations.cmd_changeSlot_nan;
} }
if (slot >= 1 && slot <= 9) if (slot >= 1 && slot <= 9)
{ {
if (handler.ChangeSlot(slot -= 1)) if (handler.ChangeSlot(slot -= 1))
{ {
return Translations.Get("cmd.changeSlot.changed", (slot += 1)); return string.Format(Translations.cmd_changeSlot_changed, (slot += 1));
} }
else else
{ {
return Translations.Get("cmd.changeSlot.fail"); return Translations.cmd_changeSlot_fail;
} }
} }
} }

View file

@ -10,7 +10,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "chunk"; } } public override string CmdName { get { return "chunk"; } }
public override string CmdUsage { get { return "chunk status [chunkX chunkZ|locationX locationY locationZ]"; } } public override string CmdUsage { get { return "chunk status [chunkX chunkZ|locationX locationY locationZ]"; } }
public override string CmdDesc { get { return "cmd.chunk.desc"; } } public override string CmdDesc { get { return Translations.cmd_chunk_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)
{ {
@ -32,16 +32,16 @@ namespace MinecraftClient.Commands
sb.Append(World.GetChunkLoadingStatus(handler.GetWorld())); sb.Append(World.GetChunkLoadingStatus(handler.GetWorld()));
sb.Append('\n'); sb.Append('\n');
sb.AppendLine(Translations.Get("cmd.chunk.current", current, current.ChunkX, current.ChunkZ)); sb.AppendLine(string.Format(Translations.cmd_chunk_current, current, current.ChunkX, current.ChunkZ));
if (markedChunkPos != null) if (markedChunkPos != null)
{ {
sb.Append(Translations.Get("cmd.chunk.marked")); sb.Append(Translations.cmd_chunk_marked);
if (args.Length == 1 + 3) if (args.Length == 1 + 3)
sb.Append(String.Format("X:{0:0.00} Y:{1:0.00} Z:{2:0.00}, ", sb.Append(String.Format("X:{0:0.00} Y:{1:0.00} Z:{2:0.00}, ",
double.Parse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture), double.Parse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture),
double.Parse(args[2], NumberStyles.Any, CultureInfo.CurrentCulture), double.Parse(args[2], NumberStyles.Any, CultureInfo.CurrentCulture),
double.Parse(args[3], NumberStyles.Any, CultureInfo.CurrentCulture))); double.Parse(args[3], NumberStyles.Any, CultureInfo.CurrentCulture)));
sb.AppendLine(Translations.Get("cmd.chunk.chunk_pos", markChunkX, markChunkZ));; sb.AppendLine(string.Format(Translations.cmd_chunk_chunk_pos, markChunkX, markChunkZ));;
} }
int consoleHeight = Math.Max(Math.Max(Console.BufferHeight, Settings.Config.Main.Advanced.MinTerminalHeight) - 2, 25); int consoleHeight = Math.Max(Math.Max(Console.BufferHeight, Settings.Config.Main.Advanced.MinTerminalHeight) - 2, 25);
@ -127,7 +127,7 @@ namespace MinecraftClient.Commands
if (markedChunkPos != null && if (markedChunkPos != null &&
(((Math.Max(bottomMost, markChunkZ) - Math.Min(topMost, markChunkZ) + 1) > consoleHeight) || (((Math.Max(bottomMost, markChunkZ) - Math.Min(topMost, markChunkZ) + 1) > consoleHeight) ||
((Math.Max(rightMost, markChunkX) - Math.Min(leftMost, markChunkX) + 1) > consoleWidth))) ((Math.Max(rightMost, markChunkX) - Math.Min(leftMost, markChunkX) + 1) > consoleWidth)))
sb.AppendLine(Translations.Get("cmd.chunk.outside")); sb.AppendLine(Translations.cmd_chunk_outside);
else else
{ {
topMost = Math.Min(topMost, markChunkZ); topMost = Math.Min(topMost, markChunkZ);
@ -165,7 +165,7 @@ namespace MinecraftClient.Commands
sb.Append('\n'); sb.Append('\n');
} }
sb.AppendLine(Translations.Get("cmd.chunk.icon", "§z §r", "§w §r", chunkStatusStr[0], chunkStatusStr[1], chunkStatusStr[2])); sb.AppendLine(string.Format(Translations.cmd_chunk_icon, "§z §r", "§w §r", chunkStatusStr[0], chunkStatusStr[1], chunkStatusStr[2]));
return sb.ToString(); return sb.ToString();
} }
else if (args[0] == "setloading") // For debugging else if (args[0] == "setloading") // For debugging
@ -173,7 +173,7 @@ namespace MinecraftClient.Commands
Tuple<int, int>? chunkPos = ParseChunkPos(args); Tuple<int, int>? chunkPos = ParseChunkPos(args);
if (chunkPos != null) if (chunkPos != null)
{ {
handler.Log.Info(Translations.Get("cmd.chunk.for_debug")); handler.Log.Info(Translations.cmd_chunk_for_debug);
World world = handler.GetWorld(); World world = handler.GetWorld();
(int chunkX, int chunkZ) = chunkPos; (int chunkX, int chunkZ) = chunkPos;
ChunkColumn? chunkColumn = world[chunkX, chunkZ]; ChunkColumn? chunkColumn = world[chunkX, chunkZ];
@ -190,7 +190,7 @@ namespace MinecraftClient.Commands
Tuple<int, int>? chunkPos = ParseChunkPos(args); Tuple<int, int>? chunkPos = ParseChunkPos(args);
if (chunkPos != null) if (chunkPos != null)
{ {
handler.Log.Info(Translations.Get("cmd.chunk.for_debug")); handler.Log.Info(Translations.cmd_chunk_for_debug);
World world = handler.GetWorld(); World world = handler.GetWorld();
(int chunkX, int chunkZ) = chunkPos; (int chunkX, int chunkZ) = chunkPos;
ChunkColumn? chunkColumn = world[chunkX, chunkZ]; ChunkColumn? chunkColumn = world[chunkX, chunkZ];
@ -207,7 +207,7 @@ namespace MinecraftClient.Commands
Tuple<int, int>? chunkPos = ParseChunkPos(args); Tuple<int, int>? chunkPos = ParseChunkPos(args);
if (chunkPos != null) if (chunkPos != null)
{ {
handler.Log.Info(Translations.Get("cmd.chunk.for_debug")); handler.Log.Info(Translations.cmd_chunk_for_debug);
World world = handler.GetWorld(); World world = handler.GetWorld();
(int chunkX, int chunkZ) = chunkPos; (int chunkX, int chunkZ) = chunkPos;
world[chunkX, chunkZ] = null; world[chunkX, chunkZ] = null;

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "connect"; } } public override string CmdName { get { return "connect"; } }
public override string CmdUsage { get { return "connect <server> [account]"; } } public override string CmdUsage { get { return "connect <server> [account]"; } }
public override string CmdDesc { get { return "cmd.connect.desc"; } } public override string CmdDesc { get { return Translations.cmd_connect_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)
{ {
@ -17,7 +17,7 @@ namespace MinecraftClient.Commands
{ {
if (!Settings.Config.Main.Advanced.SetAccount(args[1])) if (!Settings.Config.Main.Advanced.SetAccount(args[1]))
{ {
return Translations.Get("cmd.connect.unknown", args[1]); return string.Format(Translations.cmd_connect_unknown, args[1]);
} }
} }
@ -26,7 +26,7 @@ namespace MinecraftClient.Commands
Program.Restart(); Program.Restart();
return ""; return "";
} }
else return Translations.Get("cmd.connect.invalid_ip", args[0]); else return string.Format(Translations.cmd_connect_invalid_ip, args[0]);
} }
else return GetCmdDescTranslated(); else return GetCmdDescTranslated();
} }

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "debug"; } } public override string CmdName { get { return "debug"; } }
public override string CmdUsage { get { return "debug [on|off]"; } } public override string CmdUsage { get { return "debug [on|off]"; } }
public override string CmdDesc { get { return "cmd.debug.desc"; } } public override string CmdDesc { get { return Translations.cmd_debug_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)
{ {
@ -14,7 +14,10 @@ namespace MinecraftClient.Commands
Settings.Config.Logging.DebugMessages = (GetArg(command).ToLower() == "on"); Settings.Config.Logging.DebugMessages = (GetArg(command).ToLower() == "on");
else else
Settings.Config.Logging.DebugMessages = !Settings.Config.Logging.DebugMessages; Settings.Config.Logging.DebugMessages = !Settings.Config.Logging.DebugMessages;
return Translations.Get(Settings.Config.Logging.DebugMessages ? "cmd.debug.state_on" : "cmd.debug.state_off"); if (Settings.Config.Logging.DebugMessages)
return Translations.cmd_debug_state_on;
else
return Translations.cmd_debug_state_off;
} }
} }
} }

View file

@ -8,25 +8,25 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "dig"; } } public override string CmdName { get { return "dig"; } }
public override string CmdUsage { get { return "dig <x> <y> <z>"; } } public override string CmdUsage { get { return "dig <x> <y> <z>"; } }
public override string CmdDesc { get { return "cmd.dig.desc"; } } public override string CmdDesc { get { return Translations.cmd_dig_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)
{ {
if (!handler.GetTerrainEnabled()) if (!handler.GetTerrainEnabled())
return Translations.Get("extra.terrainandmovement_required"); return Translations.extra_terrainandmovement_required;
string[] args = GetArgs(command); string[] args = GetArgs(command);
if (args.Length == 0) if (args.Length == 0)
{ {
(bool hasBlock, Location blockLoc, Block block) = RaycastHelper.RaycastBlock(handler, 4.5, false); (bool hasBlock, Location blockLoc, Block block) = RaycastHelper.RaycastBlock(handler, 4.5, false);
if (!hasBlock) if (!hasBlock)
return Translations.Get("cmd.dig.too_far"); return Translations.cmd_dig_too_far;
else if (block.Type == Material.Air) else if (block.Type == Material.Air)
return Translations.Get("cmd.dig.no_block"); return Translations.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.GetTypeString()); return string.Format(Translations.cmd_dig_dig, blockLoc.X, blockLoc.Y, blockLoc.Z, block.GetTypeString());
else else
return Translations.Get("cmd.dig.fail"); return Translations.cmd_dig_fail;
} }
else if (args.Length == 3) else if (args.Length == 3)
{ {
@ -35,17 +35,17 @@ namespace MinecraftClient.Commands
Location current = handler.GetCurrentLocation(); Location current = handler.GetCurrentLocation();
Location blockToBreak = Location.Parse(current.ToFloor(), args[0], args[1], args[2]); Location blockToBreak = Location.Parse(current.ToFloor(), args[0], args[1], args[2]);
if (blockToBreak.DistanceSquared(current.EyesLocation()) > 25) if (blockToBreak.DistanceSquared(current.EyesLocation()) > 25)
return Translations.Get("cmd.dig.too_far"); return Translations.cmd_dig_too_far;
Block block = handler.GetWorld().GetBlock(blockToBreak); Block block = handler.GetWorld().GetBlock(blockToBreak);
if (block.Type == Material.Air) if (block.Type == Material.Air)
return Translations.Get("cmd.dig.no_block"); return Translations.cmd_dig_no_block;
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.GetTypeString()); return string.Format(Translations.cmd_dig_dig, blockToBreak.X, blockToBreak.Y, blockToBreak.Z, block.GetTypeString());
} }
else else
return Translations.Get("cmd.dig.fail"); return Translations.cmd_dig_fail;
} }
catch (FormatException) { return GetCmdDescTranslated(); } catch (FormatException) { return GetCmdDescTranslated(); }
} }

View file

@ -8,16 +8,14 @@ namespace MinecraftClient.Commands
class DropItem : Command class DropItem : Command
{ {
public override string CmdName { get { return "dropitem"; } } public override string CmdName { get { return "dropitem"; } }
public override string CmdDesc { get { return "cmd.dropItem.desc"; } }
public override string CmdUsage { get { return "/dropitem <itemtype>"; } } public override string CmdUsage { get { return "/dropitem <itemtype>"; } }
public override string CmdDesc { get { return Translations.cmd_dropItem_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)
{ {
if (!handler.GetInventoryEnabled()) if (!handler.GetInventoryEnabled())
{ {
return Translations.Get("extra.inventory_required"); return Translations.extra_inventory_required;
} }
if (HasArg(command)) if (HasArg(command))
{ {
@ -38,11 +36,11 @@ namespace MinecraftClient.Commands
{ {
handler.DoWindowAction(inventoryId, slot, WindowActionType.DropItemStack); handler.DoWindowAction(inventoryId, slot, WindowActionType.DropItemStack);
} }
return Translations.Get("cmd.dropItem.dropped", itemType.ToString(), inventoryId); return string.Format(Translations.cmd_dropItem_dropped, itemType.ToString(), inventoryId);
} }
else else
{ {
return Translations.Get("cmd.dropItem.unknown_item", arg); return string.Format(Translations.cmd_dropItem_unknown_item, arg);
} }
} }
else else

View file

@ -8,12 +8,12 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "enchant"; } } public override string CmdName { get { return "enchant"; } }
public override string CmdUsage { get { return "enchant <top|middle|bottom>"; } } public override string CmdUsage { get { return "enchant <top|middle|bottom>"; } }
public override string CmdDesc { get { return "cmd.enchant.desc"; } } public override string CmdDesc { get { return Translations.cmd_enchant_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)
{ {
if (!handler.GetInventoryEnabled()) if (!handler.GetInventoryEnabled())
return Translations.TryGet("error.inventoryhandling_not_enabled"); return Translations.error_inventoryhandling_not_enabled;
if (HasArg(command)) if (HasArg(command))
{ {
@ -28,7 +28,7 @@ namespace MinecraftClient.Commands
}; };
if (slotId == -1) if (slotId == -1)
return Translations.TryGet("cmd.enchant.invalid_slot"); return Translations.cmd_enchant_invalid_slot;
Container? enchantingTable = null; Container? enchantingTable = null;
@ -42,28 +42,28 @@ namespace MinecraftClient.Commands
} }
if (enchantingTable == null) if (enchantingTable == null)
return Translations.TryGet("cmd.enchant.enchanting_table_not_opened"); return Translations.cmd_enchant_enchanting_table_not_opened;
int[] emptySlots = enchantingTable.GetEmpytSlots(); int[] emptySlots = enchantingTable.GetEmpytSlots();
if (emptySlots.Contains(0)) if (emptySlots.Contains(0))
return Translations.TryGet("cmd.enchant.enchanting_no_item"); return Translations.cmd_enchant_enchanting_no_item;
if (emptySlots.Contains(1)) if (emptySlots.Contains(1))
return Translations.TryGet("cmd.enchant.enchanting_no_lapis"); return Translations.cmd_enchant_enchanting_no_lapis;
Item lapisSlot = enchantingTable.Items[1]; Item lapisSlot = enchantingTable.Items[1];
if (lapisSlot.Type != ItemType.LapisLazuli) if (lapisSlot.Type != ItemType.LapisLazuli)
return Translations.TryGet("cmd.enchant.enchanting_no_lapis"); return Translations.cmd_enchant_enchanting_no_lapis;
if (lapisSlot.Count < 3) if (lapisSlot.Count < 3)
return Translations.TryGet("cmd.enchant.enchanting_no_lapis"); return Translations.cmd_enchant_enchanting_no_lapis;
EnchantmentData? enchantment = handler.GetLastEnchantments(); EnchantmentData? enchantment = handler.GetLastEnchantments();
if (enchantment == null) if (enchantment == null)
return Translations.TryGet("cmd.enchant.no_enchantments"); return Translations.cmd_enchant_no_enchantments;
short requiredLevel = slotId switch short requiredLevel = slotId switch
{ {
@ -74,9 +74,9 @@ namespace MinecraftClient.Commands
}; };
if (handler.GetLevel() < requiredLevel) if (handler.GetLevel() < requiredLevel)
return Translations.TryGet("cmd.enchant.no_levels", handler.GetLevel(), requiredLevel); return string.Format(Translations.cmd_enchant_no_levels, handler.GetLevel(), requiredLevel);
return handler.ClickContainerButton(enchantingTable.ID, slotId) ? Translations.TryGet("cmd.enchant.clicked") : Translations.TryGet("cmd.enchant.not_clicked"); return handler.ClickContainerButton(enchantingTable.ID, slotId) ? Translations.cmd_enchant_clicked : Translations.cmd_enchant_not_clicked;
} }
return GetCmdDescTranslated(); return GetCmdDescTranslated();

View file

@ -11,7 +11,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "entity"; } } public override string CmdName { get { return "entity"; } }
public override string CmdUsage { get { return "entity <id|entitytype> <attack|use>"; } } public override string CmdUsage { get { return "entity <id|entitytype> <attack|use>"; } }
public override string CmdDesc { get { return ""; } } public override string CmdDesc { get { return string.Empty; } }
public override string Run(McClient handler, string command, Dictionary<string, object>? localVars) public override string Run(McClient handler, string command, Dictionary<string, object>? localVars)
{ {
@ -34,10 +34,10 @@ namespace MinecraftClient.Commands
{ {
case "attack": case "attack":
handler.InteractEntity(entityID, InteractType.Attack); handler.InteractEntity(entityID, InteractType.Attack);
return Translations.Get("cmd.entityCmd.attacked"); return Translations.cmd_entityCmd_attacked;
case "use": case "use":
handler.InteractEntity(entityID, InteractType.Interact); handler.InteractEntity(entityID, InteractType.Interact);
return Translations.Get("cmd.entityCmd.used"); return Translations.cmd_entityCmd_used;
default: default:
Entity entity = handler.GetEntities()[entityID]; Entity entity = handler.GetEntities()[entityID];
int id = entity.ID; int id = entity.ID;
@ -56,53 +56,53 @@ namespace MinecraftClient.Commands
else if (health < 15) else if (health < 15)
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 = $"X:{Math.Round(entity.Location.X, 2)}, Y:{Math.Round(entity.Location.Y, 2)}, Z:{Math.Round(entity.Location.Z, 2)}";
StringBuilder done = new(); StringBuilder done = new();
done.Append(Translations.Replace("([cmd.entityCmd.entity]): {0}\n [MCC] Type: {1}", id, entity.GetTypeString())); done.Append($"{Translations.cmd_entityCmd_entity}: {id}\n [MCC] Type: {entity.GetTypeString()}");
if (!String.IsNullOrEmpty(nickname)) if (!string.IsNullOrEmpty(nickname))
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.nickname]): {0}", nickname)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_nickname}: {nickname}");
else if (!String.IsNullOrEmpty(customname)) else if (!string.IsNullOrEmpty(customname))
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.customname]): {0}§8", customname.Replace("&", "§"))); done.Append($"\n [MCC] {Translations.cmd_entityCmd_customname}: {customname.Replace("&", "§")}§8");
if (type == EntityType.Player) if (type == EntityType.Player)
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.latency]): {0}", latency)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_latency}: {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.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.item]): {0} x{1}", item.GetTypeString(), item.Count)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_item}: {item.GetTypeString()} x{item.Count}");
else else
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.item]): {0} x{1} - {2}§8", item.GetTypeString(), item.Count, displayName)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_item}: {item.GetTypeString()} x{item.Count} - {displayName}§8");
} }
if (entity.Equipment.Count >= 1 && entity.Equipment != null) if (entity.Equipment.Count >= 1 && entity.Equipment != null)
{ {
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.equipment]):")); done.Append($"\n [MCC] {Translations.cmd_entityCmd_equipment}:");
if (entity.Equipment.ContainsKey(0) && entity.Equipment[0] != null) if (entity.Equipment.ContainsKey(0) && entity.Equipment[0] != null)
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.mainhand]): {0} x{1}", entity.Equipment[0].GetTypeString(), entity.Equipment[0].Count)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_mainhand}: {entity.Equipment[0].GetTypeString()} x{entity.Equipment[0].Count}");
if (entity.Equipment.ContainsKey(1) && entity.Equipment[1] != null) if (entity.Equipment.ContainsKey(1) && entity.Equipment[1] != null)
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.offhand]): {0} x{1}", entity.Equipment[1].GetTypeString(), entity.Equipment[1].Count)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_offhand}: {entity.Equipment[1].GetTypeString()} x{entity.Equipment[1].Count}");
if (entity.Equipment.ContainsKey(5) && entity.Equipment[5] != null) if (entity.Equipment.ContainsKey(5) && entity.Equipment[5] != null)
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.helmet]): {0} x{1}", entity.Equipment[5].GetTypeString(), entity.Equipment[5].Count)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_helmet}: {entity.Equipment[5].GetTypeString()} x{entity.Equipment[5].Count}");
if (entity.Equipment.ContainsKey(4) && entity.Equipment[4] != null) if (entity.Equipment.ContainsKey(4) && entity.Equipment[4] != null)
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.chestplate]): {0} x{1}", entity.Equipment[4].GetTypeString(), entity.Equipment[4].Count)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_chestplate}: {entity.Equipment[4].GetTypeString()} x{entity.Equipment[4].Count}");
if (entity.Equipment.ContainsKey(3) && entity.Equipment[3] != null) if (entity.Equipment.ContainsKey(3) && entity.Equipment[3] != null)
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.leggings]): {0} x{1}", entity.Equipment[3].GetTypeString(), entity.Equipment[3].Count)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_leggings}: {entity.Equipment[3].GetTypeString()} x{entity.Equipment[3].Count}");
if (entity.Equipment.ContainsKey(2) && entity.Equipment[2] != null) if (entity.Equipment.ContainsKey(2) && entity.Equipment[2] != null)
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.boots]): {0} x{1}", entity.Equipment[2].GetTypeString(), entity.Equipment[2].Count)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_boots}: {entity.Equipment[2].GetTypeString()} x{entity.Equipment[2].Count}");
} }
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.pose]): {0}", pose)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_pose}: {pose}");
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.health]): {0}", color + health + "§8")); done.Append($"\n [MCC] {Translations.cmd_entityCmd_health}: {color}{health}§8");
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.distance]): {0}", distance)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_distance}: {distance}");
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.location]): {0}", location)); done.Append($"\n [MCC] {Translations.cmd_entityCmd_location}: {location}");
return done.ToString(); return done.ToString();
} }
} }
else return Translations.Get("cmd.entityCmd.not_found"); else return Translations.cmd_entityCmd_not_found;
} }
else else
{ {
EntityType interacttype = Enum.Parse<EntityType>(args[0]); EntityType interacttype = Enum.Parse<EntityType>(args[0]);
string actionst = "cmd.entityCmd.attacked"; string actionst = Translations.cmd_entityCmd_attacked;
int actioncount = 0; int actioncount = 0;
foreach (var entity2 in handler.GetEntities()) foreach (var entity2 in handler.GetEntities())
{ {
@ -114,19 +114,19 @@ namespace MinecraftClient.Commands
if (action == "attack") if (action == "attack")
{ {
handler.InteractEntity(entity2.Key, InteractType.Attack); handler.InteractEntity(entity2.Key, InteractType.Attack);
actionst = "cmd.entityCmd.attacked"; actionst = Translations.cmd_entityCmd_attacked;
actioncount++; actioncount++;
} }
else if (action == "use") else if (action == "use")
{ {
handler.InteractEntity(entity2.Key, InteractType.Interact); handler.InteractEntity(entity2.Key, InteractType.Interact);
actionst = "cmd.entityCmd.used"; actionst = Translations.cmd_entityCmd_used;
actioncount++; actioncount++;
} }
else return GetCmdDescTranslated(); else return GetCmdDescTranslated();
} }
} }
return actioncount + " " + Translations.Get(actionst); return actioncount + " " + actionst;
} }
} }
catch (FormatException) { return GetCmdDescTranslated(); } catch (FormatException) { return GetCmdDescTranslated(); }
@ -135,7 +135,7 @@ namespace MinecraftClient.Commands
{ {
Dictionary<int, Entity> entities = handler.GetEntities(); Dictionary<int, Entity> entities = handler.GetEntities();
StringBuilder response = new(); StringBuilder response = new();
response.AppendLine(Translations.Get("cmd.entityCmd.entities")); response.AppendLine(Translations.cmd_entityCmd_entities);
foreach (var entity2 in entities) foreach (var entity2 in entities)
{ {
int id = entity2.Key; int id = entity2.Key;
@ -146,22 +146,22 @@ namespace MinecraftClient.Commands
EntityPose pose = entity2.Value.Pose; EntityPose pose = entity2.Value.Pose;
EntityType type = entity2.Value.Type; EntityType type = entity2.Value.Type;
Item item = entity2.Value.Item; Item item = entity2.Value.Item;
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 = $"X:{Math.Round(entity2.Value.Location.X, 2)}, Y:{Math.Round(entity2.Value.Location.Y, 2)}, Z:{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.AppendLine(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.item]): {2}, ([cmd.entityCmd.location]): {3}", id, entity2.Value.GetTypeString(), item.GetTypeString(), location)); response.AppendLine($" #{id}: {Translations.cmd_entityCmd_type}: {entity2.Value.GetTypeString()}, {Translations.cmd_entityCmd_item}: {item.GetTypeString()}, {Translations.cmd_entityCmd_location}: {location}");
else if (type == EntityType.Player && !String.IsNullOrEmpty(nickname)) else if (type == EntityType.Player && !string.IsNullOrEmpty(nickname))
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)); response.AppendLine($" #{id}: {Translations.cmd_entityCmd_type}: {entity2.Value.GetTypeString()}, {Translations.cmd_entityCmd_nickname}: §8{nickname}§8, {Translations.cmd_entityCmd_latency}: {latency}, {Translations.cmd_entityCmd_health}: {health}, {Translations.cmd_entityCmd_pose}: {pose}, {Translations.cmd_entityCmd_location}: {location}");
else if (type == EntityType.Player && !String.IsNullOrEmpty(customname)) else if (type == EntityType.Player && !string.IsNullOrEmpty(customname))
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)); response.AppendLine($" #{id}: {Translations.cmd_entityCmd_type}: {entity2.Value.GetTypeString()}, {Translations.cmd_entityCmd_customname}: §8{customname.Replace("&", "§")}§8, {Translations.cmd_entityCmd_latency}: {latency}, {Translations.cmd_entityCmd_health}: {health}, {Translations.cmd_entityCmd_pose}: {pose}, {Translations.cmd_entityCmd_location}: {location}");
else else
response.AppendLine(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.health]): {2}, ([cmd.entityCmd.location]): {3}", id, entity2.Value.GetTypeString(), health, location)); response.AppendLine($" #{id}: {Translations.cmd_entityCmd_type}: {entity2.Value.GetTypeString()}, {Translations.cmd_entityCmd_health}: {health}, {Translations.cmd_entityCmd_location}: {location}");
} }
response.Append(GetCmdDescTranslated()); response.Append(GetCmdDescTranslated());
return response.ToString(); return response.ToString();
} }
} }
else return Translations.Get("extra.entity_required"); else return Translations.extra_entity_required;
} }
} }
} }

View file

@ -9,7 +9,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "execif"; } } public override string CmdName { get { return "execif"; } }
public override string CmdUsage { get { return "execif <condition/expression> ---> <command>"; } } public override string CmdUsage { get { return "execif <condition/expression> ---> <command>"; } }
public override string CmdDesc { get { return "cmd.execif.desc"; } } public override string CmdDesc { get { return Translations.cmd_execif_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)
{ {
@ -69,8 +69,9 @@ namespace MinecraftClient.Commands
handler.PerformInternalCommand(resultCommand, ref output); handler.PerformInternalCommand(resultCommand, ref output);
if (string.IsNullOrEmpty(output)) if (string.IsNullOrEmpty(output))
handler.Log.Debug(Translations.TryGet("cmd.execif.executed_no_output", expressionText, resultCommand)); handler.Log.Debug(string.Format(Translations.cmd_execif_executed_no_output, expressionText, resultCommand));
else handler.Log.Debug(Translations.TryGet("cmd.execif.executed", expressionText, resultCommand, output)); else
handler.Log.Debug(string.Format(Translations.cmd_execif_executed, expressionText, resultCommand, output));
return ""; return "";
} }
@ -79,8 +80,8 @@ namespace MinecraftClient.Commands
} }
catch (Exception e) catch (Exception e)
{ {
handler.Log.Error(Translations.TryGet("cmd.execif.error_occured", command)); handler.Log.Error(string.Format(Translations.cmd_execif_error_occured, command));
handler.Log.Error(Translations.TryGet("cmd.execif.error", e.Message)); handler.Log.Error(string.Format(Translations.cmd_execif_error, e.Message));
return ""; return "";
} }
} }

View file

@ -8,7 +8,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "execmulti"; } } public override string CmdName { get { return "execmulti"; } }
public override string CmdUsage { get { return "execmulti <command 1> -> <command2> -> <command 3> -> ..."; } } public override string CmdUsage { get { return "execmulti <command 1> -> <command2> -> <command 3> -> ..."; } }
public override string CmdDesc { get { return "cmd.execmulti.desc"; } } public override string CmdDesc { get { return Translations.cmd_execmulti_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)
{ {
@ -17,7 +17,7 @@ namespace MinecraftClient.Commands
string commandsString = GetArg(command); string commandsString = GetArg(command);
if (commandsString.Contains("execmulti", StringComparison.OrdinalIgnoreCase) || commandsString.Contains("execif", StringComparison.OrdinalIgnoreCase)) if (commandsString.Contains("execmulti", StringComparison.OrdinalIgnoreCase) || commandsString.Contains("execif", StringComparison.OrdinalIgnoreCase))
return Translations.TryGet("cmd.execmulti.prevent"); return Translations.cmd_execmulti_prevent;
IEnumerable<string> commands = commandsString.Split("->", StringSplitOptions.TrimEntries) IEnumerable<string> commands = commandsString.Split("->", StringSplitOptions.TrimEntries)
.ToList() .ToList()
@ -28,9 +28,9 @@ namespace MinecraftClient.Commands
string? output = ""; string? output = "";
handler.PerformInternalCommand(cmd, ref output); handler.PerformInternalCommand(cmd, ref output);
string log = Translations.TryGet( string log = string.Format(
"cmd.execmulti.executed", cmd, Translations.cmd_execmulti_executed, cmd,
string.IsNullOrEmpty(output) ? Translations.TryGet("cmd.execmulti.no_result") : Translations.TryGet("cmd.execmulti.result", output)); string.IsNullOrEmpty(output) ? Translations.cmd_execmulti_no_result : string.Format(Translations.cmd_execmulti_result, output));
if (output != null && output.Contains("unknown command", StringComparison.OrdinalIgnoreCase)) if (output != null && output.Contains("unknown command", StringComparison.OrdinalIgnoreCase))
handler.Log.Error(log); handler.Log.Error(log);

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "exit"; } } public override string CmdName { get { return "exit"; } }
public override string CmdUsage { get { return "exit"; } } public override string CmdUsage { get { return "exit"; } }
public override string CmdDesc { get { return "cmd.exit.desc"; } } public override string CmdDesc { get { return Translations.cmd_exit_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)
{ {

View file

@ -6,11 +6,11 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "health"; } } public override string CmdName { get { return "health"; } }
public override string CmdUsage { get { return "health"; } } public override string CmdUsage { get { return "health"; } }
public override string CmdDesc { get { return "cmd.health.desc"; } } public override string CmdDesc { get { return Translations.cmd_health_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)
{ {
return Translations.Get("cmd.health.response", handler.GetHealth(), handler.GetSaturation(), handler.GetLevel(), handler.GetTotalExperience()); return string.Format(Translations.cmd_health_response, handler.GetHealth(), handler.GetSaturation(), handler.GetLevel(), handler.GetTotalExperience());
} }
} }
} }

View file

@ -11,7 +11,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "inventory"; } } public override string CmdName { get { return "inventory"; } }
public override string CmdUsage { get { return GetBasicUsage(); } } public override string CmdUsage { get { return GetBasicUsage(); } }
public override string CmdDesc { get { return "cmd.inventory.desc"; } } public override string CmdDesc { get { return Translations.cmd_inventory_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)
{ {
@ -36,12 +36,12 @@ namespace MinecraftClient.Commands
return GetCmdDescTranslated(); return GetCmdDescTranslated();
if (handler.DoCreativeGive(slot, itemType, count, null)) if (handler.DoCreativeGive(slot, itemType, count, null))
return Translations.Get("cmd.inventory.creative_done", itemType, count, slot); return string.Format(Translations.cmd_inventory_creative_done, itemType, count, slot);
else else
return Translations.Get("cmd.inventory.creative_fail"); return Translations.cmd_inventory_creative_fail;
} }
else else
return Translations.Get("cmd.inventory.need_creative"); return Translations.cmd_inventory_need_creative;
} }
else else
return GetCmdDescTranslated(); return GetCmdDescTranslated();
@ -59,12 +59,12 @@ namespace MinecraftClient.Commands
if (handler.GetGamemode() == 1) if (handler.GetGamemode() == 1)
{ {
if (handler.DoCreativeGive(slot, ItemType.Null, 0, null)) if (handler.DoCreativeGive(slot, ItemType.Null, 0, null))
return Translations.Get("cmd.inventory.creative_delete", slot); return string.Format(Translations.cmd_inventory_creative_delete, slot);
else else
return Translations.Get("cmd.inventory.creative_fail"); return Translations.cmd_inventory_creative_fail;
} }
else else
return Translations.Get("cmd.inventory.need_creative"); return Translations.cmd_inventory_need_creative;
} }
else else
return GetCmdDescTranslated(); return GetCmdDescTranslated();
@ -81,14 +81,14 @@ namespace MinecraftClient.Commands
if (availableIds.Count > 0) if (availableIds.Count > 0)
inventoryId = availableIds.Max(); // use foreground container inventoryId = availableIds.Max(); // use foreground container
else else
return Translations.Get("cmd.inventory.container_not_found"); return Translations.cmd_inventory_container_not_found;
} }
else if (args[0].ToLower().StartsWith("inventories") || args[0].ToLower().StartsWith("i")) else if (args[0].ToLower().StartsWith("inventories") || args[0].ToLower().StartsWith("i"))
{ {
Dictionary<int, Container> inventories = handler.GetInventories(); Dictionary<int, Container> inventories = handler.GetInventories();
List<int> availableIds = inventories.Keys.ToList(); List<int> availableIds = inventories.Keys.ToList();
StringBuilder response = new(); StringBuilder response = new();
response.AppendLine(Translations.Get("cmd.inventory.inventories_available")); response.AppendLine(Translations.cmd_inventory_inventories_available);
foreach (int id in availableIds) foreach (int id in availableIds)
response.AppendLine(String.Format(" #{0} - {1}§8", id, inventories[id].Title)); response.AppendLine(String.Format(" #{0} - {1}§8", id, inventories[id].Title));
@ -135,11 +135,11 @@ namespace MinecraftClient.Commands
}); });
if (foundItems.Count == 0) if (foundItems.Count == 0)
return Translations.Get("cmd.inventory.no_found_items"); return Translations.cmd_inventory_no_found_items;
StringBuilder response = new(); StringBuilder response = new();
response.AppendLine(Translations.Get("cmd.inventory.found_items") + ":"); response.AppendLine(Translations.cmd_inventory_found_items + ":");
foreach ((int invId, List<Item> itemsList) in new SortedDictionary<int, List<Item>>(foundItems)) foreach ((int invId, List<Item> itemsList) in new SortedDictionary<int, List<Item>>(foundItems))
{ {
@ -168,20 +168,20 @@ namespace MinecraftClient.Commands
Container? inventory = handler.GetInventory(inventoryId); Container? inventory = handler.GetInventory(inventoryId);
if (inventory == null) if (inventory == null)
return Translations.Get("cmd.inventory.not_exist", inventoryId); return string.Format(Translations.cmd_inventory_not_exist, inventoryId);
string action = args.Length > 1 ? args[1].ToLower() : "list"; string action = args.Length > 1 ? args[1].ToLower() : "list";
if (action == "close") if (action == "close")
{ {
if (handler.CloseInventory(inventoryId)) if (handler.CloseInventory(inventoryId))
return Translations.Get("cmd.inventory.close", inventoryId); return string.Format(Translations.cmd_inventory_close, inventoryId);
else else
return Translations.Get("cmd.inventory.close_fail", inventoryId); return string.Format(Translations.cmd_inventory_close_fail, inventoryId);
} }
else if (action == "list") else if (action == "list")
{ {
StringBuilder response = new(); StringBuilder response = new();
response.Append(Translations.Get("cmd.inventory.inventory")); response.Append(Translations.cmd_inventory_inventory);
response.AppendLine(String.Format(" #{0} - {1}§8", inventoryId, inventory.Title)); response.AppendLine(String.Format(" #{0} - {1}§8", inventoryId, inventory.Title));
string? asciiArt = inventory.Type.GetAsciiArt(); string? asciiArt = inventory.Type.GetAsciiArt();
@ -199,7 +199,7 @@ namespace MinecraftClient.Commands
} }
if (inventoryId == 0) if (inventoryId == 0)
response.AppendLine(Translations.Get("cmd.inventory.hotbar", (handler.GetCurrentSlot() + 1))); response.AppendLine(string.Format(Translations.cmd_inventory_hotbar, (handler.GetCurrentSlot() + 1)));
response.Remove(response.Length - 1, 1); // Remove last '\n' response.Remove(response.Length - 1, 1); // Remove last '\n'
return response.ToString(); return response.ToString();
@ -210,18 +210,18 @@ namespace MinecraftClient.Commands
return GetCmdDescTranslated(); return GetCmdDescTranslated();
WindowActionType actionType = WindowActionType.LeftClick; WindowActionType actionType = WindowActionType.LeftClick;
string keyName = "cmd.inventory.left"; string keyName = Translations.cmd_inventory_left;
if (args.Length >= 4) if (args.Length >= 4)
{ {
string b = args[3]; string b = args[3];
if (b.ToLower()[0] == 'r') if (b.ToLower()[0] == 'r')
(actionType, keyName) = (WindowActionType.RightClick, "cmd.inventory.right"); (actionType, keyName) = (WindowActionType.RightClick, Translations.cmd_inventory_right);
else if (b.ToLower()[0] == 'm') else if (b.ToLower()[0] == 'm')
(actionType, keyName) = (WindowActionType.MiddleClick, "cmd.inventory.middle"); (actionType, keyName) = (WindowActionType.MiddleClick, Translations.cmd_inventory_middle);
} }
handler.DoWindowAction(inventoryId, slot, actionType); handler.DoWindowAction(inventoryId, slot, actionType);
return Translations.Get("cmd.inventory.clicking", Translations.Get(keyName), slot, inventoryId); return string.Format(Translations.cmd_inventory_clicking, keyName, slot, inventoryId);
} }
else if (action == "shiftclick" && args.Length >= 3) else if (action == "shiftclick" && args.Length >= 3)
{ {
@ -229,9 +229,9 @@ namespace MinecraftClient.Commands
return GetCmdDescTranslated(); return GetCmdDescTranslated();
if (!handler.DoWindowAction(inventoryId, slot, WindowActionType.ShiftClick)) if (!handler.DoWindowAction(inventoryId, slot, WindowActionType.ShiftClick))
return Translations.Get("cmd.inventory.shiftclick_fail"); return Translations.cmd_inventory_shiftclick_fail;
return Translations.Get("cmd.inventory.shiftclick", slot, inventoryId); return string.Format(Translations.cmd_inventory_shiftclick, slot, inventoryId);
} }
else if (action == "drop" && args.Length >= 3) else if (action == "drop" && args.Length >= 3)
{ {
@ -240,7 +240,7 @@ namespace MinecraftClient.Commands
// check item exist // check item exist
if (!inventory.Items.ContainsKey(slot)) if (!inventory.Items.ContainsKey(slot))
return Translations.Get("cmd.inventory.no_item", slot); return string.Format(Translations.cmd_inventory_no_item, slot);
WindowActionType actionType = WindowActionType.DropItem; WindowActionType actionType = WindowActionType.DropItem;
if (args.Length >= 4 && args[3].ToLower() == "all") if (args.Length >= 4 && args[3].ToLower() == "all")
@ -249,9 +249,9 @@ namespace MinecraftClient.Commands
if (handler.DoWindowAction(inventoryId, slot, actionType)) if (handler.DoWindowAction(inventoryId, slot, actionType))
{ {
if (actionType == WindowActionType.DropItemStack) if (actionType == WindowActionType.DropItemStack)
return Translations.Get("cmd.inventory.drop_stack", slot); return string.Format(Translations.cmd_inventory_drop_stack, slot);
else else
return Translations.Get("cmd.inventory.drop", slot); return string.Format(Translations.cmd_inventory_drop, slot);
} }
else else
return "Failed"; return "Failed";
@ -262,7 +262,7 @@ namespace MinecraftClient.Commands
else else
{ {
StringBuilder response = new(); StringBuilder response = new();
response.Append(Translations.Get("cmd.inventory.inventories")).Append(":\n"); response.Append(Translations.cmd_inventory_inventories).Append(":\n");
foreach ((int invId, Container inv) in handler.GetInventories()) foreach ((int invId, Container inv) in handler.GetInventories())
response.AppendLine(String.Format(" #{0}: {1}§8", invId, inv.Title)); response.AppendLine(String.Format(" #{0}: {1}§8", invId, inv.Title));
response.Append(CmdUsage); response.Append(CmdUsage);
@ -270,42 +270,44 @@ namespace MinecraftClient.Commands
} }
} }
else else
return Translations.Get("extra.inventory_required"); return Translations.extra_inventory_required;
} }
#region Methods for commands help #region Methods for commands help
private static string GetAvailableActions() private static string GetAvailableActions()
{ {
return Translations.Get("cmd.inventory.help.available") + ": list, close, click, drop, creativegive, creativedelete."; return Translations.cmd_inventory_help_available + ": list, close, click, drop, creativegive, creativedelete.";
} }
private static string GetBasicUsage() private static string GetBasicUsage()
{ {
return Translations.Get("cmd.inventory.help.basic") + ": /inventory <player|container|<id>> <action>."; return Translations.cmd_inventory_help_basic + ": /inventory <player|container|<id>> <action>.";
} }
private static string GetHelp() private static string GetHelp()
{ {
return Translations.Get("cmd.inventory.help.help", GetAvailableActions()); return string.Format(Translations.cmd_inventory_help_help, GetAvailableActions());
} }
private static string GetSubCommandHelp(string cmd) private static string GetSubCommandHelp(string cmd)
{ {
string usageStr = ' ' + Translations.Get("cmd.inventory.help.usage") + ": "; string usageStr = ' ' + Translations.cmd_inventory_help_usage + ": ";
return cmd switch return cmd switch
{ {
"list" => Translations.Get("cmd.inventory.help.list") + usageStr + "/inventory <player|container|<id>> list", #pragma warning disable format // @formatter:off
"close" => Translations.Get("cmd.inventory.help.close") + usageStr + "/inventory <player|container|<id>> close", "list" => Translations.cmd_inventory_help_list + usageStr + "/inventory <player|container|<id>> list",
"click" => Translations.Get("cmd.inventory.help.click") + usageStr + "/inventory <player|container|<id>> click <slot> [left|right|middle]\nDefault is left click", "close" => Translations.cmd_inventory_help_close + usageStr + "/inventory <player|container|<id>> close",
"shiftclick" => Translations.Get("cmd.inventory.help.shiftclick") + usageStr + "/inventory <player|container|<id>> shiftclick <slot>", "click" => Translations.cmd_inventory_help_click + usageStr + "/inventory <player|container|<id>> click <slot> [left|right|middle]\nDefault is left click",
"drop" => Translations.Get("cmd.inventory.help.drop") + usageStr + "/inventory <player|container|<id>> drop <slot> [all]\nAll means drop full stack", "shiftclick" => Translations.cmd_inventory_help_shiftclick + usageStr + "/inventory <player|container|<id>> shiftclick <slot>",
"creativegive" => Translations.Get("cmd.inventory.help.creativegive") + usageStr + "/inventory creativegive <slot> <itemtype> <amount>", "drop" => Translations.cmd_inventory_help_drop + usageStr + "/inventory <player|container|<id>> drop <slot> [all]\nAll means drop full stack",
"creativedelete" => Translations.Get("cmd.inventory.help.creativedelete") + usageStr + "/inventory creativedelete <slot>", "creativegive" => Translations.cmd_inventory_help_creativegive + usageStr + "/inventory creativegive <slot> <itemtype> <amount>",
"inventories" => Translations.Get("cmd.inventory.help.inventories") + usageStr + "/inventory inventories", "creativedelete" => Translations.cmd_inventory_help_creativedelete + usageStr + "/inventory creativedelete <slot>",
"search" => Translations.Get("cmd.inventory.help.search") + usageStr + "/inventory search <item type> [count]", "inventories" => Translations.cmd_inventory_help_inventories + usageStr + "/inventory inventories",
"help" => GetHelp(), "search" => Translations.cmd_inventory_help_search + usageStr + "/inventory search <item type> [count]",
_ => Translations.Get("cmd.inventory.help.unknown") + GetAvailableActions(), "help" => GetHelp(),
_ => Translations.cmd_inventory_help_unknown + GetAvailableActions(),
#pragma warning restore format // @formatter:on
}; };
} }
#endregion #endregion

View file

@ -7,11 +7,11 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "list"; } } public override string CmdName { get { return "list"; } }
public override string CmdUsage { get { return "list"; } } public override string CmdUsage { get { return "list"; } }
public override string CmdDesc { get { return "cmd.list.desc"; } } public override string CmdDesc { get { return Translations.cmd_list_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)
{ {
return Translations.Get("cmd.list.players", String.Join(", ", handler.GetOnlinePlayers())); return string.Format(Translations.cmd_list_players, String.Join(", ", handler.GetOnlinePlayers()));
} }
} }
} }

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "log"; } } public override string CmdName { get { return "log"; } }
public override string CmdUsage { get { return "log <text>"; } } public override string CmdUsage { get { return "log <text>"; } }
public override string CmdDesc { get { return "cmd.log.desc"; } } public override string CmdDesc { get { return Translations.cmd_log_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)
{ {

View file

@ -9,7 +9,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "look"; } } public override string CmdName { get { return "look"; } }
public override string CmdUsage { get { return "look <x y z|yaw pitch|up|down|east|west|north|south>"; } } public override string CmdUsage { get { return "look <x y z|yaw pitch|up|down|east|west|north|south>"; } }
public override string CmdDesc { get { return "cmd.look.desc"; } } public override string CmdDesc { get { return Translations.cmd_look_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)
{ {
@ -21,11 +21,11 @@ namespace MinecraftClient.Commands
const double maxDistance = 8.0; const double maxDistance = 8.0;
(bool hasBlock, Location target, Block block) = RaycastHelper.RaycastBlock(handler, maxDistance, false); (bool hasBlock, Location target, Block block) = RaycastHelper.RaycastBlock(handler, maxDistance, false);
if (!hasBlock) if (!hasBlock)
return Translations.Get("cmd.look.noinspection", maxDistance); return string.Format(Translations.cmd_look_noinspection, maxDistance);
else else
{ {
Location current = handler.GetCurrentLocation(), target_center = target.ToCenter(); Location current = handler.GetCurrentLocation(), target_center = target.ToCenter();
return Translations.Get("cmd.look.inspection", block.Type, target.X, target.Y, target.Z, return string.Format(Translations.cmd_look_inspection, block.Type, target.X, target.Y, target.Z,
current.Distance(target_center), current.EyesLocation().Distance(target_center)); current.Distance(target_center), current.EyesLocation().Distance(target_center));
} }
} }
@ -41,7 +41,7 @@ namespace MinecraftClient.Commands
case "west": direction = Direction.West; break; case "west": direction = Direction.West; break;
case "north": direction = Direction.North; break; case "north": direction = Direction.North; break;
case "south": direction = Direction.South; break; case "south": direction = Direction.South; break;
default: return Translations.Get("cmd.look.unknown", dirStr); default: return string.Format(Translations.cmd_look_unknown, dirStr);
} }
handler.UpdateLocation(handler.GetCurrentLocation(), direction); handler.UpdateLocation(handler.GetCurrentLocation(), direction);
@ -55,7 +55,7 @@ namespace MinecraftClient.Commands
float pitch = float.Parse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture); float pitch = float.Parse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture);
handler.UpdateLocation(handler.GetCurrentLocation(), yaw, pitch); handler.UpdateLocation(handler.GetCurrentLocation(), yaw, pitch);
return Translations.Get("cmd.look.at", yaw.ToString("0.00"), pitch.ToString("0.00")); return string.Format(Translations.cmd_look_at, yaw.ToString("0.00"), pitch.ToString("0.00"));
} }
catch (FormatException) { return GetCmdDescTranslated(); } catch (FormatException) { return GetCmdDescTranslated(); }
} }
@ -67,14 +67,14 @@ namespace MinecraftClient.Commands
Location block = Location.Parse(current, args[0], args[1], args[2]); Location block = Location.Parse(current, args[0], args[1], args[2]);
handler.UpdateLocation(current, block); handler.UpdateLocation(current, block);
return Translations.Get("cmd.look.block", block); return string.Format(Translations.cmd_look_block, block);
} }
catch (FormatException) { return CmdUsage; } catch (FormatException) { return CmdUsage; }
} }
else return GetCmdDescTranslated(); else return GetCmdDescTranslated();
} }
else return Translations.Get("extra.terrainandmovement_required"); else return Translations.extra_terrainandmovement_required;
} }
} }
} }

View file

@ -9,7 +9,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "move"; } } public override string CmdName { get { return "move"; } }
public override string CmdUsage { get { return "move <on|off|get|up|down|east|west|north|south|center|x y z|gravity [on|off]> [-f]"; } } public override string CmdUsage { get { return "move <on|off|get|up|down|east|west|north|south|center|x y z|gravity [on|off]> [-f]"; } }
public override string CmdDesc { get { return "walk or start walking. \"-f\": force unsafe movements like falling or touching fire"; } } public override string CmdDesc { get { return Translations.cmd_move_desc + " \"-f\": " + Translations.cmd_move_desc_force; } }
public override string Run(McClient handler, string command, Dictionary<string, object>? localVars) public override string Run(McClient handler, string command, Dictionary<string, object>? localVars)
{ {
@ -35,20 +35,20 @@ namespace MinecraftClient.Commands
if (args[0] == "on") if (args[0] == "on")
{ {
handler.SetTerrainEnabled(true); handler.SetTerrainEnabled(true);
return Translations.Get("cmd.move.enable"); return Translations.cmd_move_enable;
} }
else if (args[0] == "off") else if (args[0] == "off")
{ {
handler.SetTerrainEnabled(false); handler.SetTerrainEnabled(false);
return Translations.Get("cmd.move.disable"); return Translations.cmd_move_disable;
} }
else if (args[0] == "gravity") else if (args[0] == "gravity")
{ {
if (args.Count >= 2) if (args.Count >= 2)
Settings.InternalConfig.GravityEnabled = (args[1] == "on"); Settings.InternalConfig.GravityEnabled = (args[1] == "on");
if (Settings.InternalConfig.GravityEnabled) if (Settings.InternalConfig.GravityEnabled)
return Translations.Get("cmd.move.gravity.enabled"); return Translations.cmd_move_gravity_enabled;
else return Translations.Get("cmd.move.gravity.disabled"); else return Translations.cmd_move_gravity_disabled;
} }
else if (handler.GetTerrainEnabled()) else if (handler.GetTerrainEnabled())
{ {
@ -67,24 +67,24 @@ namespace MinecraftClient.Commands
Location current = handler.GetCurrentLocation(); Location current = handler.GetCurrentLocation();
Location currentCenter = new(Math.Floor(current.X) + 0.5, current.Y, Math.Floor(current.Z) + 0.5); Location currentCenter = new(Math.Floor(current.X) + 0.5, current.Y, Math.Floor(current.Z) + 0.5);
handler.MoveTo(currentCenter, allowDirectTeleport: true); handler.MoveTo(currentCenter, allowDirectTeleport: true);
return Translations.Get("cmd.move.walk", currentCenter, current); return string.Format(Translations.cmd_move_walk, currentCenter, current);
case "get": return handler.GetCurrentLocation().ToString(); case "get": return handler.GetCurrentLocation().ToString();
default: return Translations.Get("cmd.look.unknown", args[0]); default: return string.Format(Translations.cmd_look_unknown, args[0]);
} }
Location goal = Movement.Move(handler.GetCurrentLocation(), direction); Location goal = Movement.Move(handler.GetCurrentLocation(), direction);
if (!Movement.CheckChunkLoading(handler.GetWorld(), handler.GetCurrentLocation(), goal)) if (!Movement.CheckChunkLoading(handler.GetWorld(), handler.GetCurrentLocation(), goal))
return Translations.Get("cmd.move.chunk_not_loaded", goal.X, goal.Y, goal.Z); return string.Format(Translations.cmd_move_chunk_not_loaded, goal.X, goal.Y, goal.Z);
if (Movement.CanMove(handler.GetWorld(), handler.GetCurrentLocation(), direction)) if (Movement.CanMove(handler.GetWorld(), handler.GetCurrentLocation(), direction))
{ {
if (handler.MoveTo(goal, allowUnsafe: takeRisk)) if (handler.MoveTo(goal, allowUnsafe: takeRisk))
return Translations.Get("cmd.move.moving", args[0]); return string.Format(Translations.cmd_move_moving, args[0]);
else else
return takeRisk ? Translations.Get("cmd.move.dir_fail") : Translations.Get("cmd.move.suggestforce"); return takeRisk ? Translations.cmd_move_dir_fail : Translations.cmd_move_suggestforce;
} }
else return Translations.Get("cmd.move.dir_fail"); else return Translations.cmd_move_dir_fail;
} }
else if (args.Count == 3) else if (args.Count == 3)
{ {
@ -94,24 +94,24 @@ namespace MinecraftClient.Commands
Location goal = Location.Parse(current, args[0], args[1], args[2]); Location goal = Location.Parse(current, args[0], args[1], args[2]);
if (!Movement.CheckChunkLoading(handler.GetWorld(), current, goal)) if (!Movement.CheckChunkLoading(handler.GetWorld(), current, goal))
return Translations.Get("cmd.move.chunk_not_loaded", goal.X, goal.Y, goal.Z); return string.Format(Translations.cmd_move_chunk_not_loaded, goal.X, goal.Y, goal.Z);
if (takeRisk || Movement.PlayerFitsHere(handler.GetWorld(), goal)) if (takeRisk || Movement.PlayerFitsHere(handler.GetWorld(), goal))
{ {
if (current.ToFloor() == goal.ToFloor()) if (current.ToFloor() == goal.ToFloor())
handler.MoveTo(goal, allowDirectTeleport: true); handler.MoveTo(goal, allowDirectTeleport: true);
else if (!handler.MoveTo(goal, allowUnsafe: takeRisk)) else if (!handler.MoveTo(goal, allowUnsafe: takeRisk))
return takeRisk ? Translations.Get("cmd.move.fail", goal) : Translations.Get("cmd.move.suggestforce", goal); return takeRisk ? string.Format(Translations.cmd_move_fail, goal) : string.Format(Translations.cmd_move_suggestforce, goal);
return Translations.Get("cmd.move.walk", goal, current); return string.Format(Translations.cmd_move_walk, goal, current);
} }
else else
return Translations.Get("cmd.move.suggestforce", goal); return string.Format(Translations.cmd_move_suggestforce, goal);
} }
catch (FormatException) { return GetCmdDescTranslated(); } catch (FormatException) { return GetCmdDescTranslated(); }
} }
else return GetCmdDescTranslated(); else return GetCmdDescTranslated();
} }
else return Translations.Get("extra.terrainandmovement_required"); else return Translations.extra_terrainandmovement_required;
} }
} }
} }

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "reco"; } } public override string CmdName { get { return "reco"; } }
public override string CmdUsage { get { return "reco [account]"; } } public override string CmdUsage { get { return "reco [account]"; } }
public override string CmdDesc { get { return "cmd.reco.desc"; } } public override string CmdDesc { get { return Translations.cmd_reco_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)
{ {
@ -15,7 +15,7 @@ namespace MinecraftClient.Commands
{ {
if (!Settings.Config.Main.Advanced.SetAccount(args[0])) if (!Settings.Config.Main.Advanced.SetAccount(args[0]))
{ {
return Translations.Get("cmd.connect.unknown", args[0]); return string.Format(Translations.cmd_connect_unknown, args[0]);
} }
} }
Program.Restart(); Program.Restart();

View file

@ -6,18 +6,18 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "reload"; } } public override string CmdName { get { return "reload"; } }
public override string CmdUsage { get { return "reload"; } } public override string CmdUsage { get { return "reload"; } }
public override string CmdDesc { get { return "cmd.reload.desc"; } } public override string CmdDesc { get { return Translations.cmd_reload_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)
{ {
handler.Log.Info(Translations.TryGet("cmd.reload.started")); handler.Log.Info(Translations.cmd_reload_started);
handler.ReloadSettings(); handler.ReloadSettings();
handler.Log.Warn(Translations.TryGet("cmd.reload.warning1")); handler.Log.Warn(Translations.cmd_reload_warning1);
handler.Log.Warn(Translations.TryGet("cmd.reload.warning2")); handler.Log.Warn(Translations.cmd_reload_warning2);
handler.Log.Warn(Translations.TryGet("cmd.reload.warning3")); handler.Log.Warn(Translations.cmd_reload_warning3);
handler.Log.Warn(Translations.TryGet("cmd.reload.warning4")); handler.Log.Warn(Translations.cmd_reload_warning4);
return Translations.TryGet("cmd.reload.finished"); return Translations.cmd_reload_finished;
} }
} }
} }

View file

@ -6,12 +6,12 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "respawn"; } } public override string CmdName { get { return "respawn"; } }
public override string CmdUsage { get { return "respawn"; } } public override string CmdUsage { get { return "respawn"; } }
public override string CmdDesc { get { return "cmd.respawn.desc"; } } public override string CmdDesc { get { return Translations.cmd_respawn_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)
{ {
handler.SendRespawnPacket(); handler.SendRespawnPacket();
return Translations.Get("cmd.respawn.done"); return Translations.cmd_respawn_done;
} }
} }
} }

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "script"; } } public override string CmdName { get { return "script"; } }
public override string CmdUsage { get { return "script <scriptname>"; } } public override string CmdUsage { get { return "script <scriptname>"; } }
public override string CmdDesc { get { return "cmd.script.desc"; } } public override string CmdDesc { get { return Translations.cmd_script_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)
{ {

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "send"; } } public override string CmdName { get { return "send"; } }
public override string CmdUsage { get { return "send <text>"; } } public override string CmdUsage { get { return "send <text>"; } }
public override string CmdDesc { get { return "cmd.send.desc"; } } public override string CmdDesc { get { return Translations.cmd_send_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)
{ {

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "set"; } } public override string CmdName { get { return "set"; } }
public override string CmdUsage { get { return "set varname=value"; } } public override string CmdUsage { get { return "set varname=value"; } }
public override string CmdDesc { get { return "cmd.set.desc"; } } public override string CmdDesc { get { return Translations.cmd_set_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)
{ {
@ -18,7 +18,7 @@ namespace MinecraftClient.Commands
if (Settings.Config.AppVar.SetVar(temp[0], GetArg(command).Substring(temp[0].Length + 1))) if (Settings.Config.AppVar.SetVar(temp[0], GetArg(command).Substring(temp[0].Length + 1)))
return ""; //Success return ""; //Success
else else
return Translations.Get("cmd.set.format"); return Translations.cmd_set_format;
} }
else else
return GetCmdDescTranslated(); return GetCmdDescTranslated();

View file

@ -6,8 +6,8 @@ namespace MinecraftClient.Commands
class SetRnd : Command class SetRnd : Command
{ {
public override string CmdName { get { return "setrnd"; } } public override string CmdName { get { return "setrnd"; } }
public override string CmdUsage { get { return Translations.Get("cmd.setrnd.format"); } } public override string CmdUsage { get { return Translations.cmd_setrnd_format; } }
public override string CmdDesc { get { return "cmd.setrnd.desc"; } } public override string CmdDesc { get { return Translations.cmd_setrnd_desc; } }
private static readonly Random rand = new(); private static readonly Random rand = new();
public override string Run(McClient handler, string command, Dictionary<string, object>? localVars) public override string Run(McClient handler, string command, Dictionary<string, object>? localVars)
@ -32,7 +32,7 @@ namespace MinecraftClient.Commands
} }
catch (Exception) catch (Exception)
{ {
return Translations.Get("cmd.setrndnum.format"); return Translations.cmd_setrndnum_format;
} }
// switch the values if they were entered in the wrong way // switch the values if they were entered in the wrong way
@ -44,7 +44,7 @@ namespace MinecraftClient.Commands
{ {
return string.Format("Set %{0}% to {1}.", args[0], Settings.Config.AppVar.GetVar(args[0])); //Success return string.Format("Set %{0}% to {1}.", args[0], Settings.Config.AppVar.GetVar(args[0])); //Success
} }
else return Translations.Get("cmd.setrndnum.format"); else return Translations.cmd_setrndnum_format;
} }
else else
{ {
@ -59,7 +59,7 @@ namespace MinecraftClient.Commands
{ {
return string.Format("Set %{0}% to {1}.", args[0], Settings.Config.AppVar.GetVar(args[0])); //Success return string.Format("Set %{0}% to {1}.", args[0], Settings.Config.AppVar.GetVar(args[0])); //Success
} }
else return Translations.Get("cmd.setrndstr.format"); else return Translations.cmd_setrndstr_format;
} }
} }
else return GetCmdDescTranslated(); else return GetCmdDescTranslated();

View file

@ -7,7 +7,7 @@ namespace MinecraftClient.Commands
private bool sneaking = false; private bool sneaking = false;
public override string CmdName { get { return "Sneak"; } } public override string CmdName { get { return "Sneak"; } }
public override string CmdUsage { get { return "Sneak"; } } public override string CmdUsage { get { return "Sneak"; } }
public override string CmdDesc { get { return "cmd.sneak.desc"; } } public override string CmdDesc { get { return Translations.cmd_sneak_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)
{ {
@ -16,14 +16,14 @@ namespace MinecraftClient.Commands
var result = handler.SendEntityAction(Protocol.EntityActionType.StopSneaking); var result = handler.SendEntityAction(Protocol.EntityActionType.StopSneaking);
if (result) if (result)
sneaking = false; sneaking = false;
return Translations.Get(result ? "cmd.sneak.off" : "general.fail"); return result ? Translations.cmd_sneak_off : Translations.general_fail;
} }
else else
{ {
var result = handler.SendEntityAction(Protocol.EntityActionType.StartSneaking); var result = handler.SendEntityAction(Protocol.EntityActionType.StartSneaking);
if (result) if (result)
sneaking = true; sneaking = true;
return Translations.Get(result ? "cmd.sneak.on" : "general.fail"); return result ? Translations.cmd_sneak_on : Translations.general_fail;
} }
} }
} }

View file

@ -7,7 +7,7 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "tps"; } } public override string CmdName { get { return "tps"; } }
public override string CmdUsage { get { return "tps"; } } public override string CmdUsage { get { return "tps"; } }
public override string CmdDesc { get { return "cmd.tps.desc"; } } public override string CmdDesc { get { return Translations.cmd_tps_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)
{ {
@ -19,7 +19,7 @@ namespace MinecraftClient.Commands
color = "§e"; // Yellow color = "§e"; // Yellow
else else
color = "§a"; // Green color = "§a"; // Green
return Translations.Get("cmd.tps.current") + ": " + color + tps; return Translations.cmd_tps_current + ": " + color + tps;
} }
} }
} }

View file

@ -6,16 +6,16 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "useitem"; } } public override string CmdName { get { return "useitem"; } }
public override string CmdUsage { get { return "useitem"; } } public override string CmdUsage { get { return "useitem"; } }
public override string CmdDesc { get { return "cmd.useitem.desc"; } } public override string CmdDesc { get { return Translations.cmd_useitem_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)
{ {
if (handler.GetInventoryEnabled()) if (handler.GetInventoryEnabled())
{ {
handler.UseItemOnHand(); handler.UseItemOnHand();
return Translations.Get("cmd.useitem.use"); return Translations.cmd_useitem_use;
} }
else return Translations.Get("extra.inventory_required"); else return Translations.extra_inventory_required;
} }
} }
} }

View file

@ -7,12 +7,12 @@ namespace MinecraftClient.Commands
{ {
public override string CmdName { get { return "useblock"; } } public override string CmdName { get { return "useblock"; } }
public override string CmdUsage { get { return "useblock <x> <y> <z>"; } } public override string CmdUsage { get { return "useblock <x> <y> <z>"; } }
public override string CmdDesc { get { return "cmd.useblock.desc"; } } public override string CmdDesc { get { return Translations.cmd_useblock_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)
{ {
if (!handler.GetTerrainEnabled()) if (!handler.GetTerrainEnabled())
return Translations.Get("extra.terrainandmovement_required"); return Translations.extra_terrainandmovement_required;
else if (HasArg(command)) else if (HasArg(command))
{ {
string[] args = GetArgs(command); string[] args = GetArgs(command);
@ -21,7 +21,7 @@ namespace MinecraftClient.Commands
Location block = Location.Parse(handler.GetCurrentLocation().ToFloor(), args[0], args[1], args[2]).ToFloor(); Location block = Location.Parse(handler.GetCurrentLocation().ToFloor(), args[0], args[1], args[2]).ToFloor();
Location blockCenter = block.ToCenter(); Location blockCenter = block.ToCenter();
bool res = handler.PlaceBlock(block, Direction.Down); bool res = handler.PlaceBlock(block, Direction.Down);
return Translations.Get("cmd.useblock.use", blockCenter.X, blockCenter.Y, blockCenter.Z, res ? "succeeded" : "failed"); return string.Format(Translations.cmd_useblock_use, blockCenter.X, blockCenter.Y, blockCenter.Z, res ? "succeeded" : "failed");
} }
else else
return GetCmdDescTranslated(); return GetCmdDescTranslated();

View file

@ -1,175 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="ContainerType_BrewingStand" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\containers\ContainerType.BrewingStand.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="ContainerType_Crafting" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\containers\ContainerType.Crafting.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="ContainerType_EnchantingTable" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\containers\ContainerType.EnchantingTable.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="ContainerType_Furnace" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\containers\ContainerType.Furnace.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="ContainerType_Generic_3x3" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\containers\ContainerType.Generic_3x3.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="ContainerType_Generic_9x3" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\containers\ContainerType.Generic_9x3.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="ContainerType_Generic_9x6" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\containers\ContainerType.Generic_9x6.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="ContainerType_Grindstone" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\containers\ContainerType.Grindstone.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="ContainerType_Hopper" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\containers\ContainerType.Hopper.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="ContainerType_PlayerInventory" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\containers\ContainerType.PlayerInventory.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="Translation_de" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\lang\de.ini;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="Translation_en" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\lang\en.ini;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="Translation_fr" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\lang\fr.ini;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="Translation_ru" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\lang\ru.ini;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="Translation_tr" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\lang\tr.ini;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="Translation_vi" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\lang\vi.ini;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="Translation_zh_Hans" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\lang\zh-Hans.ini;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
<data name="Translation_zh_Hant" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>Resources\lang\zh-Hant.ini;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
</data>
</root>

View file

@ -25,7 +25,7 @@ namespace MinecraftClient
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
{ {
string callerClass = new System.Diagnostics.StackFrame(1).GetMethod()!.DeclaringType!.Name; string callerClass = new System.Diagnostics.StackFrame(1).GetMethod()!.DeclaringType!.Name;
ConsoleIO.WriteLineFormatted(Translations.Get("filemonitor.init", callerClass, Path.Combine(folder, filename))); ConsoleIO.WriteLineFormatted(string.Format(Translations.filemonitor_init, callerClass, Path.Combine(folder, filename)));
} }
try try
@ -43,7 +43,7 @@ namespace MinecraftClient
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
{ {
string callerClass = new System.Diagnostics.StackFrame(1).GetMethod()!.DeclaringType!.Name; string callerClass = new System.Diagnostics.StackFrame(1).GetMethod()!.DeclaringType!.Name;
ConsoleIO.WriteLineFormatted(Translations.Get("filemonitor.fail", callerClass)); ConsoleIO.WriteLineFormatted(string.Format(Translations.filemonitor_fail, callerClass));
} }
monitor = null; monitor = null;

View file

@ -48,26 +48,26 @@
return c switch return c switch
{ {
#pragma warning disable format // @formatter:off #pragma warning disable format // @formatter:off
ContainerType.PlayerInventory => DefaultConfigResource.ContainerType_PlayerInventory, ContainerType.PlayerInventory => AsciiArt.Container_PlayerInventory,
ContainerType.Generic_9x3 => DefaultConfigResource.ContainerType_Generic_9x3, ContainerType.Generic_9x3 => AsciiArt.Container_Generic_9x3,
ContainerType.Generic_9x6 => DefaultConfigResource.ContainerType_Generic_9x6, ContainerType.Generic_9x6 => AsciiArt.Container_Generic_9x6,
ContainerType.Generic_3x3 => DefaultConfigResource.ContainerType_Generic_3x3, ContainerType.Generic_3x3 => AsciiArt.Container_Generic_3x3,
ContainerType.Crafting => DefaultConfigResource.ContainerType_Crafting, ContainerType.Crafting => AsciiArt.Container_Crafting,
ContainerType.BlastFurnace => DefaultConfigResource.ContainerType_Furnace, ContainerType.BlastFurnace => AsciiArt.Container_Furnace,
ContainerType.Furnace => DefaultConfigResource.ContainerType_Furnace, ContainerType.Furnace => AsciiArt.Container_Furnace,
ContainerType.Smoker => DefaultConfigResource.ContainerType_Furnace, ContainerType.Smoker => AsciiArt.Container_Furnace,
ContainerType.Enchantment => DefaultConfigResource.ContainerType_EnchantingTable, ContainerType.Enchantment => AsciiArt.Container_EnchantingTable,
ContainerType.BrewingStand => DefaultConfigResource.ContainerType_BrewingStand, ContainerType.BrewingStand => AsciiArt.Container_BrewingStand,
ContainerType.Merchant => null, ContainerType.Merchant => null,
ContainerType.Beacon => null, ContainerType.Beacon => null,
ContainerType.Anvil => null, ContainerType.Anvil => null,
ContainerType.Hopper => DefaultConfigResource.ContainerType_Hopper, ContainerType.Hopper => AsciiArt.Container_Hopper,
ContainerType.ShulkerBox => DefaultConfigResource.ContainerType_Generic_9x3, ContainerType.ShulkerBox => AsciiArt.Container_Generic_9x3,
ContainerType.Loom => null, ContainerType.Loom => null,
ContainerType.Stonecutter => null, ContainerType.Stonecutter => null,
ContainerType.Lectern => null, ContainerType.Lectern => null,
ContainerType.Cartography => null, ContainerType.Cartography => null,
ContainerType.Grindstone => DefaultConfigResource.ContainerType_Grindstone, ContainerType.Grindstone => AsciiArt.Container_Grindstone,
ContainerType.Unknown => null, ContainerType.Unknown => null,
ContainerType.Generic_9x1 => null, ContainerType.Generic_9x1 => null,
ContainerType.Generic_9x2 => null, ContainerType.Generic_9x2 => null,

View file

@ -167,7 +167,7 @@ namespace MinecraftClient.Inventory
int damage = Damage; int damage = Damage;
if (damage != 0) if (damage != 0)
sb.AppendFormat(" | {0}: {1}", Translations.Get("cmd.inventory.damage"), damage); sb.AppendFormat(" | {0}: {1}", Translations.cmd_inventory_damage, damage);
return sb.ToString(); return sb.ToString();
} }

View file

@ -216,7 +216,7 @@ namespace MinecraftClient.Mapping
else else
chunkLoadedRatio = (world.chunkCnt - world.chunkLoadNotCompleted) / (double)world.chunkCnt; chunkLoadedRatio = (world.chunkCnt - world.chunkLoadNotCompleted) / (double)world.chunkCnt;
string status = Translations.Get("cmd.move.chunk_loading_status", string status = string.Format(Translations.cmd_move_chunk_loading_status,
chunkLoadedRatio, world.chunkCnt - world.chunkLoadNotCompleted, world.chunkCnt); chunkLoadedRatio, world.chunkCnt - world.chunkLoadNotCompleted, world.chunkCnt);
return status; return status;

View file

@ -181,7 +181,7 @@ namespace MinecraftClient
client.ReceiveBufferSize = 1024 * 1024; client.ReceiveBufferSize = 1024 * 1024;
client.ReceiveTimeout = Config.Main.Advanced.TcpTimeout * 1000; // Default: 30 seconds client.ReceiveTimeout = Config.Main.Advanced.TcpTimeout * 1000; // Default: 30 seconds
handler = Protocol.ProtocolHandler.GetProtocolHandler(client, protocolversion, forgeInfo, this); handler = Protocol.ProtocolHandler.GetProtocolHandler(client, protocolversion, forgeInfo, this);
Log.Info(Translations.Get("mcc.version_supported")); Log.Info(Translations.mcc_version_supported);
timeoutdetector = new(new Thread(new ParameterizedThreadStart(TimeoutDetector)), new CancellationTokenSource()); timeoutdetector = new(new Thread(new ParameterizedThreadStart(TimeoutDetector)), new CancellationTokenSource());
timeoutdetector.Item1.Name = "MCC Connection timeout detector"; timeoutdetector.Item1.Name = "MCC Connection timeout detector";
@ -195,7 +195,7 @@ namespace MinecraftClient
BotLoad(bot, false); BotLoad(bot, false);
botsOnHold.Clear(); botsOnHold.Clear();
Log.Info(Translations.Get("mcc.joined", Config.Main.Advanced.InternalCmdChar.ToLogString())); Log.Info(string.Format(Translations.mcc_joined, Config.Main.Advanced.InternalCmdChar.ToLogString()));
cmdprompt = new CancellationTokenSource(); cmdprompt = new CancellationTokenSource();
ConsoleInteractive.ConsoleReader.BeginReadThread(cmdprompt); ConsoleInteractive.ConsoleReader.BeginReadThread(cmdprompt);
@ -204,21 +204,21 @@ namespace MinecraftClient
} }
else else
{ {
Log.Error(Translations.Get("error.login_failed")); Log.Error(Translations.error_login_failed);
goto Retry; goto Retry;
} }
} }
catch (Exception e) catch (Exception e)
{ {
Log.Error(e.GetType().Name + ": " + e.Message); Log.Error(e.GetType().Name + ": " + e.Message);
Log.Error(Translations.Get("error.join")); Log.Error(Translations.error_join);
goto Retry; goto Retry;
} }
} }
catch (SocketException e) catch (SocketException e)
{ {
Log.Error(e.Message); Log.Error(e.Message);
Log.Error(Translations.Get("error.connect")); Log.Error(Translations.error_connect);
goto Retry; goto Retry;
} }
@ -232,7 +232,7 @@ namespace MinecraftClient
} }
if (ReconnectionAttemptsLeft > 0) if (ReconnectionAttemptsLeft > 0)
{ {
Log.Info(Translations.Get("mcc.reconnect", ReconnectionAttemptsLeft)); Log.Info(string.Format(Translations.mcc_reconnect, ReconnectionAttemptsLeft));
Thread.Sleep(5000); Thread.Sleep(5000);
ReconnectionAttemptsLeft--; ReconnectionAttemptsLeft--;
Program.Restart(); Program.Restart();
@ -394,7 +394,7 @@ namespace MinecraftClient
if (((CancellationToken)o!).IsCancellationRequested) if (((CancellationToken)o!).IsCancellationRequested)
return; return;
OnConnectionLost(ChatBot.DisconnectReason.ConnectionLost, Translations.Get("error.timeout")); OnConnectionLost(ChatBot.DisconnectReason.ConnectionLost, Translations.error_timeout);
return; return;
} }
} }
@ -466,22 +466,22 @@ namespace MinecraftClient
switch (reason) switch (reason)
{ {
case ChatBot.DisconnectReason.ConnectionLost: case ChatBot.DisconnectReason.ConnectionLost:
message = Translations.Get("mcc.disconnect.lost"); message = Translations.mcc_disconnect_lost;
Log.Info(message); Log.Info(message);
break; break;
case ChatBot.DisconnectReason.InGameKick: case ChatBot.DisconnectReason.InGameKick:
Log.Info(Translations.Get("mcc.disconnect.server")); Log.Info(Translations.mcc_disconnect_server);
Log.Info(message); Log.Info(message);
break; break;
case ChatBot.DisconnectReason.LoginRejected: case ChatBot.DisconnectReason.LoginRejected:
Log.Info(Translations.Get("mcc.disconnect.login")); Log.Info(Translations.mcc_disconnect_login);
Log.Info(message); Log.Info(message);
break; break;
case ChatBot.DisconnectReason.UserLogout: case ChatBot.DisconnectReason.UserLogout:
throw new InvalidOperationException(Translations.Get("exception.user_logout")); throw new InvalidOperationException(Translations.exception_user_logout);
} }
//Process AutoRelog last to make sure other bots can perform their cleanup tasks first (issue #1517) //Process AutoRelog last to make sure other bots can perform their cleanup tasks first (issue #1517)
@ -636,15 +636,15 @@ namespace MinecraftClient
string help_cmdname = Command.GetArgs(command)[0].ToLower(); string help_cmdname = Command.GetArgs(command)[0].ToLower();
if (help_cmdname == "help") if (help_cmdname == "help")
{ {
response_msg = Translations.Get("icmd.help"); response_msg = Translations.icmd_help;
} }
else if (cmds.ContainsKey(help_cmdname)) else if (cmds.ContainsKey(help_cmdname))
{ {
response_msg = cmds[help_cmdname].GetCmdDescTranslated(); response_msg = cmds[help_cmdname].GetCmdDescTranslated();
} }
else response_msg = Translations.Get("icmd.unknown", command_name); else response_msg = string.Format(Translations.icmd_unknown, command_name);
} }
else response_msg = Translations.Get("icmd.list", String.Join(", ", cmd_names.ToArray()), Config.Main.Advanced.InternalCmdChar.ToChar()); else response_msg = string.Format(Translations.icmd_list, String.Join(", ", cmd_names.ToArray()), Config.Main.Advanced.InternalCmdChar.ToChar());
} }
else if (cmds.ContainsKey(command_name)) else if (cmds.ContainsKey(command_name))
{ {
@ -660,7 +660,7 @@ namespace MinecraftClient
{ {
if (e is not ThreadAbortException) if (e is not ThreadAbortException)
{ {
Log.Warn(Translations.Get("icmd.error", bot.ToString() ?? string.Empty, e.ToString())); Log.Warn(string.Format(Translations.icmd_error, bot.ToString() ?? string.Empty, e.ToString()));
} }
else throw; //ThreadAbortException should not be caught else throw; //ThreadAbortException should not be caught
} }
@ -668,7 +668,7 @@ namespace MinecraftClient
} }
else else
{ {
response_msg = Translations.Get("icmd.unknown", command_name); response_msg = string.Format(Translations.icmd_unknown, command_name);
return false; return false;
} }
@ -2407,7 +2407,7 @@ namespace MinecraftClient
{ {
inventoryHandlingRequested = false; inventoryHandlingRequested = false;
inventoryHandlingEnabled = true; inventoryHandlingEnabled = true;
Log.Info(Translations.Get("extra.inventory_enabled")); Log.Info(Translations.extra_inventory_enabled);
} }
ClearInventories(); ClearInventories();
@ -2426,7 +2426,7 @@ namespace MinecraftClient
{ {
terrainAndMovementsEnabled = true; terrainAndMovementsEnabled = true;
terrainAndMovementsRequested = false; terrainAndMovementsRequested = false;
Log.Info(Translations.Get("extra.terrainandmovement_enabled")); Log.Info(Translations.extra_terrainandmovement_enabled);
} }
if (terrainAndMovementsEnabled) if (terrainAndMovementsEnabled)
@ -2576,7 +2576,7 @@ namespace MinecraftClient
case Direction.South: case Direction.South:
break; break;
default: default:
throw new ArgumentException(Translations.Get("exception.unknown_direction"), nameof(direction)); throw new ArgumentException(Translations.exception_unknown_direction, nameof(direction));
} }
UpdateLocation(location, yaw, pitch); UpdateLocation(location, yaw, pitch);
@ -2611,7 +2611,7 @@ namespace MinecraftClient
if (Config.Main.Advanced.ShowChatLinks) if (Config.Main.Advanced.ShowChatLinks)
foreach (string link in links) foreach (string link in links)
Log.Chat(Translations.Get("mcc.link", link)); Log.Chat(string.Format(Translations.mcc_link, link));
DispatchBotEvent(bot => bot.GetText(messageText)); DispatchBotEvent(bot => bot.GetText(messageText));
DispatchBotEvent(bot => bot.GetText(messageText, message.content)); DispatchBotEvent(bot => bot.GetText(messageText, message.content));
@ -2636,8 +2636,8 @@ namespace MinecraftClient
if (inventoryID != 0) if (inventoryID != 0)
{ {
Log.Info(Translations.Get("extra.inventory_open", inventoryID, inventory.Title)); Log.Info(string.Format(Translations.extra_inventory_open, inventoryID, inventory.Title));
Log.Info(Translations.Get("extra.inventory_interact")); Log.Info(Translations.extra_inventory_interact);
DispatchBotEvent(bot => bot.OnInventoryOpen(inventoryID)); DispatchBotEvent(bot => bot.OnInventoryOpen(inventoryID));
} }
} }
@ -2658,7 +2658,7 @@ namespace MinecraftClient
if (inventoryID != 0) if (inventoryID != 0)
{ {
Log.Info(Translations.Get("extra.inventory_close", inventoryID)); Log.Info(string.Format(Translations.extra_inventory_close, inventoryID));
DispatchBotEvent(bot => bot.OnInventoryClose(inventoryID)); DispatchBotEvent(bot => bot.OnInventoryClose(inventoryID));
} }
} }
@ -2712,22 +2712,22 @@ namespace MinecraftClient
StringBuilder sb = new(); StringBuilder sb = new();
sb.AppendLine(Translations.TryGet("Enchantment.enchantments_available") + ":"); sb.AppendLine(Translations.Enchantment_enchantments_available + ":");
sb.AppendLine(Translations.TryGet("Enchantment.tops_slot") + ":\t" sb.AppendLine(Translations.Enchantment_tops_slot + ":\t"
+ EnchantmentMapping.GetEnchantmentName(topEnchantment) + " " + EnchantmentMapping.GetEnchantmentName(topEnchantment) + " "
+ EnchantmentMapping.ConvertLevelToRomanNumbers(topEnchantmentLevel) + " (" + EnchantmentMapping.ConvertLevelToRomanNumbers(topEnchantmentLevel) + " ("
+ topEnchantmentLevelRequirement + " " + Translations.TryGet("Enchantment.levels") + ")"); + topEnchantmentLevelRequirement + " " + Translations.Enchantment_levels + ")");
sb.AppendLine(Translations.TryGet("Enchantment.middle_slot") + ":\t" sb.AppendLine(Translations.Enchantment_middle_slot + ":\t"
+ EnchantmentMapping.GetEnchantmentName(middleEnchantment) + " " + EnchantmentMapping.GetEnchantmentName(middleEnchantment) + " "
+ EnchantmentMapping.ConvertLevelToRomanNumbers(middleEnchantmentLevel) + " (" + EnchantmentMapping.ConvertLevelToRomanNumbers(middleEnchantmentLevel) + " ("
+ middleEnchantmentLevelRequirement + " " + Translations.TryGet("Enchantment.levels") + ")"); + middleEnchantmentLevelRequirement + " " + Translations.Enchantment_levels + ")");
sb.AppendLine(Translations.TryGet("Enchantment.bottom_slot") + ":\t" sb.AppendLine(Translations.Enchantment_bottom_slot + ":\t"
+ EnchantmentMapping.GetEnchantmentName(bottomEnchantment) + " " + EnchantmentMapping.GetEnchantmentName(bottomEnchantment) + " "
+ EnchantmentMapping.ConvertLevelToRomanNumbers(bottomEnchantmentLevel) + " (" + EnchantmentMapping.ConvertLevelToRomanNumbers(bottomEnchantmentLevel) + " ("
+ bottomEnchantmentLevelRequirement + " " + Translations.TryGet("Enchantment.levels") + ")"); + bottomEnchantmentLevelRequirement + " " + Translations.Enchantment_levels + ")");
Log.Info(sb.ToString()); Log.Info(sb.ToString());
@ -3138,12 +3138,12 @@ namespace MinecraftClient
{ {
if (Config.Main.Advanced.AutoRespawn) if (Config.Main.Advanced.AutoRespawn)
{ {
Log.Info(Translations.Get("mcc.player_dead_respawn")); Log.Info(Translations.mcc_player_dead_respawn);
respawnTicks = 10; respawnTicks = 10;
} }
else else
{ {
Log.Info(Translations.Get("mcc.player_dead", Config.Main.Advanced.InternalCmdChar.ToLogString())); Log.Info(string.Format(Translations.mcc_player_dead, Config.Main.Advanced.InternalCmdChar.ToLogString()));
} }
DispatchBotEvent(bot => bot.OnDeath()); DispatchBotEvent(bot => bot.OnDeath());
} }

View file

@ -25,12 +25,6 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Content Include="Resources\AppIcon.ico" /> <Content Include="Resources\AppIcon.ico" />
<Content Include="Resources\containers\ContainerType.BrewingStand.txt" />
<Content Include="Resources\containers\ContainerType.Crafting.txt" />
<Content Include="Resources\containers\ContainerType.Generic_3x3.txt" />
<Content Include="Resources\containers\ContainerType.Generic_9x3.txt" />
<Content Include="Resources\containers\ContainerType.Generic_9x6.txt" />
<Content Include="Resources\containers\ContainerType.PlayerInventory.txt" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="DnsClient" Version="1.6.1" /> <PackageReference Include="DnsClient" Version="1.6.1" />
@ -78,8 +72,27 @@
<ProjectReference Include="..\ConsoleInteractive\ConsoleInteractive\ConsoleInteractive\ConsoleInteractive.csproj" /> <ProjectReference Include="..\ConsoleInteractive\ConsoleInteractive\ConsoleInteractive\ConsoleInteractive.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Update="DefaultConfigResource.resx"> <Compile Update="Resources\AsciiArt\AsciiArt.Designer.cs">
<Generator></Generator> <DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>AsciiArt.resx</DependentUpon>
</Compile>
<Compile Update="Resources\Translations\Translations.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Translations.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Resources\AsciiArt\AsciiArt.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>AsciiArt.Designer.cs</LastGenOutput>
<CustomToolNamespace>MinecraftClient</CustomToolNamespace>
</EmbeddedResource>
<EmbeddedResource Update="Resources\Translations\Translations.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Translations.Designer.cs</LastGenOutput>
<CustomToolNamespace>MinecraftClient</CustomToolNamespace>
</EmbeddedResource> </EmbeddedResource>
</ItemGroup> </ItemGroup>
</Project> </Project>

View file

@ -42,7 +42,7 @@ namespace MinecraftClient
{ {
private static McClient? client; private static McClient? client;
public static string[]? startupargs; public static string[]? startupargs;
public static readonly CultureInfo ActualCulture = CultureInfo.CurrentCulture; public static CultureInfo ActualCulture = CultureInfo.CurrentCulture;
public const string Version = MCHighestVersion; public const string Version = MCHighestVersion;
public const string MCLowestVersion = "1.4.6"; public const string MCLowestVersion = "1.4.6";
@ -58,8 +58,6 @@ namespace MinecraftClient
/// </summary> /// </summary>
static void Main(string[] args) static void Main(string[] args)
{ {
InitCulture();
Task.Run(() => Task.Run(() =>
{ {
// "ToLower" require "CultureInfo" to be initialized on first run, which can take a lot of time. // "ToLower" require "CultureInfo" to be initialized on first run, which can take a lot of time.
@ -135,15 +133,23 @@ namespace MinecraftClient
newlyGenerated = true; newlyGenerated = true;
} }
if (!loadSucceed) if (needWriteDefaultSetting)
{
Config.Main.Advanced.Language = Settings.GetDefaultGameLanguage();
WriteBackSettings(false);
if (newlyGenerated)
ConsoleIO.WriteLineFormatted(Translations.mcc_settings_generated);
ConsoleIO.WriteLine(Translations.mcc_run_with_default_settings);
}
else if (!loadSucceed)
{ {
ConsoleInteractive.ConsoleReader.StopReadThread(); ConsoleInteractive.ConsoleReader.StopReadThread();
string command = " "; string command = " ";
while (command.Length > 0) while (command.Length > 0)
{ {
ConsoleIO.WriteLine(string.Empty); ConsoleIO.WriteLine(string.Empty);
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.invaild_config", Config.Main.Advanced.InternalCmdChar.ToLogString())); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_invaild_config, Config.Main.Advanced.InternalCmdChar.ToLogString()));
Translations.WriteLineFormatted("mcc.press_exit"); ConsoleIO.WriteLineFormatted(Translations.mcc_press_exit, acceptnewlines: true);
command = ConsoleInteractive.ConsoleReader.RequestImmediateInput().Trim(); command = ConsoleInteractive.ConsoleReader.RequestImmediateInput().Trim();
if (command.Length > 0) if (command.Length > 0)
{ {
@ -157,12 +163,9 @@ namespace MinecraftClient
} }
else if (command.StartsWith("new")) else if (command.StartsWith("new"))
{ {
(string gameLanguage, string[] langList) = Translations.GetTranslationPriority(); Config.Main.Advanced.Language = Settings.GetDefaultGameLanguage();
Config.Main.Advanced.Language = gameLanguage;
Translations.LoadTranslationFile(langList);
WriteBackSettings(true); WriteBackSettings(true);
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.gen_new_config", settingsIniPath)); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_gen_new_config, settingsIniPath));
return; return;
} }
} }
@ -173,23 +176,11 @@ namespace MinecraftClient
} }
return; return;
} }
else if (needWriteDefaultSetting)
{
(string gameLanguage, string[] langList) = Translations.GetTranslationPriority();
Translations.LoadTranslationFile(langList);
Config.Main.Advanced.Language = gameLanguage;
WriteBackSettings(false);
if (newlyGenerated)
ConsoleIO.WriteLineFormatted(Translations.TryGet("mcc.settings_generated"));
ConsoleIO.WriteLine(Translations.TryGet("mcc.run_with_default_settings"));
}
else else
{ {
//Load external translation file. Should be called AFTER settings loaded //Load external translation file. Should be called AFTER settings loaded
Translations.LoadTranslationFile(Translations.GetTranslationPriority(Config.Main.Advanced.Language));
if (!Config.Main.Advanced.Language.StartsWith("en")) if (!Config.Main.Advanced.Language.StartsWith("en"))
ConsoleIO.WriteLine(Translations.TryGet("mcc.help_us_translate", Settings.TranslationDocUrl)); ConsoleIO.WriteLine(string.Format(Translations.mcc_help_us_translate, Settings.TranslationProjectUrl));
WriteBackSettings(true); // format WriteBackSettings(true); // format
} }
@ -197,7 +188,7 @@ namespace MinecraftClient
if (Settings.CheckUpdate(Config.Head.CurrentVersion, Config.Head.LatestVersion)) if (Settings.CheckUpdate(Config.Head.CurrentVersion, Config.Head.LatestVersion))
{ {
needPromptUpdate = false; needPromptUpdate = false;
ConsoleIO.WriteLineFormatted(Translations.TryGet("mcc.has_update", Settings.GithubReleaseUrl)); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_has_update, Settings.GithubReleaseUrl));
} }
//Other command-line arguments //Other command-line arguments
@ -214,12 +205,6 @@ namespace MinecraftClient
return; return;
} }
if (args.Contains("--trim-translation"))
{
Translations.TrimAllTranslations();
return;
}
if (args.Contains("--generate")) if (args.Contains("--generate"))
{ {
string dataGenerator = ""; string dataGenerator = "";
@ -230,7 +215,7 @@ namespace MinecraftClient
if (argument.StartsWith("--") && !argument.Contains("--generate")) if (argument.StartsWith("--") && !argument.Contains("--generate"))
{ {
if (!argument.Contains('=')) if (!argument.Contains('='))
throw new ArgumentException(Translations.Get("error.setting.argument_syntax", argument)); throw new ArgumentException(string.Format(Translations.error_setting_argument_syntax, argument));
string[] argParts = argument[2..].Split('='); string[] argParts = argument[2..].Split('=');
string argName = argParts[0].Trim(); string argName = argParts[0].Trim();
@ -251,31 +236,31 @@ namespace MinecraftClient
if (string.IsNullOrEmpty(dataGenerator) || !(Settings.ToLowerIfNeed(dataGenerator).Equals("entity") || Settings.ToLowerIfNeed(dataGenerator).Equals("item") || Settings.ToLowerIfNeed(dataGenerator).Equals("block"))) if (string.IsNullOrEmpty(dataGenerator) || !(Settings.ToLowerIfNeed(dataGenerator).Equals("entity") || Settings.ToLowerIfNeed(dataGenerator).Equals("item") || Settings.ToLowerIfNeed(dataGenerator).Equals("block")))
{ {
Console.WriteLine(Translations.Get("error.generator.invalid")); Console.WriteLine(Translations.error_generator_invalid);
Console.WriteLine(Translations.Get("error.usage") + " MinecraftClient.exe --data-generator=<entity|item|block> --data-path=\"<path to resources.json>\""); Console.WriteLine(Translations.error_usage + " MinecraftClient.exe --data-generator=<entity|item|block> --data-path=\"<path to Translations.json>\"");
return; return;
} }
if (string.IsNullOrEmpty(dataPath)) if (string.IsNullOrEmpty(dataPath))
{ {
Console.WriteLine(Translations.Get("error.missing.argument", "--data-path")); Console.WriteLine(string.Format(Translations.error_missing_argument, "--data-path"));
Console.WriteLine(Translations.Get("error.usage") + " MinecraftClient.exe --data-generator=<entity|item|block> --data-path=\"<path to resources.json>\""); Console.WriteLine(Translations.error_usage + " MinecraftClient.exe --data-generator=<entity|item|block> --data-path=\"<path to Translations.json>\"");
return; return;
} }
if (!File.Exists(dataPath)) if (!File.Exists(dataPath))
{ {
Console.WriteLine(Translations.Get("error.generator.path", dataPath)); Console.WriteLine(string.Format(Translations.error_generator_path, dataPath));
return; return;
} }
if (!dataPath.EndsWith(".json")) if (!dataPath.EndsWith(".json"))
{ {
Console.WriteLine(Translations.Get("error.generator.json", dataPath)); Console.WriteLine(string.Format(Translations.error_generator_json, dataPath));
return; return;
} }
Console.WriteLine(Translations.Get("mcc.generator.generating", dataGenerator, dataPath)); Console.WriteLine(string.Format(Translations.mcc_generator_generating, dataGenerator, dataPath));
switch (dataGenerator) switch (dataGenerator)
{ {
@ -292,7 +277,7 @@ namespace MinecraftClient
break; break;
} }
Console.WriteLine(Translations.Get("mcc.generator.done", dataGenerator, dataPath)); Console.WriteLine(string.Format(Translations.mcc_generator_done, dataGenerator, dataPath));
return; return;
} }
@ -328,7 +313,7 @@ namespace MinecraftClient
string latestVersion = string.Format("GitHub build {0}, built on {1}-{2}-{3}", run, year, month, day); string latestVersion = string.Format("GitHub build {0}, built on {1}-{2}-{3}", run, year, month, day);
if (needPromptUpdate) if (needPromptUpdate)
if (Settings.CheckUpdate(Config.Head.CurrentVersion, Config.Head.LatestVersion)) if (Settings.CheckUpdate(Config.Head.CurrentVersion, Config.Head.LatestVersion))
ConsoleIO.WriteLineFormatted(Translations.TryGet("mcc.has_update", Settings.GithubReleaseUrl)); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_has_update, Settings.GithubReleaseUrl));
if (latestVersion != Config.Head.LatestVersion) if (latestVersion != Config.Head.LatestVersion)
{ {
Config.Head.LatestVersion = latestVersion; Config.Head.LatestVersion = latestVersion;
@ -352,7 +337,7 @@ namespace MinecraftClient
//Test line to troubleshoot invisible colors //Test line to troubleshoot invisible colors
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
{ {
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]")); ConsoleIO.WriteLineFormatted(string.Format(Translations.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(); Random random = new();
{ // Test 8 bit color { // Test 8 bit color
StringBuilder sb = new(); StringBuilder sb = new();
@ -366,7 +351,7 @@ namespace MinecraftClient
TerminalColorDepthType.bit_8)).Append(i); TerminalColorDepthType.bit_8)).Append(i);
} }
sb.Append(ColorHelper.GetResetEscapeCode()).Append(']'); sb.Append(ColorHelper.GetResetEscapeCode()).Append(']');
ConsoleIO.WriteLine(Translations.Get("debug.color_test", sb.ToString())); ConsoleIO.WriteLine(string.Format(Translations.debug_color_test, sb.ToString()));
} }
{ // Test 24 bit color { // Test 24 bit color
StringBuilder sb = new(); StringBuilder sb = new();
@ -380,7 +365,7 @@ namespace MinecraftClient
TerminalColorDepthType.bit_24)).Append(i); TerminalColorDepthType.bit_24)).Append(i);
} }
sb.Append(ColorHelper.GetResetEscapeCode()).Append(']'); sb.Append(ColorHelper.GetResetEscapeCode()).Append(']');
ConsoleIO.WriteLine(Translations.Get("debug.color_test", sb.ToString())); ConsoleIO.WriteLine(string.Format(Translations.debug_color_test, sb.ToString()));
} }
} }
@ -389,7 +374,7 @@ namespace MinecraftClient
{ {
bool cacheLoaded = SessionCache.InitializeDiskCache(); bool cacheLoaded = SessionCache.InitializeDiskCache();
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
Translations.WriteLineFormatted(cacheLoaded ? "debug.session_cache_ok" : "debug.session_cache_fail"); ConsoleIO.WriteLineFormatted(cacheLoaded ? Translations.debug_session_cache_ok : Translations.debug_session_cache_fail, acceptnewlines: true);
} }
// Setup exit cleaning code // Setup exit cleaning code
@ -399,11 +384,11 @@ namespace MinecraftClient
bool useBrowser = Config.Main.General.AccountType == LoginType.microsoft && Config.Main.General.Method == LoginMethod.browser; bool useBrowser = Config.Main.General.AccountType == LoginType.microsoft && Config.Main.General.Method == LoginMethod.browser;
if (string.IsNullOrEmpty(InternalConfig.Login) && !useBrowser) if (string.IsNullOrEmpty(InternalConfig.Login) && !useBrowser)
{ {
ConsoleIO.WriteLine(ConsoleIO.BasicIO ? Translations.Get("mcc.login_basic_io") : Translations.Get("mcc.login")); ConsoleIO.WriteLine(ConsoleIO.BasicIO ? Translations.mcc_login_basic_io : Translations.mcc_login);
InternalConfig.Login = ConsoleIO.ReadLine().Trim(); InternalConfig.Login = ConsoleIO.ReadLine().Trim();
if (string.IsNullOrEmpty(InternalConfig.Login)) if (string.IsNullOrEmpty(InternalConfig.Login))
{ {
HandleFailure(Translations.Get("error.login.blocked"), false, ChatBot.DisconnectReason.LoginRejected); HandleFailure(Translations.error_login_blocked, false, ChatBot.DisconnectReason.LoginRejected);
return; return;
} }
} }
@ -427,7 +412,7 @@ namespace MinecraftClient
/// </summary> /// </summary>
private static void RequestPassword() private static void RequestPassword()
{ {
ConsoleIO.WriteLine(ConsoleIO.BasicIO ? Translations.Get("mcc.password_basic_io", InternalConfig.Login) + "\n" : Translations.Get("mcc.password")); ConsoleIO.WriteLine(ConsoleIO.BasicIO ? string.Format(Translations.mcc_password_basic_io, InternalConfig.Login) + "\n" : Translations.mcc_password);
string? password = ConsoleIO.BasicIO ? Console.ReadLine() : ConsoleIO.ReadPassword(); string? password = ConsoleIO.BasicIO ? Console.ReadLine() : ConsoleIO.ReadPassword();
if (password == null || password == string.Empty) { password = "-"; } if (password == null || password == string.Empty) { password = "-"; }
InternalConfig.Password = password; InternalConfig.Password = password;
@ -448,7 +433,7 @@ namespace MinecraftClient
string loginLower = Settings.ToLowerIfNeed(InternalConfig.Login); string loginLower = Settings.ToLowerIfNeed(InternalConfig.Login);
if (InternalConfig.Password == "-") if (InternalConfig.Password == "-")
{ {
Translations.WriteLineFormatted("mcc.offline"); ConsoleIO.WriteLineFormatted(Translations.mcc_offline, acceptnewlines: true);
result = ProtocolHandler.LoginResult.Success; result = ProtocolHandler.LoginResult.Success;
session.PlayerID = "0"; session.PlayerID = "0";
session.PlayerName = InternalConfig.Username; session.PlayerName = InternalConfig.Username;
@ -462,7 +447,7 @@ namespace MinecraftClient
result = ProtocolHandler.GetTokenValidation(session); result = ProtocolHandler.GetTokenValidation(session);
if (result != ProtocolHandler.LoginResult.Success) if (result != ProtocolHandler.LoginResult.Success)
{ {
Translations.WriteLineFormatted("mcc.session_invalid"); ConsoleIO.WriteLineFormatted(Translations.mcc_session_invalid, acceptnewlines: true);
// Try to refresh access token // Try to refresh access token
if (!string.IsNullOrWhiteSpace(session.RefreshToken)) if (!string.IsNullOrWhiteSpace(session.RefreshToken))
{ {
@ -482,12 +467,12 @@ namespace MinecraftClient
&& Config.Main.General.AccountType == LoginType.mojang) && Config.Main.General.AccountType == LoginType.mojang)
RequestPassword(); RequestPassword();
} }
else ConsoleIO.WriteLineFormatted(Translations.Get("mcc.session_valid", session.PlayerName)); else ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_session_valid, session.PlayerName));
} }
if (result != ProtocolHandler.LoginResult.Success) if (result != ProtocolHandler.LoginResult.Success)
{ {
Translations.WriteLine("mcc.connecting", Config.Main.General.AccountType == LoginType.mojang ? "Minecraft.net" : "Microsoft"); ConsoleIO.WriteLine(string.Format(Translations.mcc_connecting, Config.Main.General.AccountType == LoginType.mojang ? "Minecraft.net" : "Microsoft"));
result = ProtocolHandler.GetLogin(InternalConfig.Login, InternalConfig.Password, Config.Main.General.AccountType, out session); result = ProtocolHandler.GetLogin(InternalConfig.Login, InternalConfig.Password, Config.Main.General.AccountType, out session);
} }
@ -510,7 +495,7 @@ namespace MinecraftClient
ConsoleIcon.SetPlayerIconAsync(InternalConfig.Username); ConsoleIcon.SetPlayerIconAsync(InternalConfig.Username);
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
Translations.WriteLine("debug.session_id", session.ID); ConsoleIO.WriteLine(string.Format(Translations.debug_session_id, session.ID));
List<string> availableWorlds = new(); List<string> availableWorlds = new();
if (Config.Main.Advanced.MinecraftRealms && !String.IsNullOrEmpty(session.ID)) if (Config.Main.Advanced.MinecraftRealms && !String.IsNullOrEmpty(session.ID))
@ -518,7 +503,7 @@ namespace MinecraftClient
if (InternalConfig.ServerIP == string.Empty) if (InternalConfig.ServerIP == string.Empty)
{ {
Translations.Write("mcc.ip"); ConsoleIO.WriteLine(Translations.mcc_ip);
string addressInput = ConsoleIO.ReadLine(); string addressInput = ConsoleIO.ReadLine();
if (addressInput.StartsWith("realms:")) if (addressInput.StartsWith("realms:"))
{ {
@ -526,7 +511,7 @@ namespace MinecraftClient
{ {
if (availableWorlds.Count == 0) if (availableWorlds.Count == 0)
{ {
HandleFailure(Translations.Get("error.realms.access_denied"), false, ChatBot.DisconnectReason.LoginRejected); HandleFailure(Translations.error_realms_access_denied, false, ChatBot.DisconnectReason.LoginRejected);
return; return;
} }
string worldId = addressInput.Split(':')[1]; string worldId = addressInput.Split(':')[1];
@ -543,19 +528,19 @@ namespace MinecraftClient
} }
else else
{ {
HandleFailure(Translations.Get("error.realms.server_unavailable"), false, ChatBot.DisconnectReason.LoginRejected); HandleFailure(Translations.error_realms_server_unavailable, false, ChatBot.DisconnectReason.LoginRejected);
return; return;
} }
} }
else else
{ {
HandleFailure(Translations.Get("error.realms.server_id"), false, ChatBot.DisconnectReason.LoginRejected); HandleFailure(Translations.error_realms_server_id, false, ChatBot.DisconnectReason.LoginRejected);
return; return;
} }
} }
else else
{ {
HandleFailure(Translations.Get("error.realms.disabled"), false, null); HandleFailure(Translations.error_realms_disabled, false, null);
return; return;
} }
} }
@ -571,9 +556,9 @@ namespace MinecraftClient
protocolversion = Protocol.ProtocolHandler.MCVer2ProtocolVersion(InternalConfig.MinecraftVersion); protocolversion = Protocol.ProtocolHandler.MCVer2ProtocolVersion(InternalConfig.MinecraftVersion);
if (protocolversion != 0) if (protocolversion != 0)
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.use_version", InternalConfig.MinecraftVersion, protocolversion)); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_use_version, InternalConfig.MinecraftVersion, protocolversion));
else else
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.unknown_version", InternalConfig.MinecraftVersion)); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_unknown_version, InternalConfig.MinecraftVersion));
if (useMcVersionOnce) if (useMcVersionOnce)
{ {
@ -587,11 +572,12 @@ namespace MinecraftClient
((Config.Main.Advanced.EnableForge == ForgeConfigType.force) && !ProtocolHandler.ProtocolMayForceForge(protocolversion)))) ((Config.Main.Advanced.EnableForge == ForgeConfigType.force) && !ProtocolHandler.ProtocolMayForceForge(protocolversion))))
{ {
if (protocolversion != 0) if (protocolversion != 0)
Translations.WriteLine("mcc.forge"); ConsoleIO.WriteLine(Translations.mcc_forge);
else Translations.WriteLine("mcc.retrieve"); else
ConsoleIO.WriteLine(Translations.mcc_retrieve);
if (!ProtocolHandler.GetServerInfo(InternalConfig.ServerIP, InternalConfig.ServerPort, ref protocolversion, ref forgeInfo)) if (!ProtocolHandler.GetServerInfo(InternalConfig.ServerIP, InternalConfig.ServerPort, ref protocolversion, ref forgeInfo))
{ {
HandleFailure(Translations.Get("error.ping"), true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost); HandleFailure(Translations.error_ping, true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost);
return; return;
} }
} }
@ -604,21 +590,21 @@ namespace MinecraftClient
{ {
bool cacheKeyLoaded = KeysCache.InitializeDiskCache(); bool cacheKeyLoaded = KeysCache.InitializeDiskCache();
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
Translations.WriteLineFormatted(cacheKeyLoaded ? "debug.keys_cache_ok" : "debug.keys_cache_fail"); ConsoleIO.WriteLineFormatted(cacheKeyLoaded ? Translations.debug_keys_cache_ok : Translations.debug_keys_cache_fail, acceptnewlines: true);
} }
if (Config.Main.Advanced.ProfileKeyCache != CacheType.none && KeysCache.Contains(loginLower)) if (Config.Main.Advanced.ProfileKeyCache != CacheType.none && KeysCache.Contains(loginLower))
{ {
playerKeyPair = KeysCache.Get(loginLower); playerKeyPair = KeysCache.Get(loginLower);
if (playerKeyPair.NeedRefresh()) if (playerKeyPair.NeedRefresh())
Translations.WriteLineFormatted("mcc.profile_key_invalid"); ConsoleIO.WriteLineFormatted(Translations.mcc_profile_key_invalid, acceptnewlines: true);
else else
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.profile_key_valid", session.PlayerName)); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_profile_key_valid, session.PlayerName));
} }
if (playerKeyPair == null || playerKeyPair.NeedRefresh()) if (playerKeyPair == null || playerKeyPair.NeedRefresh())
{ {
Translations.WriteLineFormatted("mcc.fetching_key"); ConsoleIO.WriteLineFormatted(Translations.mcc_fetching_key, acceptnewlines: true);
playerKeyPair = KeyUtils.GetNewProfileKeys(session.ID); playerKeyPair = KeyUtils.GetNewProfileKeys(session.ID);
if (Config.Main.Advanced.ProfileKeyCache != CacheType.none && playerKeyPair != null) if (Config.Main.Advanced.ProfileKeyCache != CacheType.none && playerKeyPair != null)
{ {
@ -632,12 +618,12 @@ namespace MinecraftClient
{ {
if (ProtocolHandler.ProtocolMayForceForge(protocolversion)) if (ProtocolHandler.ProtocolMayForceForge(protocolversion))
{ {
Translations.WriteLine("mcc.forgeforce"); ConsoleIO.WriteLine(Translations.mcc_forgeforce);
forgeInfo = ProtocolHandler.ProtocolForceForge(protocolversion); forgeInfo = ProtocolHandler.ProtocolForceForge(protocolversion);
} }
else else
{ {
HandleFailure(Translations.Get("error.forgeforce"), true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost); HandleFailure(Translations.error_forgeforce, true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost);
return; return;
} }
} }
@ -656,31 +642,31 @@ namespace MinecraftClient
} }
catch (NotSupportedException) catch (NotSupportedException)
{ {
HandleFailure(Translations.Get("error.unsupported"), true); HandleFailure(Translations.error_unsupported, true);
} }
catch (Exception) { } catch (Exception) { }
} }
else HandleFailure(Translations.Get("error.determine"), true); else HandleFailure(Translations.error_determine, true);
} }
else else
{ {
string failureMessage = Translations.Get("error.login"); string failureMessage = Translations.error_login;
string failureReason = ""; string failureReason = string.Empty;
failureReason = result switch failureReason = result switch
{ {
#pragma warning disable format // @formatter:off #pragma warning disable format // @formatter:off
ProtocolHandler.LoginResult.AccountMigrated => "error.login.migrated", ProtocolHandler.LoginResult.AccountMigrated => Translations.error_login_migrated,
ProtocolHandler.LoginResult.ServiceUnavailable => "error.login.server", ProtocolHandler.LoginResult.ServiceUnavailable => Translations.error_login_server,
ProtocolHandler.LoginResult.WrongPassword => "error.login.blocked", ProtocolHandler.LoginResult.WrongPassword => Translations.error_login_blocked,
ProtocolHandler.LoginResult.InvalidResponse => "error.login.response", ProtocolHandler.LoginResult.InvalidResponse => Translations.error_login_response,
ProtocolHandler.LoginResult.NotPremium => "error.login.premium", ProtocolHandler.LoginResult.NotPremium => Translations.error_login_premium,
ProtocolHandler.LoginResult.OtherError => "error.login.network", ProtocolHandler.LoginResult.OtherError => Translations.error_login_network,
ProtocolHandler.LoginResult.SSLError => "error.login.ssl", ProtocolHandler.LoginResult.SSLError => Translations.error_login_ssl,
ProtocolHandler.LoginResult.UserCancel => "error.login.cancel", ProtocolHandler.LoginResult.UserCancel => Translations.error_login_cancel,
_ => "error.login.unknown", _ => Translations.error_login_unknown,
#pragma warning restore format // @formatter:on #pragma warning restore format // @formatter:on
}; };
failureMessage += Translations.Get(failureReason); failureMessage += failureReason;
HandleFailure(failureMessage, false, ChatBot.DisconnectReason.LoginRejected); HandleFailure(failureMessage, false, ChatBot.DisconnectReason.LoginRejected);
} }
} }
@ -691,7 +677,7 @@ namespace MinecraftClient
public static void ReloadSettings() public static void ReloadSettings()
{ {
if(Settings.LoadFromFile(settingsIniPath).Item1) if(Settings.LoadFromFile(settingsIniPath).Item1)
ConsoleIO.WriteLine(Translations.TryGet("config.load", settingsIniPath)); ConsoleIO.WriteLine(string.Format(Translations.config_load, settingsIniPath));
} }
/// <summary> /// <summary>
@ -715,10 +701,10 @@ namespace MinecraftClient
if (offlinePrompt != null) { offlinePrompt.Item2.Cancel(); offlinePrompt.Item1.Join(); offlinePrompt = null; ConsoleIO.Reset(); } if (offlinePrompt != null) { offlinePrompt.Item2.Cancel(); offlinePrompt.Item1.Join(); offlinePrompt = null; ConsoleIO.Reset(); }
if (delaySeconds > 0) if (delaySeconds > 0)
{ {
Translations.WriteLine("mcc.restart_delay", delaySeconds); ConsoleIO.WriteLine(string.Format(Translations.mcc_restart_delay, delaySeconds));
System.Threading.Thread.Sleep(delaySeconds * 1000); Thread.Sleep(delaySeconds * 1000);
} }
Translations.WriteLine("mcc.restart"); ConsoleIO.WriteLine(Translations.mcc_restart);
ReloadSettings(); ReloadSettings();
InitializeClient(); InitializeClient();
})).Start(); })).Start();
@ -727,7 +713,7 @@ namespace MinecraftClient
public static void DoExit(int exitcode = 0) public static void DoExit(int exitcode = 0)
{ {
WriteBackSettings(true); WriteBackSettings(true);
ConsoleIO.WriteLineFormatted(Translations.TryGet("config.saving", settingsIniPath)); ConsoleIO.WriteLineFormatted(string.Format(Translations.config_saving, settingsIniPath));
if (client != null) { client.Disconnect(); ConsoleIO.Reset(); } if (client != null) { client.Disconnect(); ConsoleIO.Reset(); }
if (offlinePrompt != null) { offlinePrompt.Item2.Cancel(); offlinePrompt.Item1.Join(); offlinePrompt = null; ConsoleIO.Reset(); } if (offlinePrompt != null) { offlinePrompt.Item2.Cancel(); offlinePrompt.Item1.Join(); offlinePrompt = null; ConsoleIO.Reset(); }
@ -770,7 +756,7 @@ namespace MinecraftClient
{ {
if (versionError) if (versionError)
{ {
Translations.Write("mcc.server_version"); ConsoleIO.WriteLine(Translations.mcc_server_version);
InternalConfig.MinecraftVersion = ConsoleInteractive.ConsoleReader.RequestImmediateInput(); InternalConfig.MinecraftVersion = ConsoleInteractive.ConsoleReader.RequestImmediateInput();
if (InternalConfig.MinecraftVersion != "") if (InternalConfig.MinecraftVersion != "")
{ {
@ -790,8 +776,8 @@ namespace MinecraftClient
bool exitThread = false; bool exitThread = false;
string command = " "; string command = " ";
ConsoleIO.WriteLine(string.Empty); ConsoleIO.WriteLine(string.Empty);
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.disconnected", Config.Main.Advanced.InternalCmdChar.ToLogString())); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_disconnected, Config.Main.Advanced.InternalCmdChar.ToLogString()));
Translations.WriteLineFormatted("mcc.press_exit"); ConsoleIO.WriteLineFormatted(Translations.mcc_press_exit, acceptnewlines: true);
while (!cancellationTokenSource.IsCancellationRequested) while (!cancellationTokenSource.IsCancellationRequested)
{ {
@ -844,7 +830,7 @@ namespace MinecraftClient
new Commands.Connect().GetCmdDescTranslated()); new Commands.Connect().GetCmdDescTranslated());
} }
else else
ConsoleIO.WriteLineFormatted(Translations.Get("icmd.unknown", command.Split(' ')[0])); ConsoleIO.WriteLineFormatted(string.Format(Translations.icmd_unknown, command.Split(' ')[0]));
if (message != "") if (message != "")
ConsoleIO.WriteLineFormatted("§8MCC: " + message); ConsoleIO.WriteLineFormatted("§8MCC: " + message);
@ -890,15 +876,6 @@ namespace MinecraftClient
return assembly.GetTypes().Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)).ToArray(); return assembly.GetTypes().Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)).ToArray();
} }
public static void InitCulture()
{
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
CultureInfo.DefaultThreadCurrentCulture = culture;
CultureInfo.DefaultThreadCurrentUICulture = culture;
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
}
/// <summary> /// <summary>
/// Static initialization of build information, read from assembly information /// Static initialization of build information, read from assembly information
/// </summary> /// </summary>

View file

@ -47,7 +47,7 @@ namespace MinecraftClient.Protocol.Handlers.Forge
Version = fmlVersion; Version = fmlVersion;
break; break;
default: default:
throw new InvalidOperationException(Translations.Get("error.forgeforce")); throw new InvalidOperationException(Translations.error_forgeforce);
} }
} }

View file

@ -48,7 +48,7 @@ namespace MinecraftClient.Protocol.Handlers
{ {
PacketTypePalette p; PacketTypePalette p;
if (protocol > Protocol18Handler.MC_1_19_2_Version) if (protocol > Protocol18Handler.MC_1_19_2_Version)
throw new NotImplementedException(Translations.Get("exception.palette.packet")); throw new NotImplementedException(Translations.exception_palette_packet);
if (protocol <= Protocol18Handler.MC_1_8_Version) if (protocol <= Protocol18Handler.MC_1_8_Version)
p = new PacketPalette17(); p = new PacketPalette17();

View file

@ -43,19 +43,19 @@ namespace MinecraftClient.Protocol.Handlers
if (Handler.GetTerrainEnabled()) if (Handler.GetTerrainEnabled())
{ {
Translations.WriteLineFormatted("extra.terrainandmovement_disabled"); ConsoleIO.WriteLineFormatted(Translations.extra_terrainandmovement_disabled, acceptnewlines: true);
Handler.SetTerrainEnabled(false); Handler.SetTerrainEnabled(false);
} }
if (handler.GetInventoryEnabled()) if (handler.GetInventoryEnabled())
{ {
Translations.WriteLineFormatted("extra.inventory_disabled"); ConsoleIO.WriteLineFormatted(Translations.extra_inventory_disabled, acceptnewlines: true);
handler.SetInventoryEnabled(false); handler.SetInventoryEnabled(false);
} }
if (handler.GetEntityHandlingEnabled()) if (handler.GetEntityHandlingEnabled())
{ {
Translations.WriteLineFormatted("extra.entity_disabled"); ConsoleIO.WriteLineFormatted(Translations.extra_entity_disabled, acceptnewlines: true);
handler.SetEntityHandlingEnabled(false); handler.SetEntityHandlingEnabled(false);
} }
} }
@ -184,7 +184,7 @@ namespace MinecraftClient.Protocol.Handlers
case 0x84: ReadData(11); nbr = ReadNextShort(); if (nbr > 0) { ReadData(nbr); } break; case 0x84: ReadData(11); nbr = ReadNextShort(); if (nbr > 0) { ReadData(nbr); } break;
case 0x85: if (protocolversion >= 74) { ReadData(13); } break; case 0x85: if (protocolversion >= 74) { ReadData(13); } break;
case 0xC8: case 0xC8:
if (ReadNextInt() == 2022) { Translations.WriteLogLine("mcc.player_dead"); } if (ReadNextInt() == 2022) { ConsoleIO.WriteLogLine(Translations.mcc_player_dead, acceptnewlines: true); }
if (protocolversion >= 72) { ReadData(4); } else ReadData(1); if (protocolversion >= 72) { ReadData(4); } else ReadData(1);
break; break;
case 0xC9: case 0xC9:
@ -494,15 +494,15 @@ namespace MinecraftClient.Protocol.Handlers
byte[] token = ReadNextByteArray(); byte[] token = ReadNextByteArray();
if (serverID == "-") if (serverID == "-")
Translations.WriteLineFormatted("mcc.server_offline"); ConsoleIO.WriteLineFormatted(Translations.mcc_server_offline, acceptnewlines: true);
else if (Settings.Config.Logging.DebugMessages) else if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.handshake", serverID)); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_handshake, serverID));
return StartEncryption(uuid, username, sessionID, token, serverID, PublicServerkey, session); return StartEncryption(uuid, username, sessionID, token, serverID, PublicServerkey, session);
} }
else else
{ {
Translations.WriteLineFormatted("error.invalid_response"); ConsoleIO.WriteLineFormatted(Translations.error_invalid_response, acceptnewlines: true);
return false; return false;
} }
} }
@ -513,11 +513,11 @@ namespace MinecraftClient.Protocol.Handlers
byte[] secretKey = CryptoHandler.ClientAESPrivateKey ?? CryptoHandler.GenerateAESPrivateKey(); byte[] secretKey = CryptoHandler.ClientAESPrivateKey ?? CryptoHandler.GenerateAESPrivateKey();
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("debug.crypto"); ConsoleIO.WriteLineFormatted(Translations.debug_crypto, acceptnewlines: true);
if (serverIDhash != "-") if (serverIDhash != "-")
{ {
Translations.WriteLine("mcc.session"); ConsoleIO.WriteLine(Translations.mcc_session);
string serverHash = CryptoHandler.GetServerHash(serverIDhash, serverPublicKey, secretKey); string serverHash = CryptoHandler.GetServerHash(serverIDhash, serverPublicKey, secretKey);
bool needCheckSession = true; bool needCheckSession = true;
@ -539,7 +539,7 @@ namespace MinecraftClient.Protocol.Handlers
} }
else else
{ {
handler.OnConnectionLost(ChatBot.DisconnectReason.LoginRejected, Translations.Get("mcc.session_fail")); handler.OnConnectionLost(ChatBot.DisconnectReason.LoginRejected, Translations.mcc_session_fail);
return false; return false;
} }
} }
@ -578,7 +578,7 @@ namespace MinecraftClient.Protocol.Handlers
} }
else else
{ {
Translations.WriteLineFormatted("error.invalid_encrypt"); ConsoleIO.WriteLineFormatted(Translations.error_invalid_encrypt, acceptnewlines: true);
return false; return false;
} }
} }
@ -891,7 +891,7 @@ namespace MinecraftClient.Protocol.Handlers
version = "B1.8.1 - 1.3.2"; version = "B1.8.1 - 1.3.2";
} }
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.use_version", version, protocolversion)); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_use_version, version, protocolversion));
return true; return true;
} }

View file

@ -107,24 +107,24 @@ namespace MinecraftClient.Protocol.Handlers
if (handler.GetTerrainEnabled() && protocolVersion > MC_1_19_2_Version) if (handler.GetTerrainEnabled() && protocolVersion > MC_1_19_2_Version)
{ {
log.Error(Translations.Get("extra.terrainandmovement_disabled")); log.Error(Translations.extra_terrainandmovement_disabled);
handler.SetTerrainEnabled(false); handler.SetTerrainEnabled(false);
} }
if (handler.GetInventoryEnabled() && (protocolVersion < MC_1_10_Version || protocolVersion > MC_1_19_2_Version)) if (handler.GetInventoryEnabled() && (protocolVersion < MC_1_10_Version || protocolVersion > MC_1_19_2_Version))
{ {
log.Error(Translations.Get("extra.inventory_disabled")); log.Error(Translations.extra_inventory_disabled);
handler.SetInventoryEnabled(false); handler.SetInventoryEnabled(false);
} }
if (handler.GetEntityHandlingEnabled() && (protocolVersion < MC_1_10_Version || protocolVersion > MC_1_19_2_Version)) if (handler.GetEntityHandlingEnabled() && (protocolVersion < MC_1_10_Version || protocolVersion > MC_1_19_2_Version))
{ {
log.Error(Translations.Get("extra.entity_disabled")); log.Error(Translations.extra_entity_disabled);
handler.SetEntityHandlingEnabled(false); handler.SetEntityHandlingEnabled(false);
} }
// Block palette // Block palette
if (protocolVersion > MC_1_19_2_Version && handler.GetTerrainEnabled()) if (protocolVersion > MC_1_19_2_Version && handler.GetTerrainEnabled())
throw new NotImplementedException(Translations.Get("exception.palette.block")); throw new NotImplementedException(Translations.exception_palette_block);
if (protocolVersion >= MC_1_19_Version) if (protocolVersion >= MC_1_19_Version)
Block.Palette = new Palette119(); Block.Palette = new Palette119();
@ -143,7 +143,7 @@ namespace MinecraftClient.Protocol.Handlers
// Entity palette // Entity palette
if (protocolVersion > MC_1_19_2_Version && handler.GetEntityHandlingEnabled()) if (protocolVersion > MC_1_19_2_Version && handler.GetEntityHandlingEnabled())
throw new NotImplementedException(Translations.Get("exception.palette.entity")); throw new NotImplementedException(Translations.exception_palette_entity);
if (protocolVersion >= MC_1_19_Version) if (protocolVersion >= MC_1_19_Version)
entityPalette = new EntityPalette119(); entityPalette = new EntityPalette119();
@ -164,7 +164,7 @@ namespace MinecraftClient.Protocol.Handlers
// Item palette // Item palette
if (protocolVersion > MC_1_19_2_Version && handler.GetInventoryEnabled()) if (protocolVersion > MC_1_19_2_Version && handler.GetInventoryEnabled())
throw new NotImplementedException(Translations.Get("exception.palette.item")); throw new NotImplementedException(Translations.exception_palette_item);
if (protocolVersion >= MC_1_19_Version) if (protocolVersion >= MC_1_19_Version)
itemPalette = new ItemPalette119(); itemPalette = new ItemPalette119();
@ -587,7 +587,7 @@ namespace MinecraftClient.Protocol.Handlers
bool lastVerifyResult = player.IsMessageChainLegal(); bool lastVerifyResult = player.IsMessageChainLegal();
verifyResult = player.VerifyMessage(signedChat, timestamp, salt, ref headerSignature, ref precedingSignature, lastSeenMessages); verifyResult = player.VerifyMessage(signedChat, timestamp, salt, ref headerSignature, ref precedingSignature, lastSeenMessages);
if (lastVerifyResult && !verifyResult) if (lastVerifyResult && !verifyResult)
log.Warn(Translations.Get("chat.message_chain_broken", senderDisplayName)); log.Warn(string.Format(Translations.chat_message_chain_broken, senderDisplayName));
} }
} }
@ -649,7 +649,7 @@ namespace MinecraftClient.Protocol.Handlers
bool lastVerifyResult = player.IsMessageChainLegal(); bool lastVerifyResult = player.IsMessageChainLegal();
verifyResult = player.VerifyMessageHead(ref precedingSignature, ref headerSignature, ref bodyDigest); verifyResult = player.VerifyMessageHead(ref precedingSignature, ref headerSignature, ref bodyDigest);
if (lastVerifyResult && !verifyResult) if (lastVerifyResult && !verifyResult)
log.Warn(Translations.Get("chat.message_chain_broken", player.Name)); log.Warn(string.Format(Translations.chat_message_chain_broken, player.Name));
} }
} }
} }
@ -1647,7 +1647,7 @@ namespace MinecraftClient.Protocol.Handlers
int healthField; // See https://wiki.vg/Entity_metadata#Living_Entity int healthField; // See https://wiki.vg/Entity_metadata#Living_Entity
if (protocolVersion > MC_1_19_2_Version) if (protocolVersion > MC_1_19_2_Version)
throw new NotImplementedException(Translations.Get("exception.palette.healthfield")); throw new NotImplementedException(Translations.exception_palette_healthfield);
else if (protocolVersion >= MC_1_17_Version) // 1.17 and above else if (protocolVersion >= MC_1_17_Version) // 1.17 and above
healthField = 9; healthField = 9;
else if (protocolVersion >= MC_1_14_Version) // 1.14 and above else if (protocolVersion >= MC_1_14_Version) // 1.14 and above
@ -1655,7 +1655,7 @@ namespace MinecraftClient.Protocol.Handlers
else if (protocolVersion >= MC_1_10_Version) // 1.10 and above else if (protocolVersion >= MC_1_10_Version) // 1.10 and above
healthField = 7; healthField = 7;
else else
throw new NotImplementedException(Translations.Get("exception.palette.healthfield")); throw new NotImplementedException(Translations.exception_palette_healthfield);
if (metadata.TryGetValue(healthField, out object? healthObj) && healthObj != null && healthObj.GetType() == typeof(float)) if (metadata.TryGetValue(healthField, out object? healthObj) && healthObj != null && healthObj.GetType() == typeof(float))
handler.OnEntityHealth(EntityID, (float)healthObj); handler.OnEntityHealth(EntityID, (float)healthObj);
@ -1788,7 +1788,7 @@ namespace MinecraftClient.Protocol.Handlers
if (innerException is ThreadAbortException || innerException is SocketException || innerException.InnerException is SocketException) if (innerException is ThreadAbortException || innerException is SocketException || innerException.InnerException is SocketException)
throw; //Thread abort or Connection lost rather than invalid data throw; //Thread abort or Connection lost rather than invalid data
throw new System.IO.InvalidDataException( throw new System.IO.InvalidDataException(
Translations.Get("exception.packet_process", string.Format(Translations.exception_packet_process,
packetPalette.GetIncommingTypeById(packetID), packetPalette.GetIncommingTypeById(packetID),
packetID, packetID,
protocolVersion, protocolVersion,
@ -1953,12 +1953,12 @@ namespace MinecraftClient.Protocol.Handlers
} }
else if (packetID == 0x02) //Login successful else if (packetID == 0x02) //Login successful
{ {
log.Info(Translations.Get("mcc.server_offline")); log.Info(Translations.mcc_server_offline);
login_phase = false; login_phase = false;
if (!pForge.CompleteForgeHandshake()) if (!pForge.CompleteForgeHandshake())
{ {
log.Error(Translations.Get("error.forge")); log.Error(Translations.error_forge);
return false; return false;
} }
@ -1978,11 +1978,11 @@ namespace MinecraftClient.Protocol.Handlers
RSACryptoServiceProvider RSAService = CryptoHandler.DecodeRSAPublicKey(serverPublicKey)!; RSACryptoServiceProvider RSAService = CryptoHandler.DecodeRSAPublicKey(serverPublicKey)!;
byte[] secretKey = CryptoHandler.ClientAESPrivateKey ?? CryptoHandler.GenerateAESPrivateKey(); byte[] secretKey = CryptoHandler.ClientAESPrivateKey ?? CryptoHandler.GenerateAESPrivateKey();
log.Debug(Translations.Get("debug.crypto")); log.Debug(Translations.debug_crypto);
if (serverIDhash != "-") if (serverIDhash != "-")
{ {
log.Info(Translations.Get("mcc.session")); log.Info(Translations.mcc_session);
bool needCheckSession = true; bool needCheckSession = true;
if (session.ServerPublicKey != null && session.SessionPreCheckTask != null if (session.ServerPublicKey != null && session.SessionPreCheckTask != null
@ -2005,7 +2005,7 @@ namespace MinecraftClient.Protocol.Handlers
} }
else else
{ {
handler.OnConnectionLost(ChatBot.DisconnectReason.LoginRejected, Translations.Get("mcc.session_fail")); handler.OnConnectionLost(ChatBot.DisconnectReason.LoginRejected, Translations.mcc_session_fail);
return false; return false;
} }
} }
@ -2047,7 +2047,7 @@ namespace MinecraftClient.Protocol.Handlers
(int packetID, Queue<byte> packetData) = ReadNextPacket(); (int packetID, Queue<byte> packetData) = ReadNextPacket();
if (packetID < 0 || loopPrevention-- < 0) // Failed to read packet or too many iterations (issue #1150) if (packetID < 0 || loopPrevention-- < 0) // Failed to read packet or too many iterations (issue #1150)
{ {
handler.OnConnectionLost(ChatBot.DisconnectReason.ConnectionLost, Translations.Get("error.invalid_encrypt")); handler.OnConnectionLost(ChatBot.DisconnectReason.ConnectionLost, Translations.error_invalid_encrypt);
return false; return false;
} }
else if (packetID == 0x00) //Login rejected else if (packetID == 0x00) //Login rejected
@ -2083,7 +2083,7 @@ namespace MinecraftClient.Protocol.Handlers
if (!pForge.CompleteForgeHandshake()) if (!pForge.CompleteForgeHandshake())
{ {
log.Error(Translations.Get("error.forge_encrypt")); log.Error(Translations.error_forge_encrypt);
return false; return false;
} }
@ -2221,7 +2221,7 @@ namespace MinecraftClient.Protocol.Handlers
// Check for forge on the server. // Check for forge on the server.
Protocol18Forge.ServerInfoCheckForge(jsonData, ref forgeInfo); Protocol18Forge.ServerInfoCheckForge(jsonData, ref forgeInfo);
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.server_protocol", version, protocolVersion + (forgeInfo != null ? Translations.Get("mcc.with_forge") : ""))); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_server_protocol, version, protocolVersion + (forgeInfo != null ? Translations.mcc_with_forge : "")));
return true; return true;
} }

View file

@ -131,7 +131,7 @@ namespace MinecraftClient.Protocol.Handlers
byte fmlProtocolVersion = dataTypes.ReadNextByte(packetData); byte fmlProtocolVersion = dataTypes.ReadNextByte(packetData);
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("forge.version", fmlProtocolVersion)); ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_version, fmlProtocolVersion));
if (fmlProtocolVersion >= 1) if (fmlProtocolVersion >= 1)
currentDimension = dataTypes.ReadNextInt(packetData); currentDimension = dataTypes.ReadNextInt(packetData);
@ -141,7 +141,7 @@ namespace MinecraftClient.Protocol.Handlers
// Then tell the server that we're running the same mods. // Then tell the server that we're running the same mods.
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("forge.send_mod"); ConsoleIO.WriteLineFormatted(Translations.forge_send_mod, acceptnewlines: true);
byte[][] mods = new byte[forgeInfo.Mods.Count][]; byte[][] mods = new byte[forgeInfo.Mods.Count][];
for (int i = 0; i < forgeInfo.Mods.Count; i++) for (int i = 0; i < forgeInfo.Mods.Count; i++)
{ {
@ -161,7 +161,7 @@ namespace MinecraftClient.Protocol.Handlers
Thread.Sleep(2000); Thread.Sleep(2000);
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("forge.accept"); ConsoleIO.WriteLineFormatted(Translations.forge_accept, acceptnewlines: true);
// Tell the server that yes, we are OK with the mods it has // Tell the server that yes, we are OK with the mods it has
// even though we don't actually care what mods it has. // even though we don't actually care what mods it has.
@ -183,7 +183,7 @@ namespace MinecraftClient.Protocol.Handlers
int registrySize = dataTypes.ReadNextVarInt(packetData); int registrySize = dataTypes.ReadNextVarInt(packetData);
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("forge.registry", registrySize)); ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_registry, registrySize));
fmlHandshakeState = FMLHandshakeClientState.PENDINGCOMPLETE; fmlHandshakeState = FMLHandshakeClientState.PENDINGCOMPLETE;
} }
@ -195,7 +195,7 @@ namespace MinecraftClient.Protocol.Handlers
string registryName = dataTypes.ReadNextString(packetData); string registryName = dataTypes.ReadNextString(packetData);
int registrySize = dataTypes.ReadNextVarInt(packetData); int registrySize = dataTypes.ReadNextVarInt(packetData);
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("forge.registry_2", registryName, registrySize)); ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_registry_2, registryName, registrySize));
if (!hasNextRegistry) if (!hasNextRegistry)
fmlHandshakeState = FMLHandshakeClientState.PENDINGCOMPLETE; fmlHandshakeState = FMLHandshakeClientState.PENDINGCOMPLETE;
} }
@ -207,7 +207,7 @@ namespace MinecraftClient.Protocol.Handlers
if (discriminator != FMLHandshakeDiscriminator.HandshakeAck) if (discriminator != FMLHandshakeDiscriminator.HandshakeAck)
return false; return false;
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("forge.accept_registry"); ConsoleIO.WriteLineFormatted(Translations.forge_accept_registry, acceptnewlines: true);
SendForgeHandshakePacket(FMLHandshakeDiscriminator.HandshakeAck, SendForgeHandshakePacket(FMLHandshakeDiscriminator.HandshakeAck,
new byte[] { (byte)FMLHandshakeClientState.PENDINGCOMPLETE }); new byte[] { (byte)FMLHandshakeClientState.PENDINGCOMPLETE });
fmlHandshakeState = FMLHandshakeClientState.COMPLETE; fmlHandshakeState = FMLHandshakeClientState.COMPLETE;
@ -221,7 +221,7 @@ namespace MinecraftClient.Protocol.Handlers
SendForgeHandshakePacket(FMLHandshakeDiscriminator.HandshakeAck, SendForgeHandshakePacket(FMLHandshakeDiscriminator.HandshakeAck,
new byte[] { (byte)FMLHandshakeClientState.COMPLETE }); new byte[] { (byte)FMLHandshakeClientState.COMPLETE });
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
Translations.WriteLine("forge.complete"); ConsoleIO.WriteLine(Translations.forge_complete);
fmlHandshakeState = FMLHandshakeClientState.DONE; fmlHandshakeState = FMLHandshakeClientState.DONE;
return true; return true;
} }
@ -301,7 +301,7 @@ namespace MinecraftClient.Protocol.Handlers
// [1]: Version is usually set to "FML2" for FML stuff and "1" for mods // [1]: Version is usually set to "FML2" for FML stuff and "1" for mods
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("forge.fml2.mod"); ConsoleIO.WriteLineFormatted(Translations.forge_fml2_mod, acceptnewlines: true);
List<string> mods = new(); List<string> mods = new();
int modCount = dataTypes.ReadNextVarInt(packetData); int modCount = dataTypes.ReadNextVarInt(packetData);
@ -333,7 +333,7 @@ namespace MinecraftClient.Protocol.Handlers
// In MCC, we just want to send a valid response so we'll reply back with data collected from the server. // In MCC, we just want to send a valid response so we'll reply back with data collected from the server.
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("forge.fml2.mod_send"); ConsoleIO.WriteLineFormatted(Translations.forge_fml2_mod_send, acceptnewlines: true);
// Packet ID 2: Client to Server Mod List // Packet ID 2: Client to Server Mod List
fmlResponsePacket.AddRange(dataTypes.GetVarInt(2)); fmlResponsePacket.AddRange(dataTypes.GetVarInt(2));
@ -371,7 +371,7 @@ namespace MinecraftClient.Protocol.Handlers
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
{ {
string registryName = dataTypes.ReadNextString(packetData); string registryName = dataTypes.ReadNextString(packetData);
ConsoleIO.WriteLineFormatted(Translations.Get("forge.fml2.registry", registryName)); ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_fml2_registry, registryName));
} }
fmlResponsePacket.AddRange(dataTypes.GetVarInt(99)); fmlResponsePacket.AddRange(dataTypes.GetVarInt(99));
@ -390,7 +390,7 @@ namespace MinecraftClient.Protocol.Handlers
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
{ {
string configName = dataTypes.ReadNextString(packetData); string configName = dataTypes.ReadNextString(packetData);
ConsoleIO.WriteLineFormatted(Translations.Get("forge.fml2.config", configName)); ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_fml2_config, configName));
} }
fmlResponsePacket.AddRange(dataTypes.GetVarInt(99)); fmlResponsePacket.AddRange(dataTypes.GetVarInt(99));
@ -399,7 +399,7 @@ namespace MinecraftClient.Protocol.Handlers
default: default:
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("forge.fml2.unknown", packetID)); ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_fml2_unknown, packetID));
break; break;
} }
@ -415,7 +415,7 @@ namespace MinecraftClient.Protocol.Handlers
} }
else if (Settings.Config.Logging.DebugMessages) else if (Settings.Config.Logging.DebugMessages)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("forge.fml2.unknown_channel", fmlChannel)); ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_fml2_unknown_channel, fmlChannel));
} }
} }
return false; return false;
@ -464,7 +464,7 @@ namespace MinecraftClient.Protocol.Handlers
{ {
return new ForgeInfo(FMLVersion.FML2); return new ForgeInfo(FMLVersion.FML2);
} }
else throw new InvalidOperationException(Translations.Get("error.forgeforce")); else throw new InvalidOperationException(Translations.error_forgeforce);
} }
/// <summary> /// <summary>
@ -504,10 +504,10 @@ namespace MinecraftClient.Protocol.Handlers
forgeInfo = new ForgeInfo(modData, fmlVersion); forgeInfo = new ForgeInfo(modData, fmlVersion);
if (forgeInfo.Mods.Any()) if (forgeInfo.Mods.Any())
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("forge.with_mod", forgeInfo.Mods.Count)); ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_with_mod, forgeInfo.Mods.Count));
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
{ {
Translations.WriteLineFormatted("forge.mod_list"); ConsoleIO.WriteLineFormatted(Translations.forge_mod_list, acceptnewlines: true);
foreach (ForgeInfo.ForgeMod mod in forgeInfo.Mods) foreach (ForgeInfo.ForgeMod mod in forgeInfo.Mods)
ConsoleIO.WriteLineFormatted("§8 " + mod.ToString()); ConsoleIO.WriteLineFormatted("§8 " + mod.ToString());
} }
@ -515,7 +515,7 @@ namespace MinecraftClient.Protocol.Handlers
} }
else else
{ {
Translations.WriteLineFormatted("forge.no_mod"); ConsoleIO.WriteLineFormatted(Translations.forge_no_mod, acceptnewlines: true);
forgeInfo = null; forgeInfo = null;
} }
} }

View file

@ -219,7 +219,7 @@ namespace MinecraftClient.Protocol
//File not found? Try downloading language file from Mojang's servers? //File not found? Try downloading language file from Mojang's servers?
if (!File.Exists(Language_File)) if (!File.Exists(Language_File))
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("chat.download", Config.Main.Advanced.Language)); ConsoleIO.WriteLineFormatted(string.Format(Translations.chat_download, Config.Main.Advanced.Language));
HttpClient httpClient = new(); HttpClient httpClient = new();
try try
{ {
@ -233,7 +233,7 @@ namespace MinecraftClient.Protocol
string hash = tmp[1].Split('"')[0]; //Translations file identifier on Mojang's servers string hash = tmp[1].Split('"')[0]; //Translations file identifier on Mojang's servers
string translation_file_location = Settings.TranslationsFile_Website_Download + '/' + hash[..2] + '/' + hash; string translation_file_location = Settings.TranslationsFile_Website_Download + '/' + hash[..2] + '/' + hash;
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("chat.request", translation_file_location)); ConsoleIO.WriteLineFormatted(string.Format(Translations.chat_request, translation_file_location));
Task<string> fetch_file = httpClient.GetStringAsync(translation_file_location); Task<string> fetch_file = httpClient.GetStringAsync(translation_file_location);
fetch_file.Wait(); fetch_file.Wait();
@ -245,11 +245,11 @@ namespace MinecraftClient.Protocol
stringBuilder.Append(entry.Key).Append('=').Append(entry.Value.StringValue.Replace("\n", "\\n").Replace("\r", String.Empty)).Append(Environment.NewLine); stringBuilder.Append(entry.Key).Append('=').Append(entry.Value.StringValue.Replace("\n", "\\n").Replace("\r", String.Empty)).Append(Environment.NewLine);
File.WriteAllText(Language_File, stringBuilder.ToString()); File.WriteAllText(Language_File, stringBuilder.ToString());
ConsoleIO.WriteLineFormatted(Translations.Get("chat.done", Language_File)); ConsoleIO.WriteLineFormatted(string.Format(Translations.chat_done, Language_File));
} }
catch catch
{ {
Translations.WriteLineFormatted("chat.fail"); ConsoleIO.WriteLineFormatted(Translations.chat_fail, acceptnewlines: true);
} }
httpClient.Dispose(); httpClient.Dispose();
} }
@ -259,7 +259,7 @@ namespace MinecraftClient.Protocol
&& File.Exists(Settings.TranslationsFile_FromMCDir)) && File.Exists(Settings.TranslationsFile_FromMCDir))
{ {
Language_File = Settings.TranslationsFile_FromMCDir; Language_File = Settings.TranslationsFile_FromMCDir;
Translations.WriteLineFormatted("chat.from_dir"); ConsoleIO.WriteLineFormatted(Translations.chat_from_dir, acceptnewlines: true);
} }
//Load the external dictionnary of translation rules or display an error message //Load the external dictionnary of translation rules or display an error message
@ -278,11 +278,11 @@ namespace MinecraftClient.Protocol
} }
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("chat.loaded"); ConsoleIO.WriteLineFormatted(Translations.chat_loaded, acceptnewlines: true);
} }
else //No external dictionnary found. else //No external dictionnary found.
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("chat.not_found", Language_File)); ConsoleIO.WriteLineFormatted(string.Format(Translations.chat_not_found, Language_File));
} }
} }

View file

@ -116,7 +116,7 @@ namespace MinecraftClient.Protocol.Keys
if (File.Exists(KeysCacheFilePlaintext)) if (File.Exists(KeysCacheFilePlaintext))
{ {
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.loading_keys", KeysCacheFilePlaintext)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_loading_keys, KeysCacheFilePlaintext));
try try
{ {
@ -135,35 +135,35 @@ namespace MinecraftClient.Protocol.Keys
PlayerKeyPair playerKeyPair = PlayerKeyPair.FromString(value); PlayerKeyPair playerKeyPair = PlayerKeyPair.FromString(value);
keys[login] = playerKeyPair; keys[login] = playerKeyPair;
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.loaded_keys", playerKeyPair.ExpiresAt.ToString())); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_loaded_keys, playerKeyPair.ExpiresAt.ToString()));
} }
catch (InvalidDataException e) catch (InvalidDataException e)
{ {
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.ignore_string_keys", value, e.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_ignore_string_keys, value, e.Message));
} }
catch (FormatException e) catch (FormatException e)
{ {
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.ignore_string_keys", value, e.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_ignore_string_keys, value, e.Message));
} }
catch (ArgumentNullException e) catch (ArgumentNullException e)
{ {
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.ignore_string_keys", value, e.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_ignore_string_keys, value, e.Message));
} }
} }
else if (Settings.Config.Logging.DebugMessages) else if (Settings.Config.Logging.DebugMessages)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("cache.ignore_line_keys", line)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_ignore_line_keys, line));
} }
} }
} }
} }
catch (IOException e) catch (IOException e)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("cache.read_fail_plain_keys", e.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_read_fail_plain_keys, e.Message));
} }
} }
@ -176,7 +176,7 @@ namespace MinecraftClient.Protocol.Keys
private static void SaveToDisk() private static void SaveToDisk()
{ {
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
Translations.WriteLineFormatted("cache.saving_keys"); ConsoleIO.WriteLineFormatted(Translations.cache_saving_keys, acceptnewlines: true);
List<string> KeysCacheLines = new() List<string> KeysCacheLines = new()
{ {
@ -192,7 +192,7 @@ namespace MinecraftClient.Protocol.Keys
} }
catch (IOException e) catch (IOException e)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("cache.save_fail_keys", e.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_save_fail_keys, e.Message));
} }
} }
} }

View file

@ -44,7 +44,7 @@ namespace MinecraftClient.Protocol
{ {
try try
{ {
Translations.WriteLine("mcc.resolve", domainVal); ConsoleIO.WriteLine(string.Format(Translations.mcc_resolve, domainVal));
var lookupClient = new LookupClient(); var lookupClient = new LookupClient();
var response = lookupClient.Query(new DnsQuestion($"_minecraft._tcp.{domainVal}", QueryType.SRV)); var response = lookupClient.Query(new DnsQuestion($"_minecraft._tcp.{domainVal}", QueryType.SRV));
if (response.HasError != true && response.Answers.SrvRecords().Any()) if (response.HasError != true && response.Answers.SrvRecords().Any())
@ -56,7 +56,7 @@ namespace MinecraftClient.Protocol
.ThenBy(record => Guid.NewGuid()) .ThenBy(record => Guid.NewGuid())
.First(); .First();
string target = result.Target.Value.Trim('.'); string target = result.Target.Value.Trim('.');
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.found", target, result.Port, domainVal)); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_found, target, result.Port, domainVal));
domainVal = target; domainVal = target;
portVal = result.Port; portVal = result.Port;
foundService = true; foundService = true;
@ -64,7 +64,7 @@ namespace MinecraftClient.Protocol
} }
catch (Exception e) catch (Exception e)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.not_found", domainVal, e.GetType().FullName, e.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_not_found, domainVal, e.GetType().FullName, e.Message));
} }
}, TimeSpan.FromSeconds(Config.Main.Advanced.ResolveSrvRecords == MainConfigHealper.MainConfig.AdvancedConfig.ResolveSrvRecordType.fast ? 10 : 30)); }, TimeSpan.FromSeconds(Config.Main.Advanced.ResolveSrvRecords == MainConfigHealper.MainConfig.AdvancedConfig.ResolveSrvRecordType.fast ? 10 : 30));
} }
@ -95,7 +95,8 @@ namespace MinecraftClient.Protocol
{ {
success = true; success = true;
} }
else Translations.WriteLineFormatted("error.unexpect_response"); else
ConsoleIO.WriteLineFormatted(Translations.error_unexpect_response, acceptnewlines: true);
} }
catch (Exception e) catch (Exception e)
{ {
@ -104,9 +105,9 @@ namespace MinecraftClient.Protocol
}, TimeSpan.FromSeconds(Config.Main.Advanced.ResolveSrvRecords == MainConfigHealper.MainConfig.AdvancedConfig.ResolveSrvRecordType.fast ? 10 : 30))) }, TimeSpan.FromSeconds(Config.Main.Advanced.ResolveSrvRecords == MainConfigHealper.MainConfig.AdvancedConfig.ResolveSrvRecordType.fast ? 10 : 30)))
{ {
if (protocolversion != 0 && protocolversion != protocolversionTmp) if (protocolversion != 0 && protocolversion != protocolversionTmp)
Translations.WriteLineFormatted("error.version_different"); ConsoleIO.WriteLineFormatted(Translations.error_version_different, acceptnewlines: true);
if (protocolversion == 0 && protocolversionTmp <= 1) if (protocolversion == 0 && protocolversionTmp <= 1)
Translations.WriteLineFormatted("error.no_version_report"); ConsoleIO.WriteLineFormatted(Translations.error_no_version_report, acceptnewlines: true);
if (protocolversion == 0) if (protocolversion == 0)
protocolversion = protocolversionTmp; protocolversion = protocolversionTmp;
forgeInfo = forgeInfoTmp; forgeInfo = forgeInfoTmp;
@ -114,7 +115,7 @@ namespace MinecraftClient.Protocol
} }
else else
{ {
Translations.WriteLineFormatted("error.connection_timeout"); ConsoleIO.WriteLineFormatted(Translations.error_connection_timeout, acceptnewlines: true);
return false; return false;
} }
} }
@ -138,7 +139,7 @@ namespace MinecraftClient.Protocol
if (Array.IndexOf(supportedVersions_Protocol18, ProtocolVersion) > -1) if (Array.IndexOf(supportedVersions_Protocol18, ProtocolVersion) > -1)
return new Protocol18Handler(Client, ProtocolVersion, Handler, forgeInfo); return new Protocol18Handler(Client, ProtocolVersion, Handler, forgeInfo);
throw new NotSupportedException(Translations.Get("exception.version_unsupport", ProtocolVersion)); throw new NotSupportedException(string.Format(Translations.exception_version_unsupport, ProtocolVersion));
} }
/// <summary> /// <summary>
@ -490,7 +491,7 @@ namespace MinecraftClient.Protocol
} }
else else
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("error.http_code", code)); ConsoleIO.WriteLineFormatted(string.Format(Translations.error_http_code, code));
return LoginResult.OtherError; return LoginResult.OtherError;
} }
} }
@ -692,7 +693,7 @@ namespace MinecraftClient.Protocol
} }
else else
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("error.auth", code)); ConsoleIO.WriteLineFormatted(string.Format(Translations.error_auth, code));
return LoginResult.OtherError; return LoginResult.OtherError;
} }
} }
@ -763,10 +764,10 @@ namespace MinecraftClient.Protocol
} }
if (availableWorlds.Count > 0) if (availableWorlds.Count > 0)
{ {
Translations.WriteLine("mcc.realms_available"); ConsoleIO.WriteLine(Translations.mcc_realms_available);
foreach (var world in availableWorlds) foreach (var world in availableWorlds)
ConsoleIO.WriteLine(world); ConsoleIO.WriteLine(world);
Translations.WriteLine("mcc.realms_join"); ConsoleIO.WriteLine(Translations.mcc_realms_join);
} }
} }
@ -804,13 +805,13 @@ namespace MinecraftClient.Protocol
return serverAddress.Properties["address"].StringValue; return serverAddress.Properties["address"].StringValue;
else else
{ {
Translations.WriteLine("error.realms.ip_error"); ConsoleIO.WriteLine(Translations.error_realms_ip_error);
return ""; return "";
} }
} }
else else
{ {
Translations.WriteLine("error.realms.access_denied"); ConsoleIO.WriteLine(Translations.error_realms_access_denied);
return ""; return "";
} }
} }
@ -893,7 +894,7 @@ namespace MinecraftClient.Protocol
try try
{ {
if (Settings.Config.Logging.DebugMessages) if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("debug.request", host)); ConsoleIO.WriteLineFormatted(string.Format(Translations.debug_request, host));
TcpClient client = ProxyHandler.NewTcpClient(host, 443, true); TcpClient client = ProxyHandler.NewTcpClient(host, 443, true);
SslStream stream = new(client.GetStream()); SslStream stream = new(client.GetStream());

View file

@ -125,7 +125,7 @@ namespace MinecraftClient.Protocol.Session
if (File.Exists(SessionCacheFileMinecraft)) if (File.Exists(SessionCacheFileMinecraft))
{ {
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.loading", Path.GetFileName(SessionCacheFileMinecraft))); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_loading, Path.GetFileName(SessionCacheFileMinecraft)));
Json.JSONData mcSession = new(Json.JSONData.DataType.String); Json.JSONData mcSession = new(Json.JSONData.DataType.String);
try try
{ {
@ -158,7 +158,7 @@ namespace MinecraftClient.Protocol.Session
clientID clientID
)); ));
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.loaded", login, session.ID)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_loaded, login, session.ID));
sessions[login] = session; sessions[login] = session;
} }
catch (InvalidDataException) { /* Not a valid session */ } catch (InvalidDataException) { /* Not a valid session */ }
@ -172,7 +172,7 @@ namespace MinecraftClient.Protocol.Session
if (File.Exists(SessionCacheFileSerialized)) if (File.Exists(SessionCacheFileSerialized))
{ {
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.converting", SessionCacheFileSerialized)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_converting, SessionCacheFileSerialized));
try try
{ {
@ -184,17 +184,17 @@ namespace MinecraftClient.Protocol.Session
foreach (KeyValuePair<string, SessionToken> item in sessionsTemp) foreach (KeyValuePair<string, SessionToken> item in sessionsTemp)
{ {
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.loaded", item.Key, item.Value.ID)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_loaded, item.Key, item.Value.ID));
sessions[item.Key] = item.Value; sessions[item.Key] = item.Value;
} }
} }
catch (IOException ex) catch (IOException ex)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("cache.read_fail", ex.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_read_fail, ex.Message));
} }
catch (SerializationException ex2) catch (SerializationException ex2)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("cache.malformed", ex2.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_malformed, ex2.Message));
} }
} }
@ -202,7 +202,7 @@ namespace MinecraftClient.Protocol.Session
if (File.Exists(SessionCacheFilePlaintext)) if (File.Exists(SessionCacheFilePlaintext))
{ {
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.loading_session", SessionCacheFilePlaintext)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_loading_session, SessionCacheFilePlaintext));
try try
{ {
@ -218,25 +218,25 @@ namespace MinecraftClient.Protocol.Session
string login = Settings.ToLowerIfNeed(keyValue[0]); string login = Settings.ToLowerIfNeed(keyValue[0]);
SessionToken session = SessionToken.FromString(keyValue[1]); SessionToken session = SessionToken.FromString(keyValue[1]);
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.loaded", login, session.ID)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_loaded, login, session.ID));
sessions[login] = session; sessions[login] = session;
} }
catch (InvalidDataException e) catch (InvalidDataException e)
{ {
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.ignore_string", keyValue[1], e.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_ignore_string, keyValue[1], e.Message));
} }
} }
else if (Config.Logging.DebugMessages) else if (Config.Logging.DebugMessages)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("cache.ignore_line", line)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_ignore_line, line));
} }
} }
} }
} }
catch (IOException e) catch (IOException e)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("cache.read_fail_plain", e.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_read_fail_plain, e.Message));
} }
} }
@ -249,7 +249,7 @@ namespace MinecraftClient.Protocol.Session
private static void SaveToDisk() private static void SaveToDisk()
{ {
if (Config.Logging.DebugMessages) if (Config.Logging.DebugMessages)
Translations.WriteLineFormatted("cache.saving"); ConsoleIO.WriteLineFormatted(Translations.cache_saving, acceptnewlines: true);
List<string> sessionCacheLines = new() List<string> sessionCacheLines = new()
{ {
@ -265,7 +265,7 @@ namespace MinecraftClient.Protocol.Session
} }
catch (IOException e) catch (IOException e)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("cache.save_fail", e.Message)); ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_save_fail, e.Message));
} }
} }
} }

View file

@ -86,7 +86,7 @@ namespace MinecraftClient.Proxy
if (!proxy_ok) if (!proxy_ok)
{ {
ConsoleIO.WriteLineFormatted(Translations.Get("proxy.connected", Config.Server.Host, Config.Server.Port)); ConsoleIO.WriteLineFormatted(string.Format(Translations.proxy_connected, Config.Server.Host, Config.Server.Port));
proxy_ok = true; proxy_ok = true;
} }

View file

@ -22,14 +22,14 @@ namespace MinecraftClient {
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class DefaultConfigResource { internal class AsciiArt {
private static global::System.Resources.ResourceManager resourceMan; private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture; private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal DefaultConfigResource() { internal AsciiArt() {
} }
/// <summary> /// <summary>
@ -39,7 +39,7 @@ namespace MinecraftClient {
internal static global::System.Resources.ResourceManager ResourceManager { internal static global::System.Resources.ResourceManager ResourceManager {
get { get {
if (object.ReferenceEquals(resourceMan, null)) { if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MinecraftClient.DefaultConfigResource", typeof(DefaultConfigResource).Assembly); global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("MinecraftClient.Resources.AsciiArt.AsciiArt", typeof(AsciiArt).Assembly);
resourceMan = temp; resourceMan = temp;
} }
return resourceMan; return resourceMan;
@ -75,9 +75,9 @@ namespace MinecraftClient {
///║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║ ///║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;. ///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ContainerType_BrewingStand { internal static string Container_BrewingStand {
get { get {
return ResourceManager.GetString("ContainerType_BrewingStand", resourceCulture); return ResourceManager.GetString("Container.BrewingStand", resourceCulture);
} }
} }
@ -96,9 +96,9 @@ namespace MinecraftClient {
///║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║ ///║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;. ///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ContainerType_Crafting { internal static string Container_Crafting {
get { get {
return ResourceManager.GetString("ContainerType_Crafting", resourceCulture); return ResourceManager.GetString("Container.Crafting", resourceCulture);
} }
} }
@ -117,9 +117,9 @@ namespace MinecraftClient {
///║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║ ///║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;. ///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ContainerType_EnchantingTable { internal static string Container_EnchantingTable {
get { get {
return ResourceManager.GetString("ContainerType_EnchantingTable", resourceCulture); return ResourceManager.GetString("Container.EnchantingTable", resourceCulture);
} }
} }
@ -138,9 +138,9 @@ namespace MinecraftClient {
///║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║ ///║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
///║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 [rest of string was truncated]&quot;;. ///║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ContainerType_Furnace { internal static string Container_Furnace {
get { get {
return ResourceManager.GetString("ContainerType_Furnace", resourceCulture); return ResourceManager.GetString("Container.Furnace", resourceCulture);
} }
} }
@ -159,9 +159,9 @@ namespace MinecraftClient {
///║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║ ///║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;. ///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ContainerType_Generic_3x3 { internal static string Container_Generic_3x3 {
get { get {
return ResourceManager.GetString("ContainerType_Generic_3x3", resourceCulture); return ResourceManager.GetString("Container.Generic_3x3", resourceCulture);
} }
} }
@ -180,9 +180,9 @@ namespace MinecraftClient {
///║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║ ///║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;. ///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ContainerType_Generic_9x3 { internal static string Container_Generic_9x3 {
get { get {
return ResourceManager.GetString("ContainerType_Generic_9x3", resourceCulture); return ResourceManager.GetString("Container.Generic_9x3", resourceCulture);
} }
} }
@ -201,9 +201,9 @@ namespace MinecraftClient {
///║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║ ///║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;. ///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ContainerType_Generic_9x6 { internal static string Container_Generic_9x6 {
get { get {
return ResourceManager.GetString("ContainerType_Generic_9x6", resourceCulture); return ResourceManager.GetString("Container.Generic_9x6", resourceCulture);
} }
} }
@ -222,9 +222,9 @@ namespace MinecraftClient {
///║ ╚══╝ ╚══╝ ║ ///║ ╚══╝ ╚══╝ ║
///║ [rest of string was truncated]&quot;;. ///║ [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ContainerType_Grindstone { internal static string Container_Grindstone {
get { get {
return ResourceManager.GetString("ContainerType_Grindstone", resourceCulture); return ResourceManager.GetString("Container.Grindstone", resourceCulture);
} }
} }
@ -243,9 +243,9 @@ namespace MinecraftClient {
///║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║ ///║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
///║╚═══╩═══╩═══╩═══╩══ [rest of string was truncated]&quot;;. ///║╚═══╩═══╩═══╩═══╩══ [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ContainerType_Hopper { internal static string Container_Hopper {
get { get {
return ResourceManager.GetString("ContainerType_Hopper", resourceCulture); return ResourceManager.GetString("Container.Hopper", resourceCulture);
} }
} }
@ -264,186 +264,9 @@ namespace MinecraftClient {
///║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║ ///║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;. ///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary> /// </summary>
internal static string ContainerType_PlayerInventory { internal static string Container_PlayerInventory {
get { get {
return ResourceManager.GetString("ContainerType_PlayerInventory", resourceCulture); return ResourceManager.GetString("Container_PlayerInventory", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [mcc]
///# Messages from MCC itself
///mcc.help_us_translate=
///mcc.run_with_default_settings=
///mcc.settings_generated=
///mcc.has_update=
///mcc.login=Login :
///mcc.login_basic_io=Bitte gib einen Nutzernamen oder eine E-Mail deiner Wahl ein.
///mcc.password=Passwort :
///mcc.password_basic_io=Bitte gib das Passwort für {0} ein.
///mcc.password_hidden=Passwort : {0}
///mcc.offline=§8Das Programm läuft im Offline-Modus.
///mcc.session_invalid=§8Gespeicherte Session ungültig oder abgelaufen.
///mcc.session_valid=§8Gespeicherte Ses [rest of string was truncated]&quot;;.
/// </summary>
internal static string Translation_de {
get {
return ResourceManager.GetString("Translation_de", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [mcc]
///# Messages from MCC itself
///mcc.help_us_translate=Help us translate MCC: {0}
///mcc.run_with_default_settings=\nMCC is running with default settings.
///mcc.settings_generated=§cSettings file MinecraftClient.ini has been generated.
///mcc.has_update=§eNew version of MCC available: {0}
///mcc.login=Login :
///mcc.login_basic_io=Please type the username or email of your choice.
///mcc.password=Password:
///mcc.password_basic_io=Please type the password for {0}.
///mcc.password_hidden=Password(invisible): {0}
///mcc.offline=§8You [rest of string was truncated]&quot;;.
/// </summary>
internal static string Translation_en {
get {
return ResourceManager.GetString("Translation_en", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [mcc]
///# Messages from MCC itself
///mcc.help_us_translate=
///mcc.run_with_default_settings=
///mcc.settings_generated=
///mcc.has_update=
///mcc.login=Connexion :
///mcc.login_basic_io=Veuillez saisir un nom d&apos;utilisateur ou une adresse email.
///mcc.password=Mot de passe :
///mcc.password_basic_io=Saisissez le mot de passe pour {0}.
///mcc.password_hidden=Mot de passe : {0}
///mcc.offline=§8Vous avez choisi d&apos;utiliser le mode hors ligne.
///mcc.session_invalid=§8Le cache de la session est invalide ou a expiré.
///mcc.session_va [rest of string was truncated]&quot;;.
/// </summary>
internal static string Translation_fr {
get {
return ResourceManager.GetString("Translation_fr", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [mcc]
///# Messages from MCC itself
///mcc.help_us_translate=
///mcc.run_with_default_settings=
///mcc.settings_generated=
///mcc.has_update=
///mcc.login=Логин :
///mcc.login_basic_io=Пожалуйста, введите имя пользователя или email по вашему выбору.
///mcc.password=Пароль:
///mcc.password_basic_io=Пожалуйста, введите пароль для {0}.
///mcc.password_hidden=Пароль: {0}
///mcc.offline=§8Вы выбрали запуск в автономном режиме.
///mcc.session_invalid=§8Кэшированная сессия недействительна или истекла.
///mcc.session_valid=§8Кэшированная се [rest of string was truncated]&quot;;.
/// </summary>
internal static string Translation_ru {
get {
return ResourceManager.GetString("Translation_ru", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [mcc]
///# Messages from MCC itself
///mcc.help_us_translate=MCCyi çevirmemize yardımcı olun: {0}
///mcc.run_with_default_settings=\nMCC varsayılan ayarlarla çalışıyor.
///mcc.settings_generated=§cAyarlar dosyası MinecraftClient.ini oluşturuldu.
///mcc.has_update=§eMCCnin yeni sürümü mevcut: {0}
///mcc.login=Login :
///mcc.login_basic_io=Lütfen tercih ettiğiniz kullanıcı adını veya e-posta adresini yazın.
///mcc.password=Password :
///mcc.password_basic_io=Lütfen {0} için şifreyi yazın.
///mcc.password_hidden=Password : {0}
///m [rest of string was truncated]&quot;;.
/// </summary>
internal static string Translation_tr {
get {
return ResourceManager.GetString("Translation_tr", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [mcc]
///# Messages from MCC itself
///mcc.help_us_translate=
///mcc.run_with_default_settings=
///mcc.settings_generated=
///mcc.has_update=
///mcc.login=Đăng nhập:
///mcc.login_basic_io=Hãy nhập địa chỉ email hoặc tên tài khoản của bạn:
///mcc.password=Mật khẩu:
///mcc.password_basic_io=Hãy nhập mật khẩu cho {0}.
///mcc.password_hidden=Password : {0}
///mcc.offline=§8Bạn chọn sử dụng chế độ ngoại tuyến.
///mcc.session_invalid=§8Phiên không hợp lệ hoặc đã hết hạn.
///mcc.session_valid=§8Phiên vẫn còn hợp lệ cho {0}.
///mcc.profile_ke [rest of string was truncated]&quot;;.
/// </summary>
internal static string Translation_vi {
get {
return ResourceManager.GetString("Translation_vi", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [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 [rest of string was truncated]&quot;;.
/// </summary>
internal static string Translation_zh_Hans {
get {
return ResourceManager.GetString("Translation_zh_Hans", resourceCulture);
}
}
/// <summary>
/// Looks up a localized string similar to [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 [rest of string was truncated]&quot;;.
/// </summary>
internal static string Translation_zh_Hant {
get {
return ResourceManager.GetString("Translation_zh_Hant", resourceCulture);
} }
} }
} }

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

View file

@ -0,0 +1,367 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="root">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"/>
<xsd:attribute name="type" type="xsd:string"/>
<xsd:attribute name="mimetype" type="xsd:string"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"/>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"/>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"/>
<xsd:attribute ref="xml:space"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Container.BrewingStand" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Brewing Stand ║
║ ╔═══╗ ⡈ ⠄╔═══╗ ║
║ ║ 4 ╟───╮ ⢠⡐⢈║ 3 ║ ┃ ║
║ ╚═══╝ ╭─╯ ⠂⡠⢂╚╦╦╦╝ ┃ ║
║ ╰───■■■■ ║║║ ▼ ║
║ ╔═══╦═╝║╚═╦═══╗ ║
║ ║ 0 ║╔═╩═╗║ 2 ║ ║
║ ╚═══╝║ 1 ║╚═══╝ ║
║ Inventory ╚═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Crafting" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Crafting ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 1 ║ 2 ║ 3 ║ ║
║ ╠═══╬═══╬═══╣ ╔═══╗ ║
║ ║ 4 ║ 5 ║ 6 ║ ━━▶ ║ 0 ║ ║
║ ╠═══╬═══╬═══╣ ╚═══╝ ║
║ ║ 7 ║ 8 ║ 9 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║45 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.EnchantingTable" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Enchant ║
║ ╔════════════════════╗ ║
║ ║ Top ║ ║
║ ╔═══╦═══╗ ╠════════════════════╣ ║
║ ║ 0 ║ 1 ║ ║ Middle ║ ║
║ ╚═══╩═══╝ ╠════════════════════╣ ║
║ ║ Bottom ║ ║
║ ╚════════════════════╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║11 ║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║20 ║21 ║22 ║23 ║24 ║25 ║26 ║27 ║28 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║29 ║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Furnace" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╗ ║
║ ║ 0 ║ ║
║ ╚═══╝ ╔═══╗ ║
║ ⠂⡠⢂ ━━▶ ║ 2 ║ ║
║ ⠂⡠⢂ ╚═══╝ ║
║ ╔═══╗ ║
║ ║ 1 ║ ║
║ ╚═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_3x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 3 ║ 4 ║ 5 ║ ║
║ ╠═══╬═══╬═══╣ ║
║ ║ 6 ║ 7 ║ 8 ║ ║
║ ╚═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x3" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Generic_9x6" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║45 ║46 ║47 ║48 ║49 ║50 ║51 ║52 ║53 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║54 ║55 ║56 ║57 ║58 ║59 ║60 ║61 ║62 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║63 ║64 ║65 ║66 ║67 ║68 ║69 ║70 ║71 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║72 ║73 ║74 ║75 ║76 ║77 ║78 ║79 ║80 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║81 ║82 ║83 ║84 ║85 ║86 ║87 ║88 ║89 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Grindstone" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Repair &amp; Disenchant ║
║ ╔═════════╗ ║
║ ║ ╔═══╗ ║ ║
║ ╔══║ ║ 0 ║ ║══╗ ║
║ ║ ║ ╚═══╝ ║ ║ ║
║ ║ ║ ╔═══╗ ║ ║ ╔═══╗ ║
║ ║ ║ ║ 1 ║ ║ ║ ━━▶ ║ 2 ║ ║
║ ║ ║ ╚═══╝ ║ ║ ╚═══╝ ║
║ ║ ╠═════════╣ ║ ║
║ ║ ║ ║ ║ ║
║ ╚══╝ ╚══╝ ║
║ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 3 ║ 4 ║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║12 ║13 ║14 ║15 ║16 ║17 ║18 ║19 ║20 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║21 ║22 ║23 ║24 ║25 ║26 ║27 ║38 ║29 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║30 ║31 ║32 ║33 ║34 ║35 ║36 ║37 ║38 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container.Hopper" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║ Container ║
║ ╔═══╦═══╦═══╦═══╦═══╗ ║
║ ║ 0 ║ 1 ║ 2 ║ 3 ║ 4 ║ ║
║ ╚═══╩═══╩═══╩═══╩═══╝ ║
║ Inventory ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║14 ║15 ║16 ║17 ║18 ║19 ║20 ║21 ║22 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║23 ║24 ║25 ║26 ║27 ║28 ║29 ║30 ║31 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║32 ║33 ║34 ║35 ║36 ║37 ║38 ║39 ║40 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
<data name="Container_PlayerInventory" xml:space="preserve">
<value>╔═════════════════════════════════════╗
║╔═══╦═══════════╗ ║
║║ 5 ║ ███ ║ ╔═══╦═══╗ ║
║╠═══╣ ███ ║ ║ 1 ║ 2 ║ ╔═══╗║
║║ 6 ║ ███████ ║ ╠═══╬═══╣━━▶║ 0 ║║
║╠═══╣ ███████ ║ ║ 3 ║ 4 ║ ╚═══╝║
║║ 7 ║ ███████ ║ ╚═══╩═══╝ ║
║╠═══╣ ███ ╠═══╗ ║
║║ 8 ║ ███ ║45 ║ ║
║╚═══╩═══════════╩═══╝ ║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║ 9 ║10 ║11 ║12 ║13 ║14 ║15 ║16 ║17 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║18 ║19 ║20 ║21 ║22 ║23 ║24 ║25 ║26 ║║
║╠═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╬═══╣║
║║27 ║28 ║29 ║30 ║31 ║32 ║33 ║34 ║35 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║╔═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╦═══╗║
║║36 ║37 ║38 ║39 ║40 ║41 ║42 ║43 ║44 ║║
║╚═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╩═══╝║
║ 1 2 3 4 5 6 7 8 9 ║
╚═════════════════════════════════════╝</value>
</data>
</root>

Some files were not shown because too many files have changed in this diff Show more