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

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

View file

@ -43,7 +43,7 @@ namespace MinecraftClient.ChatBots
if (Walk_Range <= 0)
{
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);
@ -55,7 +55,7 @@ namespace MinecraftClient.ChatBots
if (Delay.min > Delay.max)
{
(Delay.min, Delay.max) = (Delay.max, Delay.min);
LogToConsole(BotName, Translations.TryGet("bot.antiafk.swapping"));
LogToConsole(BotName, Translations.bot_antiafk_swapping);
}
Command ??= string.Empty;
@ -96,7 +96,7 @@ namespace MinecraftClient.ChatBots
{
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)
{
LogToConsole(BotName, Translations.TryGet("bot.autoAttack.invalidcooldown"));
LogToConsole(BotName, Translations.bot_autoAttack_invalidcooldown);
Cooldown_Time.value = 1.0;
}
}
@ -113,8 +113,8 @@ namespace MinecraftClient.ChatBots
{
if (!GetEntityHandlingEnabled())
{
LogToConsoleTranslated("extra.entity_required");
LogToConsoleTranslated("general.bot_unload");
LogToConsole(Translations.extra_entity_required);
LogToConsole(Translations.general_bot_unload);
UnloadBot();
}
}

View file

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

View file

@ -107,17 +107,17 @@ namespace MinecraftClient.ChatBots
{
if (!GetTerrainEnabled())
{
LogToConsoleTranslated("extra.terrainandmovement_required");
LogToConsoleTranslated("general.bot_unload");
LogToConsole(Translations.extra_terrainandmovement_required);
LogToConsole(Translations.general_bot_unload);
UnloadBot();
return;
}
inventoryEnabled = GetInventoryEnabled();
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)
@ -132,10 +132,10 @@ namespace MinecraftClient.ChatBots
counter = 0;
state = State.WaitingStart;
}
return Translations.Get("bot.autodig.start");
return Translations.bot_autodig_start;
case "stop":
StopDigging();
return Translations.Get("bot.autodig.stop");
return Translations.bot_autodig_stop;
case "help":
return GetCommandHelp(args.Length >= 2 ? args[1] : "");
default:
@ -150,7 +150,7 @@ namespace MinecraftClient.ChatBots
if (Config.Auto_Start_Delay > 0)
{
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)
{
counter = Settings.DoubleToTick(delay);
@ -201,7 +201,7 @@ namespace MinecraftClient.ChatBots
case State.Digging:
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;
counter = 0;
}
@ -223,7 +223,7 @@ namespace MinecraftClient.ChatBots
{
AlreadyWaitting = true;
if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.too_far"));
LogToConsole(Translations.cmd_dig_too_far);
}
return false;
}
@ -233,7 +233,7 @@ namespace MinecraftClient.ChatBots
{
AlreadyWaitting = true;
if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.no_block"));
LogToConsole(Translations.cmd_dig_no_block);
}
return false;
}
@ -247,12 +247,12 @@ namespace MinecraftClient.ChatBots
{
currentDig = blockLoc;
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;
}
else
{
LogToConsole(Translations.Get("cmd.dig.fail"));
LogToConsole(Translations.cmd_dig_fail);
return false;
}
}
@ -262,7 +262,7 @@ namespace MinecraftClient.ChatBots
{
AlreadyWaitting = true;
if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("bot.autodig.not_allow"));
LogToConsole(Translations.bot_autodig_not_allow);
}
return false;
}
@ -273,7 +273,7 @@ namespace MinecraftClient.ChatBots
{
AlreadyWaitting = true;
if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("bot.autodig.not_allow"));
LogToConsole(Translations.bot_autodig_not_allow);
}
return false;
}
@ -308,12 +308,12 @@ namespace MinecraftClient.ChatBots
{
currentDig = target;
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;
}
else
{
LogToConsole(Translations.Get("cmd.dig.fail"));
LogToConsole(Translations.cmd_dig_fail);
return false;
}
}
@ -323,7 +323,7 @@ namespace MinecraftClient.ChatBots
{
AlreadyWaitting = true;
if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.no_block"));
LogToConsole(Translations.cmd_dig_no_block);
}
return false;
}
@ -342,12 +342,12 @@ namespace MinecraftClient.ChatBots
{
currentDig = blockLoc;
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;
}
else
{
LogToConsole(Translations.Get("cmd.dig.fail"));
LogToConsole(Translations.cmd_dig_fail);
return false;
}
}
@ -357,7 +357,7 @@ namespace MinecraftClient.ChatBots
{
AlreadyWaitting = true;
if (Config.Log_Block_Dig)
LogToConsole(Translations.Get("cmd.dig.no_block"));
LogToConsole(Translations.cmd_dig_no_block);
}
return false;
}
@ -404,7 +404,7 @@ namespace MinecraftClient.ChatBots
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)
@ -412,9 +412,9 @@ namespace MinecraftClient.ChatBots
return cmd.ToLower() switch
{
#pragma warning disable format // @formatter:off
"start" => Translations.Get("bot.autodig.help.start"),
"stop" => Translations.Get("bot.autodig.help.stop"),
"help" => Translations.Get("bot.autodig.help.help"),
"start" => Translations.bot_autodig_help_start,
"stop" => Translations.bot_autodig_help_stop,
"help" => Translations.bot_autodig_help_help,
_ => GetHelp(),
#pragma warning restore format // @formatter:on
};

View file

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

View file

@ -173,14 +173,14 @@ namespace MinecraftClient.ChatBots
{
if (!GetEntityHandlingEnabled())
{
LogToConsoleTranslated("extra.entity_required");
LogToConsole(Translations.extra_entity_required);
state = FishingState.WaitJoinGame;
}
inventoryEnabled = GetInventoryEnabled();
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)
@ -197,7 +197,7 @@ namespace MinecraftClient.ChatBots
counter = 0;
state = FishingState.StartMove;
}
return Translations.Get("bot.autoFish.start");
return Translations.bot_autoFish_start;
case "stop":
isFishing = false;
lock (stateLock)
@ -208,14 +208,14 @@ namespace MinecraftClient.ChatBots
state = FishingState.Stopping;
}
StopFishing();
return Translations.Get("bot.autoFish.stop");
return Translations.bot_autoFish_stop;
case "status":
if (args.Length >= 2)
{
if (args[1] == "clear")
{
fishItemCnt = new();
return Translations.Get("bot.autoFish.status_clear");
return Translations.bot_autoFish_status_clear;
}
else
{
@ -225,12 +225,12 @@ namespace MinecraftClient.ChatBots
else
{
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();
int maxLen = orderedList[^1].Value.ToString().Length;
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)
{
sb.Append(Environment.NewLine);
@ -258,7 +258,7 @@ namespace MinecraftClient.ChatBots
if (Config.Auto_Start)
{
double delay = Config.Fishing_Delay;
LogToConsole(Translations.Get("bot.autoFish.start_at", delay));
LogToConsole(string.Format(Translations.bot_autoFish_start_at, delay));
lock (stateLock)
{
isFishing = false;
@ -321,7 +321,7 @@ namespace MinecraftClient.ChatBots
{
if (castTimeout < 6000)
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);
state = FishingState.WaitingToCast;
@ -330,7 +330,7 @@ namespace MinecraftClient.ChatBots
case FishingState.WaitingFishToBite:
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);
state = FishingState.WaitingToCast;
@ -348,7 +348,7 @@ namespace MinecraftClient.ChatBots
}
else
{
LogToConsole(Translations.Get("extra.terrainandmovement_required"));
LogToConsole(Translations.extra_terrainandmovement_required);
state = FishingState.WaitJoinGame;
}
}
@ -364,7 +364,7 @@ namespace MinecraftClient.ChatBots
if (!ClientIsMoving())
{
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;
goto case FishingState.DurabilityCheck;
@ -399,7 +399,7 @@ namespace MinecraftClient.ChatBots
fishItemCounter = 15;
LogToConsole(GetShortTimestamp() + ": " + Translations.Get("bot.autoFish.throw"));
LogToConsole(GetShortTimestamp() + ": " + Translations.bot_autoFish_throw);
lock (stateLock)
{
fishingBobber = entity;
@ -426,7 +426,7 @@ namespace MinecraftClient.ChatBots
if (Config.Antidespawn)
{
LogToConsoleTranslated("bot.autoFish.despawn");
LogToConsole(Translations.bot_autoFish_despawn);
lock (stateLock)
{
@ -473,7 +473,7 @@ namespace MinecraftClient.ChatBots
{
fishItemCounter = 15;
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))
fishItemCnt[item.Type] += (uint)item.Count;
else
@ -514,10 +514,10 @@ namespace MinecraftClient.ChatBots
{
++fishCount;
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));
else
LogToConsole(GetShortTimestamp() + ": " + Translations.Get("bot.autoFish.caught", fishCount));
LogToConsole(GetShortTimestamp() + ": " + string.Format(Translations.bot_autoFish_caught, fishCount));
lock (stateLock)
{
@ -558,7 +558,7 @@ namespace MinecraftClient.ChatBots
if (!Movement.CheckChunkLoading(GetWorld(), current, goal))
{
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
{
@ -568,11 +568,11 @@ namespace MinecraftClient.ChatBots
if (!isMoveSuccessed)
{
(nextYaw, nextPitch) = (GetYaw(), GetPitch());
LogToConsole(Translations.Get("cmd.move.fail", goal));
LogToConsole(string.Format(Translations.cmd_move_fail, goal));
}
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
{
if (!isWaitingRod)
LogToConsole(GetTimestamp() + ": " + Translations.Get("bot.autoFish.no_rod"));
LogToConsole(GetTimestamp() + ": " + Translations.bot_autoFish_no_rod);
if (Config.Auto_Rod_Switch)
{
@ -609,7 +609,7 @@ namespace MinecraftClient.ChatBots
WindowAction(0, slot, WindowActionType.LeftClick);
WindowAction(0, itemSolt, 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;
return true;
}
@ -623,7 +623,7 @@ namespace MinecraftClient.ChatBots
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)
@ -631,10 +631,10 @@ namespace MinecraftClient.ChatBots
return cmd.ToLower() switch
{
#pragma warning disable format // @formatter:off
"start" => Translations.Get("bot.autoFish.help.start"),
"stop" => Translations.Get("bot.autoFish.help.stop"),
"status" => Translations.Get("bot.autoFish.help.status"),
"help" => Translations.Get("bot.autoFish.help.help"),
"start" => Translations.bot_autoFish_help_start,
"stop" => Translations.bot_autoFish_help_stop,
"status" => Translations.bot_autoFish_help_status,
"help" => Translations.bot_autoFish_help_help,
_ => GetHelp(),
#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>
public AutoRelog()
{
LogDebugToConsoleTranslated("bot.autoRelog.launch", Config.Retries);
LogDebugToConsole(string.Format(Translations.bot_autoRelog_launch, Config.Retries));
}
public override void Initialize()
@ -87,7 +87,7 @@ namespace MinecraftClient.ChatBots
McClient.ReconnectionAttemptsLeft = Config.Retries;
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)
{
LogDebugToConsoleTranslated("bot.autoRelog.ignore_user_logout");
LogDebugToConsole(Translations.bot_autoRelog_ignore_user_logout);
}
else if (Config.Retries < 0 || Configs._BotRecoAttempts < Config.Retries)
{
message = GetVerbatim(message);
string comp = message.ToLower();
LogDebugToConsoleTranslated("bot.autoRelog.disconnect_msg", message);
LogDebugToConsole(string.Format(Translations.bot_autoRelog_disconnect_msg, 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;
@ -130,8 +130,8 @@ namespace MinecraftClient.ChatBots
private void LaunchDelayedReconnection(string? msg)
{
double delay = random.NextDouble() * (Config.Delay.max - Config.Delay.min) + Config.Delay.min;
LogDebugToConsoleTranslated(string.IsNullOrEmpty(msg) ? "bot.autoRelog.reconnect_always" : "bot.autoRelog.reconnect", msg);
LogToConsoleTranslated("bot.autoRelog.wait", delay);
LogDebugToConsole(string.Format(string.IsNullOrEmpty(msg) ? Translations.bot_autoRelog_reconnect_always : Translations.bot_autoRelog_reconnect, msg));
LogToConsole(string.Format(Translations.bot_autoRelog_wait, delay));
System.Threading.Thread.Sleep((int)Math.Floor(delay * 1000));
ReconnectToTheServer();
}

View file

@ -37,8 +37,8 @@ namespace MinecraftClient.ChatBots
if (!File.Exists(Matches_File))
{
LogToConsole(BotName, Translations.TryGet("bot.autoRespond.file_not_found", Path.GetFullPath(Matches_File)));
LogToConsole(BotName, Translations.TryGet("general.bot_unload"));
LogToConsole(BotName, string.Format(Translations.bot_autoRespond_file_not_found, Path.GetFullPath(Matches_File)));
LogToConsole(BotName, Translations.general_bot_unload);
Enabled = false;
}
}
@ -167,8 +167,8 @@ namespace MinecraftClient.ChatBots
/// <returns></returns>
public override string ToString()
{
return Translations.Get(
"bot.autoRespond.match",
return string.Format(
Translations.bot_autoRespond_match,
match,
regex,
actionPublic,
@ -196,7 +196,7 @@ namespace MinecraftClient.ChatBots
TimeSpan cooldown = TimeSpan.Zero;
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))
{
@ -243,7 +243,7 @@ namespace MinecraftClient.ChatBots
}
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
}
}
@ -270,11 +270,11 @@ namespace MinecraftClient.ChatBots
if (matchRegex != null || matchString != null)
{
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))
{
string? response = null;
LogToConsoleTranslated("bot.autoRespond.match_run", toPerform);
LogToConsole(string.Format(Translations.bot_autoRespond_match_run, toPerform));
PerformInternalCommand(toPerform, ref response, localVars);
if (!String.IsNullOrEmpty(response))
LogToConsole(response);

View file

@ -35,8 +35,8 @@ namespace MinecraftClient.ChatBots
string Log_File_Full = Settings.Config.AppVar.ExpandVars(Log_File);
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, Translations.TryGet("general.bot_unload"));
LogToConsole(BotName, string.Format(Translations.bot_chatLog_invalid_file, Log_File_Full));
LogToConsole(BotName, Translations.general_bot_unload);
Enabled = false;
}
}

View file

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

View file

@ -65,19 +65,19 @@ namespace MinecraftClient.ChatBots
{
if (GetProtocolVersion() < Protocol18Handler.MC_1_13_Version)
{
LogToConsole(Translations.TryGet("bot.farmer.not_implemented"));
LogToConsole(Translations.bot_farmer_not_implemented);
return;
}
if (!GetTerrainEnabled())
{
LogToConsole(Translations.TryGet("bot.farmer.needs_terrain"));
LogToConsole(Translations.bot_farmer_needs_terrain);
return;
}
if (!GetInventoryEnabled())
{
LogToConsole(Translations.TryGet("bot.farmer.needs_inventory"));
LogToConsole(Translations.bot_farmer_needs_inventory);
return;
}
@ -91,10 +91,10 @@ namespace MinecraftClient.ChatBots
if (args[0].Equals("stop", StringComparison.OrdinalIgnoreCase))
{
if (!running)
return Translations.TryGet("bot.farmer.already_stopped");
return Translations.bot_farmer_already_stopped;
running = false;
return Translations.TryGet("bot.farmer.stopping");
return Translations.bot_farmer_stopping;
}
if (args[0].Equals("start", StringComparison.OrdinalIgnoreCase))
@ -102,10 +102,10 @@ namespace MinecraftClient.ChatBots
if (args.Length >= 2)
{
if (running)
return Translations.TryGet("bot.farmer.already_running");
return Translations.bot_farmer_already_running;
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;
@ -123,7 +123,7 @@ namespace MinecraftClient.ChatBots
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;
}
@ -131,7 +131,7 @@ namespace MinecraftClient.ChatBots
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;
}
@ -140,11 +140,11 @@ namespace MinecraftClient.ChatBots
case "r":
case "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)
{
LogToConsole("§x§1§0" + Translations.TryGet("bot.farmer.invalid_radius"));
LogToConsole("§x§1§0" + Translations.bot_farmer_invalid_radius);
radius = 30;
}
@ -157,7 +157,7 @@ namespace MinecraftClient.ChatBots
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;
}
else allowUnsafe = false;
@ -171,7 +171,7 @@ namespace MinecraftClient.ChatBots
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;
}
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()
@ -220,9 +220,9 @@ namespace MinecraftClient.ChatBots
private void MainPorcess()
{
LogToConsole("§y§1§f" + Translations.TryGet("bot.farmer.started"));
LogToConsole("§y§1§f " + Translations.TryGet("bot.farmer.crop_type") + ": " + cropType);
LogToConsole("§y§1§f " + Translations.TryGet("bot.farmer.radius") + ": " + farmingRadius);
LogToConsole("§y§1§f" + Translations.bot_farmer_started);
LogToConsole("§y§1§f " + Translations.bot_farmer_crop_type + ": " + cropType);
LogToConsole("§y§1§f " + Translations.bot_farmer_radius + ": " + farmingRadius);
while (running)
{
@ -442,7 +442,7 @@ namespace MinecraftClient.ChatBots
Thread.Sleep(Config.Delay_Between_Tasks * 1000);
}
LogToConsole(Translations.TryGet("bot.farmer.stopped"));
LogToConsole(Translations.bot_farmer_stopped);
}
private Material GetMaterialForCropType(CropType type)

View file

@ -41,16 +41,16 @@ namespace MinecraftClient.ChatBots
{
if (!GetEntityHandlingEnabled())
{
LogToConsoleTranslated("extra.entity_required");
LogToConsoleTranslated("general.bot_unload");
LogToConsole(Translations.extra_entity_required);
LogToConsole(Translations.general_bot_unload);
UnloadBot();
return;
}
if (!GetTerrainEnabled())
{
LogToConsoleTranslated("extra.terrainandmovement_required");
LogToConsoleTranslated("general.bot_unload");
LogToConsole(Translations.extra_terrainandmovement_required);
LogToConsole(Translations.general_bot_unload);
UnloadBot();
return;
}
@ -65,44 +65,48 @@ namespace MinecraftClient.ChatBots
if (args[0].Equals("stop", StringComparison.OrdinalIgnoreCase))
{
if (_playerToFollow == null)
return Translations.TryGet("cmd.follow.already_stopped");
return Translations.cmd_follow_already_stopped;
_playerToFollow = null;
return Translations.TryGet("cmd.follow.stopping");
return Translations.cmd_follow_stopping;
}
else
{
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.Type == EntityType.Player && !string.IsNullOrEmpty(entity.Name) && entity.Name.Equals(args[0], StringComparison.OrdinalIgnoreCase));
if (player == null)
return Translations.TryGet("cmd.follow.invalid_player");
return Translations.cmd_follow_invalid_player;
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))
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();
LogToConsoleTranslated("cmd.follow.note");
LogToConsole(Translations.cmd_follow_note);
if (args.Length == 2 && args[1].Equals("-f", StringComparison.OrdinalIgnoreCase))
{
_unsafeEnabled = true;
LogToConsoleTranslated("cmd.follow.unsafe_enabled");
LogToConsole(Translations.cmd_follow_unsafe_enabled);
}
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()
@ -146,8 +150,8 @@ namespace MinecraftClient.ChatBots
if (_playerToFollow != null && !string.IsNullOrEmpty(entity.Name) && _playerToFollow.Equals(entity.Name, StringComparison.OrdinalIgnoreCase))
{
LogToConsoleTranslated("cmd.follow.player_came_to_the_range", _playerToFollow);
LogToConsoleTranslated("cmd.follow.resuming");
LogToConsole(string.Format(Translations.cmd_follow_player_came_to_the_range, _playerToFollow));
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))
{
LogToConsoleTranslated("cmd.follow.player_left_the_range", _playerToFollow);
LogToConsoleTranslated("cmd.follow.pausing");
LogToConsole(string.Format(Translations.cmd_follow_player_left_the_range, _playerToFollow));
LogToConsole(Translations.cmd_follow_pausing);
}
}
@ -167,8 +171,8 @@ namespace MinecraftClient.ChatBots
{
if (_playerToFollow != null && !string.IsNullOrEmpty(name) && _playerToFollow.Equals(name, StringComparison.OrdinalIgnoreCase))
{
LogToConsoleTranslated("cmd.follow.player_left", _playerToFollow);
LogToConsoleTranslated("cmd.follow.stopping");
LogToConsole(string.Format(Translations.cmd_follow_player_left, _playerToFollow));
LogToConsole(Translations.cmd_follow_stopping);
_playerToFollow = null;
}
}

View file

@ -45,25 +45,25 @@ namespace MinecraftClient.ChatBots
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;
}
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;
}
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;
}
if (!checkSuccessed)
{
LogToConsole(BotName, Translations.TryGet("general.bot_unload"));
LogToConsole(BotName, Translations.general_bot_unload);
Enabled = false;
}
}
@ -218,32 +218,32 @@ namespace MinecraftClient.ChatBots
/// </summary>
public override void Initialize()
{
LogDebugToConsoleTranslated("bot.mailer.init");
LogDebugToConsoleTranslated("bot.mailer.init.db" + Config.DatabaseFile);
LogDebugToConsoleTranslated("bot.mailer.init.ignore" + Config.IgnoreListFile);
LogDebugToConsoleTranslated("bot.mailer.init.public" + Config.PublicInteractions);
LogDebugToConsoleTranslated("bot.mailer.init.max_mails" + Config.MaxMailsPerPlayer);
LogDebugToConsoleTranslated("bot.mailer.init.db_size" + Config.MaxDatabaseSize);
LogDebugToConsoleTranslated("bot.mailer.init.mail_retention" + Config.MailRetentionDays + " days");
LogDebugToConsole(Translations.bot_mailer_init);
LogDebugToConsole(Translations.bot_mailer_init_db + Config.DatabaseFile);
LogDebugToConsole(Translations.bot_mailer_init_ignore + Config.IgnoreListFile);
LogDebugToConsole(Translations.bot_mailer_init_public + Config.PublicInteractions);
LogDebugToConsole(Translations.bot_mailer_init_max_mails + Config.MaxMailsPerPlayer);
LogDebugToConsole(Translations.bot_mailer_init_db_size + Config.MaxDatabaseSize);
LogDebugToConsole(Translations.bot_mailer_init_mail_retention + Config.MailRetentionDays + " days");
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);
}
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);
}
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);
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);
}
@ -251,7 +251,7 @@ namespace MinecraftClient.ChatBots
mailDbFileMonitor = new FileMonitor(Path.GetDirectoryName(Config.DatabaseFile)!, Path.GetFileName(Config.DatabaseFile), 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>
@ -299,7 +299,7 @@ namespace MinecraftClient.ChatBots
if (message.Length <= maxMessageLength)
{
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)
{
mailDatabase.Add(mail);
@ -317,7 +317,7 @@ namespace MinecraftClient.ChatBots
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;
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
HashSet<string> onlinePlayersLowercase = new(GetOnlinePlayers().Select(name => name.ToLower()));
@ -338,7 +338,7 @@ namespace MinecraftClient.ChatBots
string sender = mail.Anonymous ? "Anonymous" : mail.Sender;
SendPrivateMessage(mail.Recipient, sender + " mailed: " + mail.Content);
mail.SetDelivered();
LogDebugToConsoleTranslated("bot.mailer.delivered", mail.ToString());
LogDebugToConsole(string.Format(Translations.bot_mailer_delivered, mail.ToString()));
}
lock (readWriteLock)
@ -377,10 +377,10 @@ namespace MinecraftClient.ChatBots
switch (commandName)
{
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":
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 "removeignored":
@ -397,7 +397,7 @@ namespace MinecraftClient.ChatBots
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
{
@ -409,13 +409,13 @@ namespace MinecraftClient.ChatBots
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 (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))
LogToConsoleTranslated("bot.map.list_item", key, value.LastUpdated);
LogToConsole(string.Format(Translations.bot_map_list_item, key, value.LastUpdated));
return "";
}
@ -119,7 +119,7 @@ namespace MinecraftClient.ChatBots
if (int.TryParse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture, out int 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
{
@ -135,10 +135,10 @@ namespace MinecraftClient.ChatBots
catch (Exception e)
{
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 "";
@ -172,7 +172,7 @@ namespace MinecraftClient.ChatBots
cachedMaps.Add(mapid, map);
if (Config.Notify_On_First_Update)
LogToConsoleTranslated("bot.map.received_map", map.MapId);
LogToConsole(string.Format(Translations.bot_map_received_map, map.MapId));
}
else
{
@ -232,7 +232,7 @@ namespace MinecraftClient.ChatBots
}
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)
{
@ -243,7 +243,7 @@ namespace MinecraftClient.ChatBots
image.Resize(size);
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;
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)
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
// 10 seconds timeout
@ -313,7 +313,7 @@ namespace MinecraftClient.ChatBots
if (File.Exists(newFileName))
File.Delete(newFileName);
}
catch (IOException e) { }
catch (IOException) { }
}
});
}
@ -331,7 +331,7 @@ namespace MinecraftClient.ChatBots
int scaleY = (map.Height + consoleHeight - 1) / consoleHeight;
int scale = Math.Max(scaleX, scaleY);
if (scale > 1)
sb.AppendLine(Translations.Get("bot.map.scale", map.Width, map.Height, map.Width / scale, map.Height / scale));
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)
{

View file

@ -40,7 +40,7 @@ namespace MinecraftClient.ChatBots
replay.MetaData.serverName = GetServerHost() + GetServerPort();
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)
@ -80,18 +80,18 @@ namespace MinecraftClient.ChatBots
case "save":
{
replay.CreateBackupReplay(@"replay_recordings\" + replay.GetReplayDefaultName());
return Translations.Get("bot.replayCapture.created");
return Translations.bot_replayCapture_created;
}
case "stop":
{
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)
{

View file

@ -118,7 +118,7 @@ namespace MinecraftClient.ChatBots
caller = type.Name;
}
catch { }
ConsoleIO.WriteLineFormatted(Translations.Get("bot.script.not_found", caller, filename));
ConsoleIO.WriteLineFormatted(string.Format(Translations.bot_script_not_found, caller, filename));
}
return false;
@ -134,14 +134,14 @@ namespace MinecraftClient.ChatBots
thread = null;
if (!String.IsNullOrEmpty(owner))
SendPrivateMessage(owner, Translations.Get("bot.script.pm.loaded", file));
SendPrivateMessage(owner, string.Format(Translations.bot_script_pm_loaded, file));
}
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))
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
}
@ -162,7 +162,7 @@ namespace MinecraftClient.ChatBots
}
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);
if (owner != null)
SendPrivateMessage(owner, errorMessage);

View file

@ -58,26 +58,26 @@ namespace MinecraftClient.ChatBots
|| (task.Trigger_On_Interval.Enable && task.Trigger_On_Interval.MinTime > 0))
{
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
}
else
{
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
{
task.Action ??= string.Empty;
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)
{
LogToConsole(BotName, Translations.TryGet("general.bot_unload"));
LogToConsole(BotName, Translations.general_bot_unload);
Enabled = false;
}
}
@ -189,7 +189,7 @@ namespace MinecraftClient.ChatBots
if (!task.Trigger_On_Time_Already_Triggered)
{
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);
}
}
@ -207,7 +207,7 @@ namespace MinecraftClient.ChatBots
{
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);
}
}
@ -227,7 +227,7 @@ namespace MinecraftClient.ChatBots
task.Trigger_On_Interval_Countdown = random.Next(
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);
}
else task.Trigger_On_Interval_Countdown--;
@ -243,8 +243,8 @@ namespace MinecraftClient.ChatBots
private static string Task2String(TaskConfig task)
{
return Translations.Get(
"bot.scriptScheduler.task",
return string.Format(
Translations.bot_scriptScheduler_task,
task.Trigger_On_First_Login,
task.Trigger_On_Login,
task.Trigger_On_Times.Enable,

View file

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

View file

@ -14,11 +14,11 @@
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))
{
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>
public string GetCmdDescTranslated()
{
string s = string.IsNullOrEmpty(CmdUsage) || string.IsNullOrEmpty(CmdDesc) ? "" : ": "; // If either one is empty, no colon :
return CmdUsage + s + Translations.TryGet(CmdDesc);
string s = (string.IsNullOrEmpty(CmdUsage) || string.IsNullOrEmpty(CmdDesc)) ? "" : ": "; // If either one is empty, no colon :
return CmdUsage + s + CmdDesc;
}
/// <summary>

View file

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

View file

@ -11,7 +11,7 @@ namespace MinecraftClient.Commands
{
public override string CmdName { get { return "bed"; } }
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)
{
@ -24,20 +24,20 @@ namespace MinecraftClient.Commands
if (subcommand.Equals("leave") || subcommand.Equals("l"))
{
handler.SendEntityAction(Protocol.EntityActionType.LeaveBed);
return Translations.TryGet("cmd.bed.leaving");
return Translations.cmd_bed_leaving;
}
if (subcommand.Equals("sleep") || subcommand.Equals("s"))
{
if (!handler.GetTerrainEnabled())
return Translations.TryGet("error.terrain_not_enabled");
return Translations.error_terrain_not_enabled;
if (args.Length == 2)
{
if (!int.TryParse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture, out int radius))
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 bedLocation = current;
@ -75,12 +75,12 @@ namespace MinecraftClient.Commands
}
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))
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))
{
@ -100,27 +100,27 @@ namespace MinecraftClient.Commands
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;
}
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);
handler.Log.Info(Translations.TryGet(
"cmd.bed.trying_to_use",
handler.Log.Info(string.Format(
Translations.cmd_bed_trying_to_use,
bedLocation.X,
bedLocation.Y,
bedLocation.Z,
Translations.TryGet(res ? "cmd.bed.in" : "cmd.bed.not_in")
res ? Translations.cmd_bed_in : Translations.cmd_bed_not_in
));
});
return "";
}
return Translations.Get("cmd.bed.cant_reach_safely");
return Translations.cmd_bed_cant_reach_safely;
}
if (args.Length >= 3)
@ -129,16 +129,16 @@ namespace MinecraftClient.Commands
Location blockCenter = block.ToCenter();
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);
return Translations.TryGet(
"cmd.bed.trying_to_use",
return string.Format(
Translations.cmd_bed_trying_to_use,
blockCenter.X,
blockCenter.Y,
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 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)
{
if (!handler.GetTerrainEnabled())
return Translations.TryGet("error.terrain_not_enabled");
return Translations.error_terrain_not_enabled;
string[] args = GetArgs(command);
@ -27,12 +27,12 @@ namespace MinecraftClient.Commands
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)
{
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 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 blockZNegative = handler.GetWorld().GetBlock(new Location(targetBlockLocation.X, targetBlockLocation.Y, targetBlockLocation.Z - 1));
sb.AppendLine("[X " + Translations.TryGet("cmd.blockinfo.Positive") + "] " +
Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockXPositive.GetTypeString());
sb.AppendLine("[X " + Translations.TryGet("cmd.blockinfo.Negative") + "] " +
Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockXNegative.GetTypeString());
sb.AppendLine($"[X {Translations.cmd_blockinfo_Positive}] {Translations.cmd_blockinfo_BlockType}: {blockXPositive.GetTypeString()}");
sb.AppendLine($"[X {Translations.cmd_blockinfo_Negative}] {Translations.cmd_blockinfo_BlockType}: {blockXNegative.GetTypeString()}");
sb.AppendLine(" ");
sb.AppendLine("[Y " + Translations.TryGet("cmd.blockinfo.Positive") + "] " +
Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockYPositive.GetTypeString());
sb.AppendLine("[Y " + Translations.TryGet("cmd.blockinfo.Negative") + "] " +
Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockYNegative.GetTypeString());
sb.AppendLine($"[Y {Translations.cmd_blockinfo_Positive}] {Translations.cmd_blockinfo_BlockType}: {blockYPositive.GetTypeString()}");
sb.AppendLine($"[Y {Translations.cmd_blockinfo_Negative}] {Translations.cmd_blockinfo_BlockType}: {blockYNegative.GetTypeString()}");
sb.AppendLine(" ");
sb.AppendLine("[Z " + Translations.TryGet("cmd.blockinfo.Positive") + "] " +
Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockZPositive.GetTypeString());
sb.AppendLine("[Z " + Translations.TryGet("cmd.blockinfo.Negative") + "] " +
Translations.TryGet("cmd.blockinfo.BlockType") + ": " + blockZNegative.GetTypeString());
sb.AppendLine($"[Z {Translations.cmd_blockinfo_Positive}] {Translations.cmd_blockinfo_BlockType}: {blockZPositive.GetTypeString()}");
sb.AppendLine($"[Z {Translations.cmd_blockinfo_Negative}] {Translations.cmd_blockinfo_BlockType}: {blockZNegative.GetTypeString()}");
handler.Log.Info(sb.ToString());
}

View file

@ -8,7 +8,7 @@ namespace MinecraftClient.Commands
{
public override string CmdName { get { return "bots"; } }
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)
{
@ -25,7 +25,7 @@ namespace MinecraftClient.Commands
int length = handler.GetLoadedChatBots().Count;
if (length == 0)
return Translations.TryGet("cmd.bots.noloaded");
return Translations.cmd_bots_noloaded;
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 (handler.GetLoadedChatBots().Count == 0)
return Translations.TryGet("cmd.bots.noloaded");
return Translations.cmd_bots_noloaded;
handler.UnloadAllBots();
return Translations.TryGet("cmd.bots.unloaded_all");
return Translations.cmd_bots_unloaded_all;
}
else
{
ChatBot? bot = handler.GetLoadedChatBots().Find(bot => bot.GetType().Name.ToLower() == botName.ToLower());
if (bot == null)
return Translations.TryGet("cmd.bots.notfound", botName);
return string.Format(Translations.cmd_bots_notfound, botName);
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 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)
{
if (!handler.GetInventoryEnabled())
return Translations.Get("extra.inventory_required");
return Translations.extra_inventory_required;
if (HasArg(command))
{
@ -23,17 +23,17 @@ namespace MinecraftClient.Commands
}
catch (FormatException)
{
return Translations.Get("cmd.changeSlot.nan");
return Translations.cmd_changeSlot_nan;
}
if (slot >= 1 && slot <= 9)
{
if (handler.ChangeSlot(slot -= 1))
{
return Translations.Get("cmd.changeSlot.changed", (slot += 1));
return string.Format(Translations.cmd_changeSlot_changed, (slot += 1));
}
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 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)
{
@ -32,16 +32,16 @@ namespace MinecraftClient.Commands
sb.Append(World.GetChunkLoadingStatus(handler.GetWorld()));
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)
{
sb.Append(Translations.Get("cmd.chunk.marked"));
sb.Append(Translations.cmd_chunk_marked);
if (args.Length == 1 + 3)
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[2], 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);
@ -127,7 +127,7 @@ namespace MinecraftClient.Commands
if (markedChunkPos != null &&
(((Math.Max(bottomMost, markChunkZ) - Math.Min(topMost, markChunkZ) + 1) > consoleHeight) ||
((Math.Max(rightMost, markChunkX) - Math.Min(leftMost, markChunkX) + 1) > consoleWidth)))
sb.AppendLine(Translations.Get("cmd.chunk.outside"));
sb.AppendLine(Translations.cmd_chunk_outside);
else
{
topMost = Math.Min(topMost, markChunkZ);
@ -165,7 +165,7 @@ namespace MinecraftClient.Commands
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();
}
else if (args[0] == "setloading") // For debugging
@ -173,7 +173,7 @@ namespace MinecraftClient.Commands
Tuple<int, int>? chunkPos = ParseChunkPos(args);
if (chunkPos != null)
{
handler.Log.Info(Translations.Get("cmd.chunk.for_debug"));
handler.Log.Info(Translations.cmd_chunk_for_debug);
World world = handler.GetWorld();
(int chunkX, int chunkZ) = chunkPos;
ChunkColumn? chunkColumn = world[chunkX, chunkZ];
@ -190,7 +190,7 @@ namespace MinecraftClient.Commands
Tuple<int, int>? chunkPos = ParseChunkPos(args);
if (chunkPos != null)
{
handler.Log.Info(Translations.Get("cmd.chunk.for_debug"));
handler.Log.Info(Translations.cmd_chunk_for_debug);
World world = handler.GetWorld();
(int chunkX, int chunkZ) = chunkPos;
ChunkColumn? chunkColumn = world[chunkX, chunkZ];
@ -207,7 +207,7 @@ namespace MinecraftClient.Commands
Tuple<int, int>? chunkPos = ParseChunkPos(args);
if (chunkPos != null)
{
handler.Log.Info(Translations.Get("cmd.chunk.for_debug"));
handler.Log.Info(Translations.cmd_chunk_for_debug);
World world = handler.GetWorld();
(int chunkX, int chunkZ) = chunkPos;
world[chunkX, chunkZ] = null;

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{
public override string CmdName { get { return "connect"; } }
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)
{
@ -17,7 +17,7 @@ namespace MinecraftClient.Commands
{
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();
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();
}

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{
public override string CmdName { get { return "debug"; } }
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)
{
@ -14,7 +14,10 @@ namespace MinecraftClient.Commands
Settings.Config.Logging.DebugMessages = (GetArg(command).ToLower() == "on");
else
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 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)
{
if (!handler.GetTerrainEnabled())
return Translations.Get("extra.terrainandmovement_required");
return Translations.extra_terrainandmovement_required;
string[] args = GetArgs(command);
if (args.Length == 0)
{
(bool hasBlock, Location blockLoc, Block block) = RaycastHelper.RaycastBlock(handler, 4.5, false);
if (!hasBlock)
return Translations.Get("cmd.dig.too_far");
return Translations.cmd_dig_too_far;
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))
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
return Translations.Get("cmd.dig.fail");
return Translations.cmd_dig_fail;
}
else if (args.Length == 3)
{
@ -35,17 +35,17 @@ namespace MinecraftClient.Commands
Location current = handler.GetCurrentLocation();
Location blockToBreak = Location.Parse(current.ToFloor(), args[0], args[1], args[2]);
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);
if (block.Type == Material.Air)
return Translations.Get("cmd.dig.no_block");
return Translations.cmd_dig_no_block;
else if (handler.DigBlock(blockToBreak))
{
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
return Translations.Get("cmd.dig.fail");
return Translations.cmd_dig_fail;
}
catch (FormatException) { return GetCmdDescTranslated(); }
}

View file

@ -8,16 +8,14 @@ namespace MinecraftClient.Commands
class DropItem : Command
{
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 CmdDesc { get { return Translations.cmd_dropItem_desc; } }
public override string Run(McClient handler, string command, Dictionary<string, object>? localVars)
{
if (!handler.GetInventoryEnabled())
{
return Translations.Get("extra.inventory_required");
return Translations.extra_inventory_required;
}
if (HasArg(command))
{
@ -38,11 +36,11 @@ namespace MinecraftClient.Commands
{
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
{
return Translations.Get("cmd.dropItem.unknown_item", arg);
return string.Format(Translations.cmd_dropItem_unknown_item, arg);
}
}
else

View file

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

View file

@ -11,7 +11,7 @@ namespace MinecraftClient.Commands
{
public override string CmdName { get { return "entity"; } }
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)
{
@ -34,10 +34,10 @@ namespace MinecraftClient.Commands
{
case "attack":
handler.InteractEntity(entityID, InteractType.Attack);
return Translations.Get("cmd.entityCmd.attacked");
return Translations.cmd_entityCmd_attacked;
case "use":
handler.InteractEntity(entityID, InteractType.Interact);
return Translations.Get("cmd.entityCmd.used");
return Translations.cmd_entityCmd_used;
default:
Entity entity = handler.GetEntities()[entityID];
int id = entity.ID;
@ -56,53 +56,53 @@ namespace MinecraftClient.Commands
else if (health < 15)
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();
done.Append(Translations.Replace("([cmd.entityCmd.entity]): {0}\n [MCC] Type: {1}", id, entity.GetTypeString()));
if (!String.IsNullOrEmpty(nickname))
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.nickname]): {0}", nickname));
else if (!String.IsNullOrEmpty(customname))
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.customname]): {0}§8", customname.Replace("&", "§")));
done.Append($"{Translations.cmd_entityCmd_entity}: {id}\n [MCC] Type: {entity.GetTypeString()}");
if (!string.IsNullOrEmpty(nickname))
done.Append($"\n [MCC] {Translations.cmd_entityCmd_nickname}: {nickname}");
else if (!string.IsNullOrEmpty(customname))
done.Append($"\n [MCC] {Translations.cmd_entityCmd_customname}: {customname.Replace("&", "§")}§8");
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)
{
string? displayName = item.DisplayName;
if (String.IsNullOrEmpty(displayName))
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.item]): {0} x{1}", item.GetTypeString(), item.Count));
if (string.IsNullOrEmpty(displayName))
done.Append($"\n [MCC] {Translations.cmd_entityCmd_item}: {item.GetTypeString()} x{item.Count}");
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)
{
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)
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)
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)
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)
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)
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)
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(Translations.Replace("\n [MCC] ([cmd.entityCmd.health]): {0}", color + health + "§8"));
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.distance]): {0}", distance));
done.Append(Translations.Replace("\n [MCC] ([cmd.entityCmd.location]): {0}", location));
done.Append($"\n [MCC] {Translations.cmd_entityCmd_pose}: {pose}");
done.Append($"\n [MCC] {Translations.cmd_entityCmd_health}: {color}{health}§8");
done.Append($"\n [MCC] {Translations.cmd_entityCmd_distance}: {distance}");
done.Append($"\n [MCC] {Translations.cmd_entityCmd_location}: {location}");
return done.ToString();
}
}
else return Translations.Get("cmd.entityCmd.not_found");
else return Translations.cmd_entityCmd_not_found;
}
else
{
EntityType interacttype = Enum.Parse<EntityType>(args[0]);
string actionst = "cmd.entityCmd.attacked";
string actionst = Translations.cmd_entityCmd_attacked;
int actioncount = 0;
foreach (var entity2 in handler.GetEntities())
{
@ -114,19 +114,19 @@ namespace MinecraftClient.Commands
if (action == "attack")
{
handler.InteractEntity(entity2.Key, InteractType.Attack);
actionst = "cmd.entityCmd.attacked";
actionst = Translations.cmd_entityCmd_attacked;
actioncount++;
}
else if (action == "use")
{
handler.InteractEntity(entity2.Key, InteractType.Interact);
actionst = "cmd.entityCmd.used";
actionst = Translations.cmd_entityCmd_used;
actioncount++;
}
else return GetCmdDescTranslated();
}
}
return actioncount + " " + Translations.Get(actionst);
return actioncount + " " + actionst;
}
}
catch (FormatException) { return GetCmdDescTranslated(); }
@ -135,7 +135,7 @@ namespace MinecraftClient.Commands
{
Dictionary<int, Entity> entities = handler.GetEntities();
StringBuilder response = new();
response.AppendLine(Translations.Get("cmd.entityCmd.entities"));
response.AppendLine(Translations.cmd_entityCmd_entities);
foreach (var entity2 in entities)
{
int id = entity2.Key;
@ -146,22 +146,22 @@ namespace MinecraftClient.Commands
EntityPose pose = entity2.Value.Pose;
EntityType type = entity2.Value.Type;
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)
response.AppendLine(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.item]): {2}, ([cmd.entityCmd.location]): {3}", id, entity2.Value.GetTypeString(), item.GetTypeString(), location));
else if (type == EntityType.Player && !String.IsNullOrEmpty(nickname))
response.AppendLine(Translations.Replace(" #{0}: ([cmd.entityCmd.type]): {1}, ([cmd.entityCmd.nickname]): §8{2}§8, ([cmd.entityCmd.latency]): {3}, ([cmd.entityCmd.health]): {4}, ([cmd.entityCmd.pose]): {5}, ([cmd.entityCmd.location]): {6}", id, entity2.Value.GetTypeString(), nickname, latency, health, pose, location));
else if (type == EntityType.Player && !String.IsNullOrEmpty(customname))
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_item}: {item.GetTypeString()}, {Translations.cmd_entityCmd_location}: {location}");
else if (type == EntityType.Player && !string.IsNullOrEmpty(nickname))
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))
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
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());
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 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)
{
@ -69,8 +69,9 @@ namespace MinecraftClient.Commands
handler.PerformInternalCommand(resultCommand, ref output);
if (string.IsNullOrEmpty(output))
handler.Log.Debug(Translations.TryGet("cmd.execif.executed_no_output", expressionText, resultCommand));
else handler.Log.Debug(Translations.TryGet("cmd.execif.executed", expressionText, resultCommand, output));
handler.Log.Debug(string.Format(Translations.cmd_execif_executed_no_output, expressionText, resultCommand));
else
handler.Log.Debug(string.Format(Translations.cmd_execif_executed, expressionText, resultCommand, output));
return "";
}
@ -79,8 +80,8 @@ namespace MinecraftClient.Commands
}
catch (Exception e)
{
handler.Log.Error(Translations.TryGet("cmd.execif.error_occured", command));
handler.Log.Error(Translations.TryGet("cmd.execif.error", e.Message));
handler.Log.Error(string.Format(Translations.cmd_execif_error_occured, command));
handler.Log.Error(string.Format(Translations.cmd_execif_error, e.Message));
return "";
}
}

View file

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

View file

@ -6,7 +6,7 @@ namespace MinecraftClient.Commands
{
public override string CmdName { 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)
{

View file

@ -6,11 +6,11 @@ namespace MinecraftClient.Commands
{
public override string CmdName { 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)
{
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 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)
{
@ -36,12 +36,12 @@ namespace MinecraftClient.Commands
return GetCmdDescTranslated();
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
return Translations.Get("cmd.inventory.creative_fail");
return Translations.cmd_inventory_creative_fail;
}
else
return Translations.Get("cmd.inventory.need_creative");
return Translations.cmd_inventory_need_creative;
}
else
return GetCmdDescTranslated();
@ -59,12 +59,12 @@ namespace MinecraftClient.Commands
if (handler.GetGamemode() == 1)
{
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
return Translations.Get("cmd.inventory.creative_fail");
return Translations.cmd_inventory_creative_fail;
}
else
return Translations.Get("cmd.inventory.need_creative");
return Translations.cmd_inventory_need_creative;
}
else
return GetCmdDescTranslated();
@ -81,14 +81,14 @@ namespace MinecraftClient.Commands
if (availableIds.Count > 0)
inventoryId = availableIds.Max(); // use foreground container
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"))
{
Dictionary<int, Container> inventories = handler.GetInventories();
List<int> availableIds = inventories.Keys.ToList();
StringBuilder response = new();
response.AppendLine(Translations.Get("cmd.inventory.inventories_available"));
response.AppendLine(Translations.cmd_inventory_inventories_available);
foreach (int id in availableIds)
response.AppendLine(String.Format(" #{0} - {1}§8", id, inventories[id].Title));
@ -135,11 +135,11 @@ namespace MinecraftClient.Commands
});
if (foundItems.Count == 0)
return Translations.Get("cmd.inventory.no_found_items");
return Translations.cmd_inventory_no_found_items;
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))
{
@ -168,20 +168,20 @@ namespace MinecraftClient.Commands
Container? inventory = handler.GetInventory(inventoryId);
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";
if (action == "close")
{
if (handler.CloseInventory(inventoryId))
return Translations.Get("cmd.inventory.close", inventoryId);
return string.Format(Translations.cmd_inventory_close, inventoryId);
else
return Translations.Get("cmd.inventory.close_fail", inventoryId);
return string.Format(Translations.cmd_inventory_close_fail, inventoryId);
}
else if (action == "list")
{
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));
string? asciiArt = inventory.Type.GetAsciiArt();
@ -199,7 +199,7 @@ namespace MinecraftClient.Commands
}
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'
return response.ToString();
@ -210,18 +210,18 @@ namespace MinecraftClient.Commands
return GetCmdDescTranslated();
WindowActionType actionType = WindowActionType.LeftClick;
string keyName = "cmd.inventory.left";
string keyName = Translations.cmd_inventory_left;
if (args.Length >= 4)
{
string b = args[3];
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')
(actionType, keyName) = (WindowActionType.MiddleClick, "cmd.inventory.middle");
(actionType, keyName) = (WindowActionType.MiddleClick, Translations.cmd_inventory_middle);
}
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)
{
@ -229,9 +229,9 @@ namespace MinecraftClient.Commands
return GetCmdDescTranslated();
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)
{
@ -240,7 +240,7 @@ namespace MinecraftClient.Commands
// check item exist
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;
if (args.Length >= 4 && args[3].ToLower() == "all")
@ -249,9 +249,9 @@ namespace MinecraftClient.Commands
if (handler.DoWindowAction(inventoryId, slot, actionType))
{
if (actionType == WindowActionType.DropItemStack)
return Translations.Get("cmd.inventory.drop_stack", slot);
return string.Format(Translations.cmd_inventory_drop_stack, slot);
else
return Translations.Get("cmd.inventory.drop", slot);
return string.Format(Translations.cmd_inventory_drop, slot);
}
else
return "Failed";
@ -262,7 +262,7 @@ namespace MinecraftClient.Commands
else
{
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())
response.AppendLine(String.Format(" #{0}: {1}§8", invId, inv.Title));
response.Append(CmdUsage);
@ -270,42 +270,44 @@ namespace MinecraftClient.Commands
}
}
else
return Translations.Get("extra.inventory_required");
return Translations.extra_inventory_required;
}
#region Methods for commands help
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()
{
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()
{
return Translations.Get("cmd.inventory.help.help", GetAvailableActions());
return string.Format(Translations.cmd_inventory_help_help, GetAvailableActions());
}
private static string GetSubCommandHelp(string cmd)
{
string usageStr = ' ' + Translations.Get("cmd.inventory.help.usage") + ": ";
string usageStr = ' ' + Translations.cmd_inventory_help_usage + ": ";
return cmd switch
{
"list" => Translations.Get("cmd.inventory.help.list") + usageStr + "/inventory <player|container|<id>> list",
"close" => Translations.Get("cmd.inventory.help.close") + usageStr + "/inventory <player|container|<id>> close",
"click" => Translations.Get("cmd.inventory.help.click") + usageStr + "/inventory <player|container|<id>> click <slot> [left|right|middle]\nDefault is left click",
"shiftclick" => Translations.Get("cmd.inventory.help.shiftclick") + usageStr + "/inventory <player|container|<id>> shiftclick <slot>",
"drop" => Translations.Get("cmd.inventory.help.drop") + usageStr + "/inventory <player|container|<id>> drop <slot> [all]\nAll means drop full stack",
"creativegive" => Translations.Get("cmd.inventory.help.creativegive") + usageStr + "/inventory creativegive <slot> <itemtype> <amount>",
"creativedelete" => Translations.Get("cmd.inventory.help.creativedelete") + usageStr + "/inventory creativedelete <slot>",
"inventories" => Translations.Get("cmd.inventory.help.inventories") + usageStr + "/inventory inventories",
"search" => Translations.Get("cmd.inventory.help.search") + usageStr + "/inventory search <item type> [count]",
"help" => GetHelp(),
_ => Translations.Get("cmd.inventory.help.unknown") + GetAvailableActions(),
#pragma warning disable format // @formatter:off
"list" => Translations.cmd_inventory_help_list + usageStr + "/inventory <player|container|<id>> list",
"close" => Translations.cmd_inventory_help_close + usageStr + "/inventory <player|container|<id>> close",
"click" => Translations.cmd_inventory_help_click + usageStr + "/inventory <player|container|<id>> click <slot> [left|right|middle]\nDefault is left click",
"shiftclick" => Translations.cmd_inventory_help_shiftclick + usageStr + "/inventory <player|container|<id>> shiftclick <slot>",
"drop" => Translations.cmd_inventory_help_drop + usageStr + "/inventory <player|container|<id>> drop <slot> [all]\nAll means drop full stack",
"creativegive" => Translations.cmd_inventory_help_creativegive + usageStr + "/inventory creativegive <slot> <itemtype> <amount>",
"creativedelete" => Translations.cmd_inventory_help_creativedelete + usageStr + "/inventory creativedelete <slot>",
"inventories" => Translations.cmd_inventory_help_inventories + usageStr + "/inventory inventories",
"search" => Translations.cmd_inventory_help_search + usageStr + "/inventory search <item type> [count]",
"help" => GetHelp(),
_ => Translations.cmd_inventory_help_unknown + GetAvailableActions(),
#pragma warning restore format // @formatter:on
};
}
#endregion

View file

@ -7,11 +7,11 @@ namespace MinecraftClient.Commands
{
public override string CmdName { 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)
{
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 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)
{

View file

@ -9,7 +9,7 @@ namespace MinecraftClient.Commands
{
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 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)
{
@ -21,11 +21,11 @@ namespace MinecraftClient.Commands
const double maxDistance = 8.0;
(bool hasBlock, Location target, Block block) = RaycastHelper.RaycastBlock(handler, maxDistance, false);
if (!hasBlock)
return Translations.Get("cmd.look.noinspection", maxDistance);
return string.Format(Translations.cmd_look_noinspection, maxDistance);
else
{
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));
}
}
@ -41,7 +41,7 @@ namespace MinecraftClient.Commands
case "west": direction = Direction.West; break;
case "north": direction = Direction.North; 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);
@ -55,7 +55,7 @@ namespace MinecraftClient.Commands
float pitch = float.Parse(args[1], NumberStyles.Any, CultureInfo.CurrentCulture);
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(); }
}
@ -67,14 +67,14 @@ namespace MinecraftClient.Commands
Location block = Location.Parse(current, args[0], args[1], args[2]);
handler.UpdateLocation(current, block);
return Translations.Get("cmd.look.block", block);
return string.Format(Translations.cmd_look_block, block);
}
catch (FormatException) { return CmdUsage; }
}
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 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)
{
@ -35,20 +35,20 @@ namespace MinecraftClient.Commands
if (args[0] == "on")
{
handler.SetTerrainEnabled(true);
return Translations.Get("cmd.move.enable");
return Translations.cmd_move_enable;
}
else if (args[0] == "off")
{
handler.SetTerrainEnabled(false);
return Translations.Get("cmd.move.disable");
return Translations.cmd_move_disable;
}
else if (args[0] == "gravity")
{
if (args.Count >= 2)
Settings.InternalConfig.GravityEnabled = (args[1] == "on");
if (Settings.InternalConfig.GravityEnabled)
return Translations.Get("cmd.move.gravity.enabled");
else return Translations.Get("cmd.move.gravity.disabled");
return Translations.cmd_move_gravity_enabled;
else return Translations.cmd_move_gravity_disabled;
}
else if (handler.GetTerrainEnabled())
{
@ -67,24 +67,24 @@ namespace MinecraftClient.Commands
Location current = handler.GetCurrentLocation();
Location currentCenter = new(Math.Floor(current.X) + 0.5, current.Y, Math.Floor(current.Z) + 0.5);
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();
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);
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 (handler.MoveTo(goal, allowUnsafe: takeRisk))
return Translations.Get("cmd.move.moving", args[0]);
return string.Format(Translations.cmd_move_moving, args[0]);
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)
{
@ -94,24 +94,24 @@ namespace MinecraftClient.Commands
Location goal = Location.Parse(current, args[0], args[1], args[2]);
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 (current.ToFloor() == goal.ToFloor())
handler.MoveTo(goal, allowDirectTeleport: true);
else if (!handler.MoveTo(goal, allowUnsafe: takeRisk))
return takeRisk ? Translations.Get("cmd.move.fail", goal) : Translations.Get("cmd.move.suggestforce", goal);
return Translations.Get("cmd.move.walk", goal, current);
return takeRisk ? string.Format(Translations.cmd_move_fail, goal) : string.Format(Translations.cmd_move_suggestforce, goal);
return string.Format(Translations.cmd_move_walk, goal, current);
}
else
return Translations.Get("cmd.move.suggestforce", goal);
return string.Format(Translations.cmd_move_suggestforce, goal);
}
catch (FormatException) { 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 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)
{
@ -15,7 +15,7 @@ namespace MinecraftClient.Commands
{
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();

View file

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

View file

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

View file

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

View file

@ -6,8 +6,8 @@ namespace MinecraftClient.Commands
class SetRnd : Command
{
public override string CmdName { get { return "setrnd"; } }
public override string CmdUsage { get { return Translations.Get("cmd.setrnd.format"); } }
public override string CmdDesc { get { return "cmd.setrnd.desc"; } }
public override string CmdUsage { get { return Translations.cmd_setrnd_format; } }
public override string CmdDesc { get { return Translations.cmd_setrnd_desc; } }
private static readonly Random rand = new();
public override string Run(McClient handler, string command, Dictionary<string, object>? localVars)
@ -32,7 +32,7 @@ namespace MinecraftClient.Commands
}
catch (Exception)
{
return Translations.Get("cmd.setrndnum.format");
return Translations.cmd_setrndnum_format;
}
// 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
}
else return Translations.Get("cmd.setrndnum.format");
else return Translations.cmd_setrndnum_format;
}
else
{
@ -59,7 +59,7 @@ namespace MinecraftClient.Commands
{
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();

View file

@ -7,7 +7,7 @@ namespace MinecraftClient.Commands
private bool sneaking = false;
public override string CmdName { 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)
{
@ -16,14 +16,14 @@ namespace MinecraftClient.Commands
var result = handler.SendEntityAction(Protocol.EntityActionType.StopSneaking);
if (result)
sneaking = false;
return Translations.Get(result ? "cmd.sneak.off" : "general.fail");
return result ? Translations.cmd_sneak_off : Translations.general_fail;
}
else
{
var result = handler.SendEntityAction(Protocol.EntityActionType.StartSneaking);
if (result)
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 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)
{
@ -19,7 +19,7 @@ namespace MinecraftClient.Commands
color = "§e"; // Yellow
else
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 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)
{
if (handler.GetInventoryEnabled())
{
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 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)
{
if (!handler.GetTerrainEnabled())
return Translations.Get("extra.terrainandmovement_required");
return Translations.extra_terrainandmovement_required;
else if (HasArg(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 blockCenter = block.ToCenter();
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
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)
{
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
@ -43,7 +43,7 @@ namespace MinecraftClient
if (Settings.Config.Logging.DebugMessages)
{
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;

View file

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

View file

@ -167,7 +167,7 @@ namespace MinecraftClient.Inventory
int damage = Damage;
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();
}

View file

@ -216,7 +216,7 @@ namespace MinecraftClient.Mapping
else
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);
return status;

View file

@ -181,7 +181,7 @@ namespace MinecraftClient
client.ReceiveBufferSize = 1024 * 1024;
client.ReceiveTimeout = Config.Main.Advanced.TcpTimeout * 1000; // Default: 30 seconds
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.Item1.Name = "MCC Connection timeout detector";
@ -195,7 +195,7 @@ namespace MinecraftClient
BotLoad(bot, false);
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();
ConsoleInteractive.ConsoleReader.BeginReadThread(cmdprompt);
@ -204,21 +204,21 @@ namespace MinecraftClient
}
else
{
Log.Error(Translations.Get("error.login_failed"));
Log.Error(Translations.error_login_failed);
goto Retry;
}
}
catch (Exception e)
{
Log.Error(e.GetType().Name + ": " + e.Message);
Log.Error(Translations.Get("error.join"));
Log.Error(Translations.error_join);
goto Retry;
}
}
catch (SocketException e)
{
Log.Error(e.Message);
Log.Error(Translations.Get("error.connect"));
Log.Error(Translations.error_connect);
goto Retry;
}
@ -232,7 +232,7 @@ namespace MinecraftClient
}
if (ReconnectionAttemptsLeft > 0)
{
Log.Info(Translations.Get("mcc.reconnect", ReconnectionAttemptsLeft));
Log.Info(string.Format(Translations.mcc_reconnect, ReconnectionAttemptsLeft));
Thread.Sleep(5000);
ReconnectionAttemptsLeft--;
Program.Restart();
@ -394,7 +394,7 @@ namespace MinecraftClient
if (((CancellationToken)o!).IsCancellationRequested)
return;
OnConnectionLost(ChatBot.DisconnectReason.ConnectionLost, Translations.Get("error.timeout"));
OnConnectionLost(ChatBot.DisconnectReason.ConnectionLost, Translations.error_timeout);
return;
}
}
@ -466,22 +466,22 @@ namespace MinecraftClient
switch (reason)
{
case ChatBot.DisconnectReason.ConnectionLost:
message = Translations.Get("mcc.disconnect.lost");
message = Translations.mcc_disconnect_lost;
Log.Info(message);
break;
case ChatBot.DisconnectReason.InGameKick:
Log.Info(Translations.Get("mcc.disconnect.server"));
Log.Info(Translations.mcc_disconnect_server);
Log.Info(message);
break;
case ChatBot.DisconnectReason.LoginRejected:
Log.Info(Translations.Get("mcc.disconnect.login"));
Log.Info(Translations.mcc_disconnect_login);
Log.Info(message);
break;
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)
@ -636,15 +636,15 @@ namespace MinecraftClient
string help_cmdname = Command.GetArgs(command)[0].ToLower();
if (help_cmdname == "help")
{
response_msg = Translations.Get("icmd.help");
response_msg = Translations.icmd_help;
}
else if (cmds.ContainsKey(help_cmdname))
{
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))
{
@ -660,7 +660,7 @@ namespace MinecraftClient
{
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
}
@ -668,7 +668,7 @@ namespace MinecraftClient
}
else
{
response_msg = Translations.Get("icmd.unknown", command_name);
response_msg = string.Format(Translations.icmd_unknown, command_name);
return false;
}
@ -2407,7 +2407,7 @@ namespace MinecraftClient
{
inventoryHandlingRequested = false;
inventoryHandlingEnabled = true;
Log.Info(Translations.Get("extra.inventory_enabled"));
Log.Info(Translations.extra_inventory_enabled);
}
ClearInventories();
@ -2426,7 +2426,7 @@ namespace MinecraftClient
{
terrainAndMovementsEnabled = true;
terrainAndMovementsRequested = false;
Log.Info(Translations.Get("extra.terrainandmovement_enabled"));
Log.Info(Translations.extra_terrainandmovement_enabled);
}
if (terrainAndMovementsEnabled)
@ -2576,7 +2576,7 @@ namespace MinecraftClient
case Direction.South:
break;
default:
throw new ArgumentException(Translations.Get("exception.unknown_direction"), nameof(direction));
throw new ArgumentException(Translations.exception_unknown_direction, nameof(direction));
}
UpdateLocation(location, yaw, pitch);
@ -2611,7 +2611,7 @@ namespace MinecraftClient
if (Config.Main.Advanced.ShowChatLinks)
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, message.content));
@ -2636,8 +2636,8 @@ namespace MinecraftClient
if (inventoryID != 0)
{
Log.Info(Translations.Get("extra.inventory_open", inventoryID, inventory.Title));
Log.Info(Translations.Get("extra.inventory_interact"));
Log.Info(string.Format(Translations.extra_inventory_open, inventoryID, inventory.Title));
Log.Info(Translations.extra_inventory_interact);
DispatchBotEvent(bot => bot.OnInventoryOpen(inventoryID));
}
}
@ -2658,7 +2658,7 @@ namespace MinecraftClient
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));
}
}
@ -2712,22 +2712,22 @@ namespace MinecraftClient
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.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.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.ConvertLevelToRomanNumbers(bottomEnchantmentLevel) + " ("
+ bottomEnchantmentLevelRequirement + " " + Translations.TryGet("Enchantment.levels") + ")");
+ bottomEnchantmentLevelRequirement + " " + Translations.Enchantment_levels + ")");
Log.Info(sb.ToString());
@ -3138,12 +3138,12 @@ namespace MinecraftClient
{
if (Config.Main.Advanced.AutoRespawn)
{
Log.Info(Translations.Get("mcc.player_dead_respawn"));
Log.Info(Translations.mcc_player_dead_respawn);
respawnTicks = 10;
}
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());
}

View file

@ -25,12 +25,6 @@
</ItemGroup>
<ItemGroup>
<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>
<PackageReference Include="DnsClient" Version="1.6.1" />
@ -78,8 +72,27 @@
<ProjectReference Include="..\ConsoleInteractive\ConsoleInteractive\ConsoleInteractive\ConsoleInteractive.csproj" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="DefaultConfigResource.resx">
<Generator></Generator>
<Compile Update="Resources\AsciiArt\AsciiArt.Designer.cs">
<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>
</ItemGroup>
</Project>

View file

@ -42,7 +42,7 @@ namespace MinecraftClient
{
private static McClient? client;
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 MCLowestVersion = "1.4.6";
@ -58,8 +58,6 @@ namespace MinecraftClient
/// </summary>
static void Main(string[] args)
{
InitCulture();
Task.Run(() =>
{
// "ToLower" require "CultureInfo" to be initialized on first run, which can take a lot of time.
@ -135,15 +133,23 @@ namespace MinecraftClient
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();
string command = " ";
while (command.Length > 0)
{
ConsoleIO.WriteLine(string.Empty);
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.invaild_config", Config.Main.Advanced.InternalCmdChar.ToLogString()));
Translations.WriteLineFormatted("mcc.press_exit");
ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_invaild_config, Config.Main.Advanced.InternalCmdChar.ToLogString()));
ConsoleIO.WriteLineFormatted(Translations.mcc_press_exit, acceptnewlines: true);
command = ConsoleInteractive.ConsoleReader.RequestImmediateInput().Trim();
if (command.Length > 0)
{
@ -157,12 +163,9 @@ namespace MinecraftClient
}
else if (command.StartsWith("new"))
{
(string gameLanguage, string[] langList) = Translations.GetTranslationPriority();
Config.Main.Advanced.Language = gameLanguage;
Translations.LoadTranslationFile(langList);
Config.Main.Advanced.Language = Settings.GetDefaultGameLanguage();
WriteBackSettings(true);
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.gen_new_config", settingsIniPath));
ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_gen_new_config, settingsIniPath));
return;
}
}
@ -173,23 +176,11 @@ namespace MinecraftClient
}
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
{
//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"))
ConsoleIO.WriteLine(Translations.TryGet("mcc.help_us_translate", Settings.TranslationDocUrl));
ConsoleIO.WriteLine(string.Format(Translations.mcc_help_us_translate, Settings.TranslationProjectUrl));
WriteBackSettings(true); // format
}
@ -197,7 +188,7 @@ namespace MinecraftClient
if (Settings.CheckUpdate(Config.Head.CurrentVersion, Config.Head.LatestVersion))
{
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
@ -214,12 +205,6 @@ namespace MinecraftClient
return;
}
if (args.Contains("--trim-translation"))
{
Translations.TrimAllTranslations();
return;
}
if (args.Contains("--generate"))
{
string dataGenerator = "";
@ -230,7 +215,7 @@ namespace MinecraftClient
if (argument.StartsWith("--") && !argument.Contains("--generate"))
{
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 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")))
{
Console.WriteLine(Translations.Get("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_generator_invalid);
Console.WriteLine(Translations.error_usage + " MinecraftClient.exe --data-generator=<entity|item|block> --data-path=\"<path to Translations.json>\"");
return;
}
if (string.IsNullOrEmpty(dataPath))
{
Console.WriteLine(Translations.Get("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(string.Format(Translations.error_missing_argument, "--data-path"));
Console.WriteLine(Translations.error_usage + " MinecraftClient.exe --data-generator=<entity|item|block> --data-path=\"<path to Translations.json>\"");
return;
}
if (!File.Exists(dataPath))
{
Console.WriteLine(Translations.Get("error.generator.path", dataPath));
Console.WriteLine(string.Format(Translations.error_generator_path, dataPath));
return;
}
if (!dataPath.EndsWith(".json"))
{
Console.WriteLine(Translations.Get("error.generator.json", dataPath));
Console.WriteLine(string.Format(Translations.error_generator_json, dataPath));
return;
}
Console.WriteLine(Translations.Get("mcc.generator.generating", dataGenerator, dataPath));
Console.WriteLine(string.Format(Translations.mcc_generator_generating, dataGenerator, dataPath));
switch (dataGenerator)
{
@ -292,7 +277,7 @@ namespace MinecraftClient
break;
}
Console.WriteLine(Translations.Get("mcc.generator.done", dataGenerator, dataPath));
Console.WriteLine(string.Format(Translations.mcc_generator_done, dataGenerator, dataPath));
return;
}
@ -328,7 +313,7 @@ namespace MinecraftClient
string latestVersion = string.Format("GitHub build {0}, built on {1}-{2}-{3}", run, year, month, day);
if (needPromptUpdate)
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)
{
Config.Head.LatestVersion = latestVersion;
@ -352,7 +337,7 @@ namespace MinecraftClient
//Test line to troubleshoot invisible colors
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();
{ // Test 8 bit color
StringBuilder sb = new();
@ -366,7 +351,7 @@ namespace MinecraftClient
TerminalColorDepthType.bit_8)).Append(i);
}
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
StringBuilder sb = new();
@ -380,7 +365,7 @@ namespace MinecraftClient
TerminalColorDepthType.bit_24)).Append(i);
}
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();
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
@ -399,11 +384,11 @@ namespace MinecraftClient
bool useBrowser = Config.Main.General.AccountType == LoginType.microsoft && Config.Main.General.Method == LoginMethod.browser;
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();
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;
}
}
@ -427,7 +412,7 @@ namespace MinecraftClient
/// </summary>
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();
if (password == null || password == string.Empty) { password = "-"; }
InternalConfig.Password = password;
@ -448,7 +433,7 @@ namespace MinecraftClient
string loginLower = Settings.ToLowerIfNeed(InternalConfig.Login);
if (InternalConfig.Password == "-")
{
Translations.WriteLineFormatted("mcc.offline");
ConsoleIO.WriteLineFormatted(Translations.mcc_offline, acceptnewlines: true);
result = ProtocolHandler.LoginResult.Success;
session.PlayerID = "0";
session.PlayerName = InternalConfig.Username;
@ -462,7 +447,7 @@ namespace MinecraftClient
result = ProtocolHandler.GetTokenValidation(session);
if (result != ProtocolHandler.LoginResult.Success)
{
Translations.WriteLineFormatted("mcc.session_invalid");
ConsoleIO.WriteLineFormatted(Translations.mcc_session_invalid, acceptnewlines: true);
// Try to refresh access token
if (!string.IsNullOrWhiteSpace(session.RefreshToken))
{
@ -482,12 +467,12 @@ namespace MinecraftClient
&& Config.Main.General.AccountType == LoginType.mojang)
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)
{
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);
}
@ -510,7 +495,7 @@ namespace MinecraftClient
ConsoleIcon.SetPlayerIconAsync(InternalConfig.Username);
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();
if (Config.Main.Advanced.MinecraftRealms && !String.IsNullOrEmpty(session.ID))
@ -518,7 +503,7 @@ namespace MinecraftClient
if (InternalConfig.ServerIP == string.Empty)
{
Translations.Write("mcc.ip");
ConsoleIO.WriteLine(Translations.mcc_ip);
string addressInput = ConsoleIO.ReadLine();
if (addressInput.StartsWith("realms:"))
{
@ -526,7 +511,7 @@ namespace MinecraftClient
{
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;
}
string worldId = addressInput.Split(':')[1];
@ -543,19 +528,19 @@ namespace MinecraftClient
}
else
{
HandleFailure(Translations.Get("error.realms.server_unavailable"), false, ChatBot.DisconnectReason.LoginRejected);
HandleFailure(Translations.error_realms_server_unavailable, false, ChatBot.DisconnectReason.LoginRejected);
return;
}
}
else
{
HandleFailure(Translations.Get("error.realms.server_id"), false, ChatBot.DisconnectReason.LoginRejected);
HandleFailure(Translations.error_realms_server_id, false, ChatBot.DisconnectReason.LoginRejected);
return;
}
}
else
{
HandleFailure(Translations.Get("error.realms.disabled"), false, null);
HandleFailure(Translations.error_realms_disabled, false, null);
return;
}
}
@ -571,9 +556,9 @@ namespace MinecraftClient
protocolversion = Protocol.ProtocolHandler.MCVer2ProtocolVersion(InternalConfig.MinecraftVersion);
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
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.unknown_version", InternalConfig.MinecraftVersion));
ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_unknown_version, InternalConfig.MinecraftVersion));
if (useMcVersionOnce)
{
@ -587,11 +572,12 @@ namespace MinecraftClient
((Config.Main.Advanced.EnableForge == ForgeConfigType.force) && !ProtocolHandler.ProtocolMayForceForge(protocolversion))))
{
if (protocolversion != 0)
Translations.WriteLine("mcc.forge");
else Translations.WriteLine("mcc.retrieve");
ConsoleIO.WriteLine(Translations.mcc_forge);
else
ConsoleIO.WriteLine(Translations.mcc_retrieve);
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;
}
}
@ -604,21 +590,21 @@ namespace MinecraftClient
{
bool cacheKeyLoaded = KeysCache.InitializeDiskCache();
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))
{
playerKeyPair = KeysCache.Get(loginLower);
if (playerKeyPair.NeedRefresh())
Translations.WriteLineFormatted("mcc.profile_key_invalid");
ConsoleIO.WriteLineFormatted(Translations.mcc_profile_key_invalid, acceptnewlines: true);
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())
{
Translations.WriteLineFormatted("mcc.fetching_key");
ConsoleIO.WriteLineFormatted(Translations.mcc_fetching_key, acceptnewlines: true);
playerKeyPair = KeyUtils.GetNewProfileKeys(session.ID);
if (Config.Main.Advanced.ProfileKeyCache != CacheType.none && playerKeyPair != null)
{
@ -632,12 +618,12 @@ namespace MinecraftClient
{
if (ProtocolHandler.ProtocolMayForceForge(protocolversion))
{
Translations.WriteLine("mcc.forgeforce");
ConsoleIO.WriteLine(Translations.mcc_forgeforce);
forgeInfo = ProtocolHandler.ProtocolForceForge(protocolversion);
}
else
{
HandleFailure(Translations.Get("error.forgeforce"), true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost);
HandleFailure(Translations.error_forgeforce, true, ChatBots.AutoRelog.DisconnectReason.ConnectionLost);
return;
}
}
@ -656,31 +642,31 @@ namespace MinecraftClient
}
catch (NotSupportedException)
{
HandleFailure(Translations.Get("error.unsupported"), true);
HandleFailure(Translations.error_unsupported, true);
}
catch (Exception) { }
}
else HandleFailure(Translations.Get("error.determine"), true);
else HandleFailure(Translations.error_determine, true);
}
else
{
string failureMessage = Translations.Get("error.login");
string failureReason = "";
string failureMessage = Translations.error_login;
string failureReason = string.Empty;
failureReason = result switch
{
#pragma warning disable format // @formatter:off
ProtocolHandler.LoginResult.AccountMigrated => "error.login.migrated",
ProtocolHandler.LoginResult.ServiceUnavailable => "error.login.server",
ProtocolHandler.LoginResult.WrongPassword => "error.login.blocked",
ProtocolHandler.LoginResult.InvalidResponse => "error.login.response",
ProtocolHandler.LoginResult.NotPremium => "error.login.premium",
ProtocolHandler.LoginResult.OtherError => "error.login.network",
ProtocolHandler.LoginResult.SSLError => "error.login.ssl",
ProtocolHandler.LoginResult.UserCancel => "error.login.cancel",
_ => "error.login.unknown",
ProtocolHandler.LoginResult.AccountMigrated => Translations.error_login_migrated,
ProtocolHandler.LoginResult.ServiceUnavailable => Translations.error_login_server,
ProtocolHandler.LoginResult.WrongPassword => Translations.error_login_blocked,
ProtocolHandler.LoginResult.InvalidResponse => Translations.error_login_response,
ProtocolHandler.LoginResult.NotPremium => Translations.error_login_premium,
ProtocolHandler.LoginResult.OtherError => Translations.error_login_network,
ProtocolHandler.LoginResult.SSLError => Translations.error_login_ssl,
ProtocolHandler.LoginResult.UserCancel => Translations.error_login_cancel,
_ => Translations.error_login_unknown,
#pragma warning restore format // @formatter:on
};
failureMessage += Translations.Get(failureReason);
failureMessage += failureReason;
HandleFailure(failureMessage, false, ChatBot.DisconnectReason.LoginRejected);
}
}
@ -691,7 +677,7 @@ namespace MinecraftClient
public static void ReloadSettings()
{
if(Settings.LoadFromFile(settingsIniPath).Item1)
ConsoleIO.WriteLine(Translations.TryGet("config.load", settingsIniPath));
ConsoleIO.WriteLine(string.Format(Translations.config_load, settingsIniPath));
}
/// <summary>
@ -715,10 +701,10 @@ namespace MinecraftClient
if (offlinePrompt != null) { offlinePrompt.Item2.Cancel(); offlinePrompt.Item1.Join(); offlinePrompt = null; ConsoleIO.Reset(); }
if (delaySeconds > 0)
{
Translations.WriteLine("mcc.restart_delay", delaySeconds);
System.Threading.Thread.Sleep(delaySeconds * 1000);
ConsoleIO.WriteLine(string.Format(Translations.mcc_restart_delay, delaySeconds));
Thread.Sleep(delaySeconds * 1000);
}
Translations.WriteLine("mcc.restart");
ConsoleIO.WriteLine(Translations.mcc_restart);
ReloadSettings();
InitializeClient();
})).Start();
@ -727,7 +713,7 @@ namespace MinecraftClient
public static void DoExit(int exitcode = 0)
{
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 (offlinePrompt != null) { offlinePrompt.Item2.Cancel(); offlinePrompt.Item1.Join(); offlinePrompt = null; ConsoleIO.Reset(); }
@ -770,7 +756,7 @@ namespace MinecraftClient
{
if (versionError)
{
Translations.Write("mcc.server_version");
ConsoleIO.WriteLine(Translations.mcc_server_version);
InternalConfig.MinecraftVersion = ConsoleInteractive.ConsoleReader.RequestImmediateInput();
if (InternalConfig.MinecraftVersion != "")
{
@ -790,8 +776,8 @@ namespace MinecraftClient
bool exitThread = false;
string command = " ";
ConsoleIO.WriteLine(string.Empty);
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.disconnected", Config.Main.Advanced.InternalCmdChar.ToLogString()));
Translations.WriteLineFormatted("mcc.press_exit");
ConsoleIO.WriteLineFormatted(string.Format(Translations.mcc_disconnected, Config.Main.Advanced.InternalCmdChar.ToLogString()));
ConsoleIO.WriteLineFormatted(Translations.mcc_press_exit, acceptnewlines: true);
while (!cancellationTokenSource.IsCancellationRequested)
{
@ -844,7 +830,7 @@ namespace MinecraftClient
new Commands.Connect().GetCmdDescTranslated());
}
else
ConsoleIO.WriteLineFormatted(Translations.Get("icmd.unknown", command.Split(' ')[0]));
ConsoleIO.WriteLineFormatted(string.Format(Translations.icmd_unknown, command.Split(' ')[0]));
if (message != "")
ConsoleIO.WriteLineFormatted("§8MCC: " + message);
@ -890,15 +876,6 @@ namespace MinecraftClient
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>
/// Static initialization of build information, read from assembly information
/// </summary>

View file

@ -47,7 +47,7 @@ namespace MinecraftClient.Protocol.Handlers.Forge
Version = fmlVersion;
break;
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;
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)
p = new PacketPalette17();

View file

@ -43,19 +43,19 @@ namespace MinecraftClient.Protocol.Handlers
if (Handler.GetTerrainEnabled())
{
Translations.WriteLineFormatted("extra.terrainandmovement_disabled");
ConsoleIO.WriteLineFormatted(Translations.extra_terrainandmovement_disabled, acceptnewlines: true);
Handler.SetTerrainEnabled(false);
}
if (handler.GetInventoryEnabled())
{
Translations.WriteLineFormatted("extra.inventory_disabled");
ConsoleIO.WriteLineFormatted(Translations.extra_inventory_disabled, acceptnewlines: true);
handler.SetInventoryEnabled(false);
}
if (handler.GetEntityHandlingEnabled())
{
Translations.WriteLineFormatted("extra.entity_disabled");
ConsoleIO.WriteLineFormatted(Translations.extra_entity_disabled, acceptnewlines: true);
handler.SetEntityHandlingEnabled(false);
}
}
@ -184,7 +184,7 @@ namespace MinecraftClient.Protocol.Handlers
case 0x84: ReadData(11); nbr = ReadNextShort(); if (nbr > 0) { ReadData(nbr); } break;
case 0x85: if (protocolversion >= 74) { ReadData(13); } break;
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);
break;
case 0xC9:
@ -494,15 +494,15 @@ namespace MinecraftClient.Protocol.Handlers
byte[] token = ReadNextByteArray();
if (serverID == "-")
Translations.WriteLineFormatted("mcc.server_offline");
ConsoleIO.WriteLineFormatted(Translations.mcc_server_offline, acceptnewlines: true);
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);
}
else
{
Translations.WriteLineFormatted("error.invalid_response");
ConsoleIO.WriteLineFormatted(Translations.error_invalid_response, acceptnewlines: true);
return false;
}
}
@ -513,11 +513,11 @@ namespace MinecraftClient.Protocol.Handlers
byte[] secretKey = CryptoHandler.ClientAESPrivateKey ?? CryptoHandler.GenerateAESPrivateKey();
if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("debug.crypto");
ConsoleIO.WriteLineFormatted(Translations.debug_crypto, acceptnewlines: true);
if (serverIDhash != "-")
{
Translations.WriteLine("mcc.session");
ConsoleIO.WriteLine(Translations.mcc_session);
string serverHash = CryptoHandler.GetServerHash(serverIDhash, serverPublicKey, secretKey);
bool needCheckSession = true;
@ -539,7 +539,7 @@ namespace MinecraftClient.Protocol.Handlers
}
else
{
handler.OnConnectionLost(ChatBot.DisconnectReason.LoginRejected, Translations.Get("mcc.session_fail"));
handler.OnConnectionLost(ChatBot.DisconnectReason.LoginRejected, Translations.mcc_session_fail);
return false;
}
}
@ -578,7 +578,7 @@ namespace MinecraftClient.Protocol.Handlers
}
else
{
Translations.WriteLineFormatted("error.invalid_encrypt");
ConsoleIO.WriteLineFormatted(Translations.error_invalid_encrypt, acceptnewlines: true);
return false;
}
}
@ -891,7 +891,7 @@ namespace MinecraftClient.Protocol.Handlers
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;
}

View file

@ -107,24 +107,24 @@ namespace MinecraftClient.Protocol.Handlers
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);
}
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);
}
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);
}
// Block palette
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)
Block.Palette = new Palette119();
@ -143,7 +143,7 @@ namespace MinecraftClient.Protocol.Handlers
// Entity palette
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)
entityPalette = new EntityPalette119();
@ -164,7 +164,7 @@ namespace MinecraftClient.Protocol.Handlers
// Item palette
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)
itemPalette = new ItemPalette119();
@ -587,7 +587,7 @@ namespace MinecraftClient.Protocol.Handlers
bool lastVerifyResult = player.IsMessageChainLegal();
verifyResult = player.VerifyMessage(signedChat, timestamp, salt, ref headerSignature, ref precedingSignature, lastSeenMessages);
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();
verifyResult = player.VerifyMessageHead(ref precedingSignature, ref headerSignature, ref bodyDigest);
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
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
healthField = 9;
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
healthField = 7;
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))
handler.OnEntityHealth(EntityID, (float)healthObj);
@ -1788,7 +1788,7 @@ namespace MinecraftClient.Protocol.Handlers
if (innerException is ThreadAbortException || innerException is SocketException || innerException.InnerException is SocketException)
throw; //Thread abort or Connection lost rather than invalid data
throw new System.IO.InvalidDataException(
Translations.Get("exception.packet_process",
string.Format(Translations.exception_packet_process,
packetPalette.GetIncommingTypeById(packetID),
packetID,
protocolVersion,
@ -1953,12 +1953,12 @@ namespace MinecraftClient.Protocol.Handlers
}
else if (packetID == 0x02) //Login successful
{
log.Info(Translations.Get("mcc.server_offline"));
log.Info(Translations.mcc_server_offline);
login_phase = false;
if (!pForge.CompleteForgeHandshake())
{
log.Error(Translations.Get("error.forge"));
log.Error(Translations.error_forge);
return false;
}
@ -1978,11 +1978,11 @@ namespace MinecraftClient.Protocol.Handlers
RSACryptoServiceProvider RSAService = CryptoHandler.DecodeRSAPublicKey(serverPublicKey)!;
byte[] secretKey = CryptoHandler.ClientAESPrivateKey ?? CryptoHandler.GenerateAESPrivateKey();
log.Debug(Translations.Get("debug.crypto"));
log.Debug(Translations.debug_crypto);
if (serverIDhash != "-")
{
log.Info(Translations.Get("mcc.session"));
log.Info(Translations.mcc_session);
bool needCheckSession = true;
if (session.ServerPublicKey != null && session.SessionPreCheckTask != null
@ -2005,7 +2005,7 @@ namespace MinecraftClient.Protocol.Handlers
}
else
{
handler.OnConnectionLost(ChatBot.DisconnectReason.LoginRejected, Translations.Get("mcc.session_fail"));
handler.OnConnectionLost(ChatBot.DisconnectReason.LoginRejected, Translations.mcc_session_fail);
return false;
}
}
@ -2047,7 +2047,7 @@ namespace MinecraftClient.Protocol.Handlers
(int packetID, Queue<byte> packetData) = ReadNextPacket();
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;
}
else if (packetID == 0x00) //Login rejected
@ -2083,7 +2083,7 @@ namespace MinecraftClient.Protocol.Handlers
if (!pForge.CompleteForgeHandshake())
{
log.Error(Translations.Get("error.forge_encrypt"));
log.Error(Translations.error_forge_encrypt);
return false;
}
@ -2221,7 +2221,7 @@ namespace MinecraftClient.Protocol.Handlers
// Check for forge on the server.
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;
}

View file

@ -131,7 +131,7 @@ namespace MinecraftClient.Protocol.Handlers
byte fmlProtocolVersion = dataTypes.ReadNextByte(packetData);
if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("forge.version", fmlProtocolVersion));
ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_version, fmlProtocolVersion));
if (fmlProtocolVersion >= 1)
currentDimension = dataTypes.ReadNextInt(packetData);
@ -141,7 +141,7 @@ namespace MinecraftClient.Protocol.Handlers
// Then tell the server that we're running the same mods.
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][];
for (int i = 0; i < forgeInfo.Mods.Count; i++)
{
@ -161,7 +161,7 @@ namespace MinecraftClient.Protocol.Handlers
Thread.Sleep(2000);
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
// even though we don't actually care what mods it has.
@ -183,7 +183,7 @@ namespace MinecraftClient.Protocol.Handlers
int registrySize = dataTypes.ReadNextVarInt(packetData);
if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("forge.registry", registrySize));
ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_registry, registrySize));
fmlHandshakeState = FMLHandshakeClientState.PENDINGCOMPLETE;
}
@ -195,7 +195,7 @@ namespace MinecraftClient.Protocol.Handlers
string registryName = dataTypes.ReadNextString(packetData);
int registrySize = dataTypes.ReadNextVarInt(packetData);
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)
fmlHandshakeState = FMLHandshakeClientState.PENDINGCOMPLETE;
}
@ -207,7 +207,7 @@ namespace MinecraftClient.Protocol.Handlers
if (discriminator != FMLHandshakeDiscriminator.HandshakeAck)
return false;
if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("forge.accept_registry");
ConsoleIO.WriteLineFormatted(Translations.forge_accept_registry, acceptnewlines: true);
SendForgeHandshakePacket(FMLHandshakeDiscriminator.HandshakeAck,
new byte[] { (byte)FMLHandshakeClientState.PENDINGCOMPLETE });
fmlHandshakeState = FMLHandshakeClientState.COMPLETE;
@ -221,7 +221,7 @@ namespace MinecraftClient.Protocol.Handlers
SendForgeHandshakePacket(FMLHandshakeDiscriminator.HandshakeAck,
new byte[] { (byte)FMLHandshakeClientState.COMPLETE });
if (Settings.Config.Logging.DebugMessages)
Translations.WriteLine("forge.complete");
ConsoleIO.WriteLine(Translations.forge_complete);
fmlHandshakeState = FMLHandshakeClientState.DONE;
return true;
}
@ -301,7 +301,7 @@ namespace MinecraftClient.Protocol.Handlers
// [1]: Version is usually set to "FML2" for FML stuff and "1" for mods
if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("forge.fml2.mod");
ConsoleIO.WriteLineFormatted(Translations.forge_fml2_mod, acceptnewlines: true);
List<string> mods = new();
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.
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
fmlResponsePacket.AddRange(dataTypes.GetVarInt(2));
@ -371,7 +371,7 @@ namespace MinecraftClient.Protocol.Handlers
if (Settings.Config.Logging.DebugMessages)
{
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));
@ -390,7 +390,7 @@ namespace MinecraftClient.Protocol.Handlers
if (Settings.Config.Logging.DebugMessages)
{
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));
@ -399,7 +399,7 @@ namespace MinecraftClient.Protocol.Handlers
default:
if (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("forge.fml2.unknown", packetID));
ConsoleIO.WriteLineFormatted(string.Format(Translations.forge_fml2_unknown, packetID));
break;
}
@ -415,7 +415,7 @@ namespace MinecraftClient.Protocol.Handlers
}
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;
@ -464,7 +464,7 @@ namespace MinecraftClient.Protocol.Handlers
{
return new ForgeInfo(FMLVersion.FML2);
}
else throw new InvalidOperationException(Translations.Get("error.forgeforce"));
else throw new InvalidOperationException(Translations.error_forgeforce);
}
/// <summary>
@ -504,10 +504,10 @@ namespace MinecraftClient.Protocol.Handlers
forgeInfo = new ForgeInfo(modData, fmlVersion);
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)
{
Translations.WriteLineFormatted("forge.mod_list");
ConsoleIO.WriteLineFormatted(Translations.forge_mod_list, acceptnewlines: true);
foreach (ForgeInfo.ForgeMod mod in forgeInfo.Mods)
ConsoleIO.WriteLineFormatted("§8 " + mod.ToString());
}
@ -515,7 +515,7 @@ namespace MinecraftClient.Protocol.Handlers
}
else
{
Translations.WriteLineFormatted("forge.no_mod");
ConsoleIO.WriteLineFormatted(Translations.forge_no_mod, acceptnewlines: true);
forgeInfo = null;
}
}

View file

@ -219,7 +219,7 @@ namespace MinecraftClient.Protocol
//File not found? Try downloading language file from Mojang's servers?
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();
try
{
@ -233,7 +233,7 @@ namespace MinecraftClient.Protocol
string hash = tmp[1].Split('"')[0]; //Translations file identifier on Mojang's servers
string translation_file_location = Settings.TranslationsFile_Website_Download + '/' + hash[..2] + '/' + hash;
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);
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);
File.WriteAllText(Language_File, stringBuilder.ToString());
ConsoleIO.WriteLineFormatted(Translations.Get("chat.done", Language_File));
ConsoleIO.WriteLineFormatted(string.Format(Translations.chat_done, Language_File));
}
catch
{
Translations.WriteLineFormatted("chat.fail");
ConsoleIO.WriteLineFormatted(Translations.chat_fail, acceptnewlines: true);
}
httpClient.Dispose();
}
@ -259,7 +259,7 @@ namespace MinecraftClient.Protocol
&& File.Exists(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
@ -278,11 +278,11 @@ namespace MinecraftClient.Protocol
}
if (Settings.Config.Logging.DebugMessages)
Translations.WriteLineFormatted("chat.loaded");
ConsoleIO.WriteLineFormatted(Translations.chat_loaded, acceptnewlines: true);
}
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 (Settings.Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.loading_keys", KeysCacheFilePlaintext));
ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_loading_keys, KeysCacheFilePlaintext));
try
{
@ -135,35 +135,35 @@ namespace MinecraftClient.Protocol.Keys
PlayerKeyPair playerKeyPair = PlayerKeyPair.FromString(value);
keys[login] = playerKeyPair;
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)
{
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)
{
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)
{
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)
{
ConsoleIO.WriteLineFormatted(Translations.Get("cache.ignore_line_keys", line));
ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_ignore_line_keys, line));
}
}
}
}
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()
{
if (Config.Logging.DebugMessages)
Translations.WriteLineFormatted("cache.saving_keys");
ConsoleIO.WriteLineFormatted(Translations.cache_saving_keys, acceptnewlines: true);
List<string> KeysCacheLines = new()
{
@ -192,7 +192,7 @@ namespace MinecraftClient.Protocol.Keys
}
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
{
Translations.WriteLine("mcc.resolve", domainVal);
ConsoleIO.WriteLine(string.Format(Translations.mcc_resolve, domainVal));
var lookupClient = new LookupClient();
var response = lookupClient.Query(new DnsQuestion($"_minecraft._tcp.{domainVal}", QueryType.SRV));
if (response.HasError != true && response.Answers.SrvRecords().Any())
@ -56,7 +56,7 @@ namespace MinecraftClient.Protocol
.ThenBy(record => Guid.NewGuid())
.First();
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;
portVal = result.Port;
foundService = true;
@ -64,7 +64,7 @@ namespace MinecraftClient.Protocol
}
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));
}
@ -95,7 +95,8 @@ namespace MinecraftClient.Protocol
{
success = true;
}
else Translations.WriteLineFormatted("error.unexpect_response");
else
ConsoleIO.WriteLineFormatted(Translations.error_unexpect_response, acceptnewlines: true);
}
catch (Exception e)
{
@ -104,9 +105,9 @@ namespace MinecraftClient.Protocol
}, TimeSpan.FromSeconds(Config.Main.Advanced.ResolveSrvRecords == MainConfigHealper.MainConfig.AdvancedConfig.ResolveSrvRecordType.fast ? 10 : 30)))
{
if (protocolversion != 0 && protocolversion != protocolversionTmp)
Translations.WriteLineFormatted("error.version_different");
ConsoleIO.WriteLineFormatted(Translations.error_version_different, acceptnewlines: true);
if (protocolversion == 0 && protocolversionTmp <= 1)
Translations.WriteLineFormatted("error.no_version_report");
ConsoleIO.WriteLineFormatted(Translations.error_no_version_report, acceptnewlines: true);
if (protocolversion == 0)
protocolversion = protocolversionTmp;
forgeInfo = forgeInfoTmp;
@ -114,7 +115,7 @@ namespace MinecraftClient.Protocol
}
else
{
Translations.WriteLineFormatted("error.connection_timeout");
ConsoleIO.WriteLineFormatted(Translations.error_connection_timeout, acceptnewlines: true);
return false;
}
}
@ -138,7 +139,7 @@ namespace MinecraftClient.Protocol
if (Array.IndexOf(supportedVersions_Protocol18, ProtocolVersion) > -1)
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>
@ -490,7 +491,7 @@ namespace MinecraftClient.Protocol
}
else
{
ConsoleIO.WriteLineFormatted(Translations.Get("error.http_code", code));
ConsoleIO.WriteLineFormatted(string.Format(Translations.error_http_code, code));
return LoginResult.OtherError;
}
}
@ -692,7 +693,7 @@ namespace MinecraftClient.Protocol
}
else
{
ConsoleIO.WriteLineFormatted(Translations.Get("error.auth", code));
ConsoleIO.WriteLineFormatted(string.Format(Translations.error_auth, code));
return LoginResult.OtherError;
}
}
@ -763,10 +764,10 @@ namespace MinecraftClient.Protocol
}
if (availableWorlds.Count > 0)
{
Translations.WriteLine("mcc.realms_available");
ConsoleIO.WriteLine(Translations.mcc_realms_available);
foreach (var world in availableWorlds)
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;
else
{
Translations.WriteLine("error.realms.ip_error");
ConsoleIO.WriteLine(Translations.error_realms_ip_error);
return "";
}
}
else
{
Translations.WriteLine("error.realms.access_denied");
ConsoleIO.WriteLine(Translations.error_realms_access_denied);
return "";
}
}
@ -893,7 +894,7 @@ namespace MinecraftClient.Protocol
try
{
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);
SslStream stream = new(client.GetStream());

View file

@ -125,7 +125,7 @@ namespace MinecraftClient.Protocol.Session
if (File.Exists(SessionCacheFileMinecraft))
{
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);
try
{
@ -158,7 +158,7 @@ namespace MinecraftClient.Protocol.Session
clientID
));
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;
}
catch (InvalidDataException) { /* Not a valid session */ }
@ -172,7 +172,7 @@ namespace MinecraftClient.Protocol.Session
if (File.Exists(SessionCacheFileSerialized))
{
if (Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.converting", SessionCacheFileSerialized));
ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_converting, SessionCacheFileSerialized));
try
{
@ -184,17 +184,17 @@ namespace MinecraftClient.Protocol.Session
foreach (KeyValuePair<string, SessionToken> item in sessionsTemp)
{
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;
}
}
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)
{
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 (Config.Logging.DebugMessages)
ConsoleIO.WriteLineFormatted(Translations.Get("cache.loading_session", SessionCacheFilePlaintext));
ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_loading_session, SessionCacheFilePlaintext));
try
{
@ -218,25 +218,25 @@ namespace MinecraftClient.Protocol.Session
string login = Settings.ToLowerIfNeed(keyValue[0]);
SessionToken session = SessionToken.FromString(keyValue[1]);
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;
}
catch (InvalidDataException e)
{
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)
{
ConsoleIO.WriteLineFormatted(Translations.Get("cache.ignore_line", line));
ConsoleIO.WriteLineFormatted(string.Format(Translations.cache_ignore_line, line));
}
}
}
}
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()
{
if (Config.Logging.DebugMessages)
Translations.WriteLineFormatted("cache.saving");
ConsoleIO.WriteLineFormatted(Translations.cache_saving, acceptnewlines: true);
List<string> sessionCacheLines = new()
{
@ -265,7 +265,7 @@ namespace MinecraftClient.Protocol.Session
}
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)
{
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;
}

View file

@ -22,14 +22,14 @@ namespace MinecraftClient {
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class DefaultConfigResource {
internal class AsciiArt {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal DefaultConfigResource() {
internal AsciiArt() {
}
/// <summary>
@ -39,7 +39,7 @@ namespace MinecraftClient {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
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;
}
return resourceMan;
@ -75,9 +75,9 @@ namespace MinecraftClient {
///║║ 5 ║ 6 ║ 7 ║ 8 ║ 9 ║10 ║11 ║12 ║13 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary>
internal static string ContainerType_BrewingStand {
internal static string Container_BrewingStand {
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 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary>
internal static string ContainerType_Crafting {
internal static string Container_Crafting {
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 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary>
internal static string ContainerType_EnchantingTable {
internal static string Container_EnchantingTable {
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;;.
/// </summary>
internal static string ContainerType_Furnace {
internal static string Container_Furnace {
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 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary>
internal static string ContainerType_Generic_3x3 {
internal static string Container_Generic_3x3 {
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 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary>
internal static string ContainerType_Generic_9x3 {
internal static string Container_Generic_9x3 {
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 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary>
internal static string ContainerType_Generic_9x6 {
internal static string Container_Generic_9x6 {
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;;.
/// </summary>
internal static string ContainerType_Grindstone {
internal static string Container_Grindstone {
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 ║║
///║╚═══╩═══╩═══╩═══╩══ [rest of string was truncated]&quot;;.
/// </summary>
internal static string ContainerType_Hopper {
internal static string Container_Hopper {
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 ║║
///║╠═══╬═══╬═══╬═══╬══ [rest of string was truncated]&quot;;.
/// </summary>
internal static string ContainerType_PlayerInventory {
internal static string Container_PlayerInventory {
get {
return ResourceManager.GetString("ContainerType_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);
return ResourceManager.GetString("Container_PlayerInventory", 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>

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