mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-15 13:04:36 +00:00
feat: Added Written Book Support
This commit is contained in:
commit
acabe95801
17 changed files with 3969 additions and 6 deletions
300
MinecraftClient/Commands/Book.cs
Normal file
300
MinecraftClient/Commands/Book.cs
Normal file
|
|
@ -0,0 +1,300 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Brigadier.NET;
|
||||
using Brigadier.NET.Builder;
|
||||
using MinecraftClient.CommandHandler;
|
||||
using MinecraftClient.Inventory;
|
||||
using MinecraftClient.Tui;
|
||||
|
||||
namespace MinecraftClient.Commands
|
||||
{
|
||||
public class Book : Command
|
||||
{
|
||||
private const char PageDelimiter = '\f';
|
||||
|
||||
public override string CmdName => "book";
|
||||
public override string CmdUsage => Translations.cmd_book_usage;
|
||||
public override string CmdDesc => Translations.cmd_book_desc;
|
||||
|
||||
public override void RegisterCommand(CommandDispatcher<CmdResult> dispatcher)
|
||||
{
|
||||
dispatcher.Register(l => l.Literal("help")
|
||||
.Then(l => l.Literal(CmdName)
|
||||
.Executes(r => GetUsage(r.Source, string.Empty))
|
||||
.Then(l => l.Literal("read").Executes(r => GetUsage(r.Source, "read")))
|
||||
.Then(l => l.Literal("write").Executes(r => GetUsage(r.Source, "write")))
|
||||
.Then(l => l.Literal("edit").Executes(r => GetUsage(r.Source, "edit")))
|
||||
.Then(l => l.Literal("sign").Executes(r => GetUsage(r.Source, "sign")))));
|
||||
|
||||
dispatcher.Register(l => l.Literal(CmdName)
|
||||
.Then(l => l.Literal("read")
|
||||
.Executes(r => ReadBook(r.Source, null))
|
||||
.Then(l => l.Argument("Page", Arguments.Integer(min: 1))
|
||||
.Executes(r => ReadBook(r.Source, Arguments.GetInteger(r, "Page")))))
|
||||
.Then(l => l.Literal("write")
|
||||
.Then(l => l.Literal("text")
|
||||
.Then(l => l.Argument("Text", Arguments.GreedyString())
|
||||
.Executes(r => WriteBook(r.Source, Arguments.GetString(r, "Text")))))
|
||||
.Then(l => l.Literal("file")
|
||||
.Then(l => l.Argument("Path", Arguments.GreedyString())
|
||||
.Executes(r => WriteBookFromFile(r.Source, Arguments.GetString(r, "Path"))))))
|
||||
.Then(l => l.Literal("edit")
|
||||
.Executes(r => OpenEditor(r.Source))
|
||||
.Then(l => l.Literal("page")
|
||||
.Then(l => l.Argument("Page", Arguments.Integer(min: 1))
|
||||
.Then(l => l.Argument("Text", Arguments.GreedyString())
|
||||
.Executes(r => EditPage(r.Source, Arguments.GetInteger(r, "Page"), Arguments.GetString(r, "Text"))))))
|
||||
.Then(l => l.Literal("insert")
|
||||
.Then(l => l.Argument("Page", Arguments.Integer(min: 1))
|
||||
.Then(l => l.Argument("Text", Arguments.GreedyString())
|
||||
.Executes(r => InsertPage(r.Source, Arguments.GetInteger(r, "Page"), Arguments.GetString(r, "Text"))))))
|
||||
.Then(l => l.Literal("delete")
|
||||
.Then(l => l.Argument("Page", Arguments.Integer(min: 1))
|
||||
.Executes(r => DeletePage(r.Source, Arguments.GetInteger(r, "Page"))))))
|
||||
.Then(l => l.Literal("sign")
|
||||
.Then(l => l.Argument("Title", Arguments.GreedyString())
|
||||
.Executes(r => SignBook(r.Source, Arguments.GetString(r, "Title")))))
|
||||
.Then(l => l.Literal("_help")
|
||||
.Executes(r => GetUsage(r.Source, string.Empty))
|
||||
.Redirect(dispatcher.GetRoot().GetChild("help").GetChild(CmdName))));
|
||||
}
|
||||
|
||||
private int GetUsage(CmdResult r, string? cmd)
|
||||
{
|
||||
return r.SetAndReturn(cmd switch
|
||||
{
|
||||
"read" => Translations.cmd_book_help_read,
|
||||
"write" => Translations.cmd_book_help_write,
|
||||
"edit" => Translations.cmd_book_help_edit,
|
||||
"sign" => Translations.cmd_book_help_sign,
|
||||
_ => GetCmdDescTranslated()
|
||||
});
|
||||
}
|
||||
|
||||
private int ReadBook(CmdResult r, int? page)
|
||||
{
|
||||
McClient handler = CmdResult.currentHandler!;
|
||||
if (!EnsureInventory(r, handler))
|
||||
return -1;
|
||||
|
||||
if (!handler.TryGetHeldBookContent(out BookContent content))
|
||||
return r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_not_holding_book);
|
||||
|
||||
if (page is null && BookTuiHost.TryOpen(handler, BookHand.Main, editable: false))
|
||||
return r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_tui_opened);
|
||||
|
||||
handler.Log.Info(FormatBook(content, page));
|
||||
return r.SetAndReturn(CmdResult.Status.Done);
|
||||
}
|
||||
|
||||
private int OpenEditor(CmdResult r)
|
||||
{
|
||||
McClient handler = CmdResult.currentHandler!;
|
||||
if (!EnsureWritable(r, handler, out _, Translations.cmd_book_cannot_edit_signed))
|
||||
return -1;
|
||||
|
||||
return BookTuiHost.TryOpen(handler, BookHand.Main, editable: true)
|
||||
? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_tui_opened)
|
||||
: r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_tui_required);
|
||||
}
|
||||
|
||||
private int WriteBook(CmdResult r, string text)
|
||||
{
|
||||
McClient handler = CmdResult.currentHandler!;
|
||||
if (!EnsureWritable(r, handler, out _, Translations.cmd_book_cannot_edit_signed))
|
||||
return -1;
|
||||
|
||||
IReadOnlyList<string> pages = SplitPages(text);
|
||||
if (!Validate(r, handler, pages, title: null))
|
||||
return -1;
|
||||
|
||||
return handler.SendBookEdit(pages)
|
||||
? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_write_sent)
|
||||
: r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_write_failed);
|
||||
}
|
||||
|
||||
private int WriteBookFromFile(CmdResult r, string path)
|
||||
{
|
||||
if (!File.Exists(path))
|
||||
return r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_file_not_found, path));
|
||||
|
||||
return WriteBook(r, File.ReadAllText(path, Encoding.UTF8));
|
||||
}
|
||||
|
||||
private int EditPage(CmdResult r, int page, string text)
|
||||
{
|
||||
McClient handler = CmdResult.currentHandler!;
|
||||
if (!EnsureWritable(r, handler, out BookContent content, Translations.cmd_book_cannot_edit_signed))
|
||||
return -1;
|
||||
|
||||
List<string> pages = content.Pages.ToList();
|
||||
if (page > pages.Count)
|
||||
return r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_page_out_of_range, page, pages.Count));
|
||||
|
||||
pages[page - 1] = DecodeInlineText(text);
|
||||
if (!Validate(r, handler, pages, title: null))
|
||||
return -1;
|
||||
|
||||
return handler.SendBookEdit(pages)
|
||||
? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_edit_sent)
|
||||
: r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_write_failed);
|
||||
}
|
||||
|
||||
private int InsertPage(CmdResult r, int page, string text)
|
||||
{
|
||||
McClient handler = CmdResult.currentHandler!;
|
||||
if (!EnsureWritable(r, handler, out BookContent content, Translations.cmd_book_cannot_edit_signed))
|
||||
return -1;
|
||||
|
||||
List<string> pages = content.Pages.ToList();
|
||||
if (page > pages.Count + 1)
|
||||
return r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_page_out_of_range, page, pages.Count));
|
||||
|
||||
pages.Insert(page - 1, DecodeInlineText(text));
|
||||
if (!Validate(r, handler, pages, title: null))
|
||||
return -1;
|
||||
|
||||
return handler.SendBookEdit(pages)
|
||||
? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_edit_sent)
|
||||
: r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_write_failed);
|
||||
}
|
||||
|
||||
private int DeletePage(CmdResult r, int page)
|
||||
{
|
||||
McClient handler = CmdResult.currentHandler!;
|
||||
if (!EnsureWritable(r, handler, out BookContent content, Translations.cmd_book_cannot_edit_signed))
|
||||
return -1;
|
||||
|
||||
List<string> pages = content.Pages.ToList();
|
||||
if (page > pages.Count)
|
||||
return r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_page_out_of_range, page, pages.Count));
|
||||
|
||||
pages.RemoveAt(page - 1);
|
||||
if (pages.Count == 0)
|
||||
pages.Add(string.Empty);
|
||||
|
||||
if (!Validate(r, handler, pages, title: null))
|
||||
return -1;
|
||||
|
||||
return handler.SendBookEdit(pages)
|
||||
? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_edit_sent)
|
||||
: r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_write_failed);
|
||||
}
|
||||
|
||||
private int SignBook(CmdResult r, string title)
|
||||
{
|
||||
McClient handler = CmdResult.currentHandler!;
|
||||
if (!EnsureWritable(r, handler, out BookContent content, Translations.cmd_book_already_signed))
|
||||
return -1;
|
||||
|
||||
string normalizedTitle = title.Trim();
|
||||
if (!Validate(r, handler, content.Pages, normalizedTitle))
|
||||
return -1;
|
||||
|
||||
return handler.SendBookEdit(content.Pages, normalizedTitle)
|
||||
? r.SetAndReturn(CmdResult.Status.Done, Translations.cmd_book_sign_sent)
|
||||
: r.SetAndReturn(CmdResult.Status.Fail, Translations.cmd_book_write_failed);
|
||||
}
|
||||
|
||||
private static bool EnsureInventory(CmdResult r, McClient handler)
|
||||
{
|
||||
if (handler.GetInventoryEnabled())
|
||||
return true;
|
||||
|
||||
r.SetAndReturn(CmdResult.Status.FailNeedInventory);
|
||||
return false;
|
||||
}
|
||||
|
||||
private static bool EnsureWritable(CmdResult r, McClient handler, out BookContent content, string signedBookMessage)
|
||||
{
|
||||
content = BookContent.EmptyWritable;
|
||||
if (!EnsureInventory(r, handler))
|
||||
return false;
|
||||
|
||||
Item? item = handler.GetHeldBook();
|
||||
if (!BookContentHelper.IsWritableBook(item))
|
||||
{
|
||||
r.SetAndReturn(CmdResult.Status.Fail, GetWritableBookFailureMessage(item, signedBookMessage));
|
||||
return false;
|
||||
}
|
||||
|
||||
return BookContentHelper.TryRead(item, out content);
|
||||
}
|
||||
|
||||
private static string GetWritableBookFailureMessage(Item? item, string signedBookMessage)
|
||||
{
|
||||
return BookContentHelper.TryRead(item, out BookContent content) && content.IsSigned
|
||||
? signedBookMessage
|
||||
: Translations.cmd_book_not_holding_writable;
|
||||
}
|
||||
|
||||
private static IReadOnlyList<string> SplitPages(string text)
|
||||
{
|
||||
return BookContentHelper.NormalizePages(DecodeInlineText(text).Split(PageDelimiter));
|
||||
}
|
||||
|
||||
private static string DecodeInlineText(string text)
|
||||
{
|
||||
return text.Replace("\\f", PageDelimiter.ToString(), StringComparison.Ordinal)
|
||||
.Replace("\\n", "\n", StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
private static bool Validate(CmdResult r, McClient handler, IReadOnlyList<string> pages, string? title)
|
||||
{
|
||||
BookLimits limits = BookLimits.ForProtocol(handler.GetProtocolVersion());
|
||||
|
||||
if (pages.Count > limits.MaxPages)
|
||||
{
|
||||
r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_too_many_pages, pages.Count, limits.MaxPages));
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int i = 0; i < pages.Count; i++)
|
||||
{
|
||||
if (pages[i].Length > limits.MaxPageLength)
|
||||
{
|
||||
r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_page_too_long, i + 1, pages[i].Length, limits.MaxPageLength));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (title is not null && (title.Length == 0 || title.Length > limits.MaxTitleLength))
|
||||
{
|
||||
r.SetAndReturn(CmdResult.Status.Fail, string.Format(Translations.cmd_book_title_invalid, limits.MaxTitleLength));
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private static string FormatBook(BookContent content, int? page)
|
||||
{
|
||||
StringBuilder sb = new();
|
||||
sb.AppendLine(content.IsSigned
|
||||
? string.Format(Translations.cmd_book_header_signed, content.Title ?? string.Empty, content.Author ?? string.Empty)
|
||||
: Translations.cmd_book_header_writable);
|
||||
|
||||
if (page is not null)
|
||||
{
|
||||
int index = page.Value - 1;
|
||||
if (index < 0 || index >= content.Pages.Count)
|
||||
return string.Format(Translations.cmd_book_page_out_of_range, page.Value, content.Pages.Count);
|
||||
|
||||
sb.AppendLine(string.Format(Translations.cmd_book_page_header, page.Value, content.Pages.Count));
|
||||
sb.Append(content.Pages[index]);
|
||||
return sb.ToString();
|
||||
}
|
||||
|
||||
for (int i = 0; i < content.Pages.Count; i++)
|
||||
{
|
||||
sb.AppendLine(string.Format(Translations.cmd_book_page_header, i + 1, content.Pages.Count));
|
||||
sb.AppendLine(content.Pages[i]);
|
||||
}
|
||||
|
||||
return sb.ToString().TrimEnd();
|
||||
}
|
||||
}
|
||||
}
|
||||
183
MinecraftClient/Inventory/BookContent.cs
Normal file
183
MinecraftClient/Inventory/BookContent.cs
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.Json;
|
||||
using MinecraftClient.Protocol.Handlers;
|
||||
using MinecraftClient.Protocol.Handlers.StructuredComponents.Components._1_20_6;
|
||||
using MinecraftClient.Protocol.Message;
|
||||
|
||||
namespace MinecraftClient.Inventory;
|
||||
|
||||
public enum BookHand
|
||||
{
|
||||
Main = 0,
|
||||
Off = 1
|
||||
}
|
||||
|
||||
public sealed record BookLimits(int MaxPages, int MaxPageLength, int MaxTitleLength)
|
||||
{
|
||||
public static BookLimits ForProtocol(int protocolVersion)
|
||||
{
|
||||
int maxPageLength = protocolVersion switch
|
||||
{
|
||||
>= Protocol18Handler.MC_1_21_2_Version => 1024,
|
||||
>= Protocol18Handler.MC_1_17_Version => 8192,
|
||||
_ => 32767
|
||||
};
|
||||
|
||||
int maxTitleLength = protocolVersion switch
|
||||
{
|
||||
>= Protocol18Handler.MC_1_21_2_Version => 32,
|
||||
>= Protocol18Handler.MC_1_17_Version => 128,
|
||||
_ => 16
|
||||
};
|
||||
|
||||
return new BookLimits(100, maxPageLength, maxTitleLength);
|
||||
}
|
||||
}
|
||||
|
||||
public sealed record BookContent(
|
||||
IReadOnlyList<string> Pages,
|
||||
string? Title,
|
||||
string? Author,
|
||||
int Generation,
|
||||
bool IsSigned)
|
||||
{
|
||||
public static BookContent EmptyWritable { get; } = new([string.Empty], null, null, 0, false);
|
||||
}
|
||||
|
||||
public static class BookContentHelper
|
||||
{
|
||||
public static bool IsBook(Item? item) => item?.Type is ItemType.WritableBook or ItemType.WrittenBook;
|
||||
|
||||
public static bool IsWritableBook(Item? item) => item?.Type == ItemType.WritableBook;
|
||||
|
||||
public static bool TryRead(Item? item, out BookContent content)
|
||||
{
|
||||
content = BookContent.EmptyWritable;
|
||||
|
||||
if (item is null || item.IsEmpty)
|
||||
return false;
|
||||
|
||||
return item.Type switch
|
||||
{
|
||||
ItemType.WritableBook => TryReadWritable(item, out content),
|
||||
ItemType.WrittenBook => TryReadWritten(item, out content),
|
||||
_ => false
|
||||
};
|
||||
}
|
||||
|
||||
public static Item CreateWritablePayload(Item currentBook, IReadOnlyList<string> pages)
|
||||
{
|
||||
return new Item(ItemType.WritableBook, 1, currentBook.Data, new Dictionary<string, object>
|
||||
{
|
||||
["pages"] = pages.Cast<object>().ToArray()
|
||||
});
|
||||
}
|
||||
|
||||
public static Item CreateWrittenPayload(Item currentBook, IReadOnlyList<string> pages, string title, string author, bool encodePagesAsJson)
|
||||
{
|
||||
object[] encodedPages = pages
|
||||
.Select(page => encodePagesAsJson ? ToJsonTextComponent(page) : page)
|
||||
.Cast<object>()
|
||||
.ToArray();
|
||||
|
||||
return new Item(ItemType.WrittenBook, 1, currentBook.Data, new Dictionary<string, object>
|
||||
{
|
||||
["author"] = author,
|
||||
["title"] = title,
|
||||
["pages"] = encodedPages
|
||||
});
|
||||
}
|
||||
|
||||
public static IReadOnlyList<string> NormalizePages(IEnumerable<string> pages)
|
||||
{
|
||||
string[] normalized = pages.Select(page => page ?? string.Empty).ToArray();
|
||||
return normalized.Length == 0 ? [string.Empty] : normalized;
|
||||
}
|
||||
|
||||
private static bool TryReadWritable(Item item, out BookContent content)
|
||||
{
|
||||
if (item.Components is not null)
|
||||
{
|
||||
var component = item.Components.OfType<WritableBlookContentComponent>().FirstOrDefault();
|
||||
if (component is not null)
|
||||
{
|
||||
content = new BookContent(
|
||||
NormalizePages(component.Pages.Select(page => page.RawContent)),
|
||||
null,
|
||||
null,
|
||||
0,
|
||||
IsSigned: false);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
content = new BookContent(ReadStringList(item.NBT, "pages", parseJson: false), null, null, 0, IsSigned: false);
|
||||
return true;
|
||||
}
|
||||
|
||||
private static bool TryReadWritten(Item item, out BookContent content)
|
||||
{
|
||||
if (item.Components is not null)
|
||||
{
|
||||
var component = item.Components.OfType<WrittenBlookContentComponent>().FirstOrDefault();
|
||||
if (component is not null)
|
||||
{
|
||||
content = new BookContent(
|
||||
NormalizePages(component.Pages.Select(page => page.RawContent)),
|
||||
component.RawTitle,
|
||||
component.Author,
|
||||
component.Generation,
|
||||
IsSigned: true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
string? title = ReadString(item.NBT, "title");
|
||||
string? author = ReadString(item.NBT, "author");
|
||||
int generation = ReadInt(item.NBT, "generation");
|
||||
content = new BookContent(ReadStringList(item.NBT, "pages", parseJson: true), title, author, generation, IsSigned: true);
|
||||
return true;
|
||||
}
|
||||
|
||||
private static IReadOnlyList<string> ReadStringList(Dictionary<string, object>? nbt, string key, bool parseJson)
|
||||
{
|
||||
if (nbt is null || !nbt.TryGetValue(key, out object? value) || value is not object[] values)
|
||||
return [string.Empty];
|
||||
|
||||
string[] pages = values
|
||||
.Select(value => value?.ToString() ?? string.Empty)
|
||||
.Select(value => parseJson ? ChatParser.ParseText(value) : value)
|
||||
.ToArray();
|
||||
|
||||
return pages.Length == 0 ? [string.Empty] : pages;
|
||||
}
|
||||
|
||||
private static string? ReadString(Dictionary<string, object>? nbt, string key)
|
||||
{
|
||||
return nbt is not null && nbt.TryGetValue(key, out object? value)
|
||||
? value?.ToString()
|
||||
: null;
|
||||
}
|
||||
|
||||
private static int ReadInt(Dictionary<string, object>? nbt, string key)
|
||||
{
|
||||
if (nbt is null || !nbt.TryGetValue(key, out object? value) || value is null)
|
||||
return 0;
|
||||
|
||||
return value switch
|
||||
{
|
||||
int i => i,
|
||||
short s => s,
|
||||
byte b => b,
|
||||
_ when int.TryParse(value.ToString(), out int parsed) => parsed,
|
||||
_ => 0
|
||||
};
|
||||
}
|
||||
|
||||
private static string ToJsonTextComponent(string text)
|
||||
{
|
||||
return JsonSerializer.Serialize(new Dictionary<string, string> { ["text"] = text });
|
||||
}
|
||||
}
|
||||
|
|
@ -272,4 +272,4 @@ namespace MinecraftClient.Inventory
|
|||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
803
MinecraftClient/Inventory/ItemPalettes/ItemPalette113.cs
Normal file
803
MinecraftClient/Inventory/ItemPalettes/ItemPalette113.cs
Normal file
|
|
@ -0,0 +1,803 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace MinecraftClient.Inventory.ItemPalettes
|
||||
{
|
||||
public class ItemPalette113 : ItemPalette
|
||||
{
|
||||
private static readonly Dictionary<int, ItemType> mappings = new();
|
||||
|
||||
static ItemPalette113()
|
||||
{
|
||||
mappings[0] = ItemType.Air;
|
||||
mappings[1] = ItemType.Stone;
|
||||
mappings[2] = ItemType.Granite;
|
||||
mappings[3] = ItemType.PolishedGranite;
|
||||
mappings[4] = ItemType.Diorite;
|
||||
mappings[5] = ItemType.PolishedDiorite;
|
||||
mappings[6] = ItemType.Andesite;
|
||||
mappings[7] = ItemType.PolishedAndesite;
|
||||
mappings[8] = ItemType.GrassBlock;
|
||||
mappings[9] = ItemType.Dirt;
|
||||
mappings[10] = ItemType.CoarseDirt;
|
||||
mappings[11] = ItemType.Podzol;
|
||||
mappings[12] = ItemType.Cobblestone;
|
||||
mappings[13] = ItemType.OakPlanks;
|
||||
mappings[14] = ItemType.SprucePlanks;
|
||||
mappings[15] = ItemType.BirchPlanks;
|
||||
mappings[16] = ItemType.JunglePlanks;
|
||||
mappings[17] = ItemType.AcaciaPlanks;
|
||||
mappings[18] = ItemType.DarkOakPlanks;
|
||||
mappings[19] = ItemType.OakSapling;
|
||||
mappings[20] = ItemType.SpruceSapling;
|
||||
mappings[21] = ItemType.BirchSapling;
|
||||
mappings[22] = ItemType.JungleSapling;
|
||||
mappings[23] = ItemType.AcaciaSapling;
|
||||
mappings[24] = ItemType.DarkOakSapling;
|
||||
mappings[25] = ItemType.Bedrock;
|
||||
mappings[26] = ItemType.Sand;
|
||||
mappings[27] = ItemType.RedSand;
|
||||
mappings[28] = ItemType.Gravel;
|
||||
mappings[29] = ItemType.GoldOre;
|
||||
mappings[30] = ItemType.IronOre;
|
||||
mappings[31] = ItemType.CoalOre;
|
||||
mappings[32] = ItemType.OakLog;
|
||||
mappings[33] = ItemType.SpruceLog;
|
||||
mappings[34] = ItemType.BirchLog;
|
||||
mappings[35] = ItemType.JungleLog;
|
||||
mappings[36] = ItemType.AcaciaLog;
|
||||
mappings[37] = ItemType.DarkOakLog;
|
||||
mappings[38] = ItemType.StrippedOakLog;
|
||||
mappings[39] = ItemType.StrippedSpruceLog;
|
||||
mappings[40] = ItemType.StrippedBirchLog;
|
||||
mappings[41] = ItemType.StrippedJungleLog;
|
||||
mappings[42] = ItemType.StrippedAcaciaLog;
|
||||
mappings[43] = ItemType.StrippedDarkOakLog;
|
||||
mappings[44] = ItemType.StrippedOakWood;
|
||||
mappings[45] = ItemType.StrippedSpruceWood;
|
||||
mappings[46] = ItemType.StrippedBirchWood;
|
||||
mappings[47] = ItemType.StrippedJungleWood;
|
||||
mappings[48] = ItemType.StrippedAcaciaWood;
|
||||
mappings[49] = ItemType.StrippedDarkOakWood;
|
||||
mappings[50] = ItemType.OakWood;
|
||||
mappings[51] = ItemType.SpruceWood;
|
||||
mappings[52] = ItemType.BirchWood;
|
||||
mappings[53] = ItemType.JungleWood;
|
||||
mappings[54] = ItemType.AcaciaWood;
|
||||
mappings[55] = ItemType.DarkOakWood;
|
||||
mappings[56] = ItemType.OakLeaves;
|
||||
mappings[57] = ItemType.SpruceLeaves;
|
||||
mappings[58] = ItemType.BirchLeaves;
|
||||
mappings[59] = ItemType.JungleLeaves;
|
||||
mappings[60] = ItemType.AcaciaLeaves;
|
||||
mappings[61] = ItemType.DarkOakLeaves;
|
||||
mappings[62] = ItemType.Sponge;
|
||||
mappings[63] = ItemType.WetSponge;
|
||||
mappings[64] = ItemType.Glass;
|
||||
mappings[65] = ItemType.LapisOre;
|
||||
mappings[66] = ItemType.LapisBlock;
|
||||
mappings[67] = ItemType.Dispenser;
|
||||
mappings[68] = ItemType.Sandstone;
|
||||
mappings[69] = ItemType.ChiseledSandstone;
|
||||
mappings[70] = ItemType.CutSandstone;
|
||||
mappings[71] = ItemType.NoteBlock;
|
||||
mappings[72] = ItemType.PoweredRail;
|
||||
mappings[73] = ItemType.DetectorRail;
|
||||
mappings[74] = ItemType.StickyPiston;
|
||||
mappings[75] = ItemType.Cobweb;
|
||||
mappings[76] = ItemType.ShortGrass;
|
||||
mappings[77] = ItemType.Fern;
|
||||
mappings[78] = ItemType.DeadBush;
|
||||
mappings[79] = ItemType.Seagrass;
|
||||
mappings[80] = ItemType.SeaPickle;
|
||||
mappings[81] = ItemType.Piston;
|
||||
mappings[82] = ItemType.WhiteWool;
|
||||
mappings[83] = ItemType.OrangeWool;
|
||||
mappings[84] = ItemType.MagentaWool;
|
||||
mappings[85] = ItemType.LightBlueWool;
|
||||
mappings[86] = ItemType.YellowWool;
|
||||
mappings[87] = ItemType.LimeWool;
|
||||
mappings[88] = ItemType.PinkWool;
|
||||
mappings[89] = ItemType.GrayWool;
|
||||
mappings[90] = ItemType.LightGrayWool;
|
||||
mappings[91] = ItemType.CyanWool;
|
||||
mappings[92] = ItemType.PurpleWool;
|
||||
mappings[93] = ItemType.BlueWool;
|
||||
mappings[94] = ItemType.BrownWool;
|
||||
mappings[95] = ItemType.GreenWool;
|
||||
mappings[96] = ItemType.RedWool;
|
||||
mappings[97] = ItemType.BlackWool;
|
||||
mappings[98] = ItemType.Dandelion;
|
||||
mappings[99] = ItemType.Poppy;
|
||||
mappings[100] = ItemType.BlueOrchid;
|
||||
mappings[101] = ItemType.Allium;
|
||||
mappings[102] = ItemType.AzureBluet;
|
||||
mappings[103] = ItemType.RedTulip;
|
||||
mappings[104] = ItemType.OrangeTulip;
|
||||
mappings[105] = ItemType.WhiteTulip;
|
||||
mappings[106] = ItemType.PinkTulip;
|
||||
mappings[107] = ItemType.OxeyeDaisy;
|
||||
mappings[108] = ItemType.BrownMushroom;
|
||||
mappings[109] = ItemType.RedMushroom;
|
||||
mappings[110] = ItemType.GoldBlock;
|
||||
mappings[111] = ItemType.IronBlock;
|
||||
mappings[112] = ItemType.OakSlab;
|
||||
mappings[113] = ItemType.SpruceSlab;
|
||||
mappings[114] = ItemType.BirchSlab;
|
||||
mappings[115] = ItemType.JungleSlab;
|
||||
mappings[116] = ItemType.AcaciaSlab;
|
||||
mappings[117] = ItemType.DarkOakSlab;
|
||||
mappings[118] = ItemType.StoneSlab;
|
||||
mappings[119] = ItemType.SandstoneSlab;
|
||||
mappings[120] = ItemType.PetrifiedOakSlab;
|
||||
mappings[121] = ItemType.CobblestoneSlab;
|
||||
mappings[122] = ItemType.BrickSlab;
|
||||
mappings[123] = ItemType.StoneBrickSlab;
|
||||
mappings[124] = ItemType.NetherBrickSlab;
|
||||
mappings[125] = ItemType.QuartzSlab;
|
||||
mappings[126] = ItemType.RedSandstoneSlab;
|
||||
mappings[127] = ItemType.PurpurSlab;
|
||||
mappings[128] = ItemType.PrismarineSlab;
|
||||
mappings[129] = ItemType.PrismarineBrickSlab;
|
||||
mappings[130] = ItemType.DarkPrismarineSlab;
|
||||
mappings[131] = ItemType.SmoothQuartz;
|
||||
mappings[132] = ItemType.SmoothRedSandstone;
|
||||
mappings[133] = ItemType.SmoothSandstone;
|
||||
mappings[134] = ItemType.SmoothStone;
|
||||
mappings[135] = ItemType.Bricks;
|
||||
mappings[136] = ItemType.Tnt;
|
||||
mappings[137] = ItemType.Bookshelf;
|
||||
mappings[138] = ItemType.MossyCobblestone;
|
||||
mappings[139] = ItemType.Obsidian;
|
||||
mappings[140] = ItemType.Torch;
|
||||
mappings[141] = ItemType.EndRod;
|
||||
mappings[142] = ItemType.ChorusPlant;
|
||||
mappings[143] = ItemType.ChorusFlower;
|
||||
mappings[144] = ItemType.PurpurBlock;
|
||||
mappings[145] = ItemType.PurpurPillar;
|
||||
mappings[146] = ItemType.PurpurStairs;
|
||||
mappings[147] = ItemType.Spawner;
|
||||
mappings[148] = ItemType.OakStairs;
|
||||
mappings[149] = ItemType.Chest;
|
||||
mappings[150] = ItemType.DiamondOre;
|
||||
mappings[151] = ItemType.DiamondBlock;
|
||||
mappings[152] = ItemType.CraftingTable;
|
||||
mappings[153] = ItemType.Farmland;
|
||||
mappings[154] = ItemType.Furnace;
|
||||
mappings[155] = ItemType.Ladder;
|
||||
mappings[156] = ItemType.Rail;
|
||||
mappings[157] = ItemType.CobblestoneStairs;
|
||||
mappings[158] = ItemType.Lever;
|
||||
mappings[159] = ItemType.StonePressurePlate;
|
||||
mappings[160] = ItemType.OakPressurePlate;
|
||||
mappings[161] = ItemType.SprucePressurePlate;
|
||||
mappings[162] = ItemType.BirchPressurePlate;
|
||||
mappings[163] = ItemType.JunglePressurePlate;
|
||||
mappings[164] = ItemType.AcaciaPressurePlate;
|
||||
mappings[165] = ItemType.DarkOakPressurePlate;
|
||||
mappings[166] = ItemType.RedstoneOre;
|
||||
mappings[167] = ItemType.RedstoneTorch;
|
||||
mappings[168] = ItemType.StoneButton;
|
||||
mappings[169] = ItemType.Snow;
|
||||
mappings[170] = ItemType.Ice;
|
||||
mappings[171] = ItemType.SnowBlock;
|
||||
mappings[172] = ItemType.Cactus;
|
||||
mappings[173] = ItemType.Clay;
|
||||
mappings[174] = ItemType.Jukebox;
|
||||
mappings[175] = ItemType.OakFence;
|
||||
mappings[176] = ItemType.SpruceFence;
|
||||
mappings[177] = ItemType.BirchFence;
|
||||
mappings[178] = ItemType.JungleFence;
|
||||
mappings[179] = ItemType.AcaciaFence;
|
||||
mappings[180] = ItemType.DarkOakFence;
|
||||
mappings[181] = ItemType.Pumpkin;
|
||||
mappings[182] = ItemType.CarvedPumpkin;
|
||||
mappings[183] = ItemType.Netherrack;
|
||||
mappings[184] = ItemType.SoulSand;
|
||||
mappings[185] = ItemType.Glowstone;
|
||||
mappings[186] = ItemType.JackOLantern;
|
||||
mappings[187] = ItemType.OakTrapdoor;
|
||||
mappings[188] = ItemType.SpruceTrapdoor;
|
||||
mappings[189] = ItemType.BirchTrapdoor;
|
||||
mappings[190] = ItemType.JungleTrapdoor;
|
||||
mappings[191] = ItemType.AcaciaTrapdoor;
|
||||
mappings[192] = ItemType.DarkOakTrapdoor;
|
||||
mappings[193] = ItemType.InfestedStone;
|
||||
mappings[194] = ItemType.InfestedCobblestone;
|
||||
mappings[195] = ItemType.InfestedStoneBricks;
|
||||
mappings[196] = ItemType.InfestedMossyStoneBricks;
|
||||
mappings[197] = ItemType.InfestedCrackedStoneBricks;
|
||||
mappings[198] = ItemType.InfestedChiseledStoneBricks;
|
||||
mappings[199] = ItemType.StoneBricks;
|
||||
mappings[200] = ItemType.MossyStoneBricks;
|
||||
mappings[201] = ItemType.CrackedStoneBricks;
|
||||
mappings[202] = ItemType.ChiseledStoneBricks;
|
||||
mappings[203] = ItemType.BrownMushroomBlock;
|
||||
mappings[204] = ItemType.RedMushroomBlock;
|
||||
mappings[205] = ItemType.MushroomStem;
|
||||
mappings[206] = ItemType.IronBars;
|
||||
mappings[207] = ItemType.GlassPane;
|
||||
mappings[208] = ItemType.Melon;
|
||||
mappings[209] = ItemType.Vine;
|
||||
mappings[210] = ItemType.OakFenceGate;
|
||||
mappings[211] = ItemType.SpruceFenceGate;
|
||||
mappings[212] = ItemType.BirchFenceGate;
|
||||
mappings[213] = ItemType.JungleFenceGate;
|
||||
mappings[214] = ItemType.AcaciaFenceGate;
|
||||
mappings[215] = ItemType.DarkOakFenceGate;
|
||||
mappings[216] = ItemType.BrickStairs;
|
||||
mappings[217] = ItemType.StoneBrickStairs;
|
||||
mappings[218] = ItemType.Mycelium;
|
||||
mappings[219] = ItemType.LilyPad;
|
||||
mappings[220] = ItemType.NetherBricks;
|
||||
mappings[221] = ItemType.NetherBrickFence;
|
||||
mappings[222] = ItemType.NetherBrickStairs;
|
||||
mappings[223] = ItemType.EnchantingTable;
|
||||
mappings[224] = ItemType.EndPortalFrame;
|
||||
mappings[225] = ItemType.EndStone;
|
||||
mappings[226] = ItemType.EndStoneBricks;
|
||||
mappings[227] = ItemType.DragonEgg;
|
||||
mappings[228] = ItemType.RedstoneLamp;
|
||||
mappings[229] = ItemType.SandstoneStairs;
|
||||
mappings[230] = ItemType.EmeraldOre;
|
||||
mappings[231] = ItemType.EnderChest;
|
||||
mappings[232] = ItemType.TripwireHook;
|
||||
mappings[233] = ItemType.EmeraldBlock;
|
||||
mappings[234] = ItemType.SpruceStairs;
|
||||
mappings[235] = ItemType.BirchStairs;
|
||||
mappings[236] = ItemType.JungleStairs;
|
||||
mappings[237] = ItemType.CommandBlock;
|
||||
mappings[238] = ItemType.Beacon;
|
||||
mappings[239] = ItemType.CobblestoneWall;
|
||||
mappings[240] = ItemType.MossyCobblestoneWall;
|
||||
mappings[241] = ItemType.OakButton;
|
||||
mappings[242] = ItemType.SpruceButton;
|
||||
mappings[243] = ItemType.BirchButton;
|
||||
mappings[244] = ItemType.JungleButton;
|
||||
mappings[245] = ItemType.AcaciaButton;
|
||||
mappings[246] = ItemType.DarkOakButton;
|
||||
mappings[247] = ItemType.Anvil;
|
||||
mappings[248] = ItemType.ChippedAnvil;
|
||||
mappings[249] = ItemType.DamagedAnvil;
|
||||
mappings[250] = ItemType.TrappedChest;
|
||||
mappings[251] = ItemType.LightWeightedPressurePlate;
|
||||
mappings[252] = ItemType.HeavyWeightedPressurePlate;
|
||||
mappings[253] = ItemType.DaylightDetector;
|
||||
mappings[254] = ItemType.RedstoneBlock;
|
||||
mappings[255] = ItemType.NetherQuartzOre;
|
||||
mappings[256] = ItemType.Hopper;
|
||||
mappings[257] = ItemType.ChiseledQuartzBlock;
|
||||
mappings[258] = ItemType.QuartzBlock;
|
||||
mappings[259] = ItemType.QuartzPillar;
|
||||
mappings[260] = ItemType.QuartzStairs;
|
||||
mappings[261] = ItemType.ActivatorRail;
|
||||
mappings[262] = ItemType.Dropper;
|
||||
mappings[263] = ItemType.WhiteTerracotta;
|
||||
mappings[264] = ItemType.OrangeTerracotta;
|
||||
mappings[265] = ItemType.MagentaTerracotta;
|
||||
mappings[266] = ItemType.LightBlueTerracotta;
|
||||
mappings[267] = ItemType.YellowTerracotta;
|
||||
mappings[268] = ItemType.LimeTerracotta;
|
||||
mappings[269] = ItemType.PinkTerracotta;
|
||||
mappings[270] = ItemType.GrayTerracotta;
|
||||
mappings[271] = ItemType.LightGrayTerracotta;
|
||||
mappings[272] = ItemType.CyanTerracotta;
|
||||
mappings[273] = ItemType.PurpleTerracotta;
|
||||
mappings[274] = ItemType.BlueTerracotta;
|
||||
mappings[275] = ItemType.BrownTerracotta;
|
||||
mappings[276] = ItemType.GreenTerracotta;
|
||||
mappings[277] = ItemType.RedTerracotta;
|
||||
mappings[278] = ItemType.BlackTerracotta;
|
||||
mappings[279] = ItemType.Barrier;
|
||||
mappings[280] = ItemType.IronTrapdoor;
|
||||
mappings[281] = ItemType.HayBlock;
|
||||
mappings[282] = ItemType.WhiteCarpet;
|
||||
mappings[283] = ItemType.OrangeCarpet;
|
||||
mappings[284] = ItemType.MagentaCarpet;
|
||||
mappings[285] = ItemType.LightBlueCarpet;
|
||||
mappings[286] = ItemType.YellowCarpet;
|
||||
mappings[287] = ItemType.LimeCarpet;
|
||||
mappings[288] = ItemType.PinkCarpet;
|
||||
mappings[289] = ItemType.GrayCarpet;
|
||||
mappings[290] = ItemType.LightGrayCarpet;
|
||||
mappings[291] = ItemType.CyanCarpet;
|
||||
mappings[292] = ItemType.PurpleCarpet;
|
||||
mappings[293] = ItemType.BlueCarpet;
|
||||
mappings[294] = ItemType.BrownCarpet;
|
||||
mappings[295] = ItemType.GreenCarpet;
|
||||
mappings[296] = ItemType.RedCarpet;
|
||||
mappings[297] = ItemType.BlackCarpet;
|
||||
mappings[298] = ItemType.Terracotta;
|
||||
mappings[299] = ItemType.CoalBlock;
|
||||
mappings[300] = ItemType.PackedIce;
|
||||
mappings[301] = ItemType.AcaciaStairs;
|
||||
mappings[302] = ItemType.DarkOakStairs;
|
||||
mappings[303] = ItemType.SlimeBlock;
|
||||
mappings[304] = ItemType.DirtPath;
|
||||
mappings[305] = ItemType.Sunflower;
|
||||
mappings[306] = ItemType.Lilac;
|
||||
mappings[307] = ItemType.RoseBush;
|
||||
mappings[308] = ItemType.Peony;
|
||||
mappings[309] = ItemType.TallGrass;
|
||||
mappings[310] = ItemType.LargeFern;
|
||||
mappings[311] = ItemType.WhiteStainedGlass;
|
||||
mappings[312] = ItemType.OrangeStainedGlass;
|
||||
mappings[313] = ItemType.MagentaStainedGlass;
|
||||
mappings[314] = ItemType.LightBlueStainedGlass;
|
||||
mappings[315] = ItemType.YellowStainedGlass;
|
||||
mappings[316] = ItemType.LimeStainedGlass;
|
||||
mappings[317] = ItemType.PinkStainedGlass;
|
||||
mappings[318] = ItemType.GrayStainedGlass;
|
||||
mappings[319] = ItemType.LightGrayStainedGlass;
|
||||
mappings[320] = ItemType.CyanStainedGlass;
|
||||
mappings[321] = ItemType.PurpleStainedGlass;
|
||||
mappings[322] = ItemType.BlueStainedGlass;
|
||||
mappings[323] = ItemType.BrownStainedGlass;
|
||||
mappings[324] = ItemType.GreenStainedGlass;
|
||||
mappings[325] = ItemType.RedStainedGlass;
|
||||
mappings[326] = ItemType.BlackStainedGlass;
|
||||
mappings[327] = ItemType.WhiteStainedGlassPane;
|
||||
mappings[328] = ItemType.OrangeStainedGlassPane;
|
||||
mappings[329] = ItemType.MagentaStainedGlassPane;
|
||||
mappings[330] = ItemType.LightBlueStainedGlassPane;
|
||||
mappings[331] = ItemType.YellowStainedGlassPane;
|
||||
mappings[332] = ItemType.LimeStainedGlassPane;
|
||||
mappings[333] = ItemType.PinkStainedGlassPane;
|
||||
mappings[334] = ItemType.GrayStainedGlassPane;
|
||||
mappings[335] = ItemType.LightGrayStainedGlassPane;
|
||||
mappings[336] = ItemType.CyanStainedGlassPane;
|
||||
mappings[337] = ItemType.PurpleStainedGlassPane;
|
||||
mappings[338] = ItemType.BlueStainedGlassPane;
|
||||
mappings[339] = ItemType.BrownStainedGlassPane;
|
||||
mappings[340] = ItemType.GreenStainedGlassPane;
|
||||
mappings[341] = ItemType.RedStainedGlassPane;
|
||||
mappings[342] = ItemType.BlackStainedGlassPane;
|
||||
mappings[343] = ItemType.Prismarine;
|
||||
mappings[344] = ItemType.PrismarineBricks;
|
||||
mappings[345] = ItemType.DarkPrismarine;
|
||||
mappings[346] = ItemType.PrismarineStairs;
|
||||
mappings[347] = ItemType.PrismarineBrickStairs;
|
||||
mappings[348] = ItemType.DarkPrismarineStairs;
|
||||
mappings[349] = ItemType.SeaLantern;
|
||||
mappings[350] = ItemType.RedSandstone;
|
||||
mappings[351] = ItemType.ChiseledRedSandstone;
|
||||
mappings[352] = ItemType.CutRedSandstone;
|
||||
mappings[353] = ItemType.RedSandstoneStairs;
|
||||
mappings[354] = ItemType.RepeatingCommandBlock;
|
||||
mappings[355] = ItemType.ChainCommandBlock;
|
||||
mappings[356] = ItemType.MagmaBlock;
|
||||
mappings[357] = ItemType.NetherWartBlock;
|
||||
mappings[358] = ItemType.RedNetherBricks;
|
||||
mappings[359] = ItemType.BoneBlock;
|
||||
mappings[360] = ItemType.StructureVoid;
|
||||
mappings[361] = ItemType.Observer;
|
||||
mappings[362] = ItemType.ShulkerBox;
|
||||
mappings[363] = ItemType.WhiteShulkerBox;
|
||||
mappings[364] = ItemType.OrangeShulkerBox;
|
||||
mappings[365] = ItemType.MagentaShulkerBox;
|
||||
mappings[366] = ItemType.LightBlueShulkerBox;
|
||||
mappings[367] = ItemType.YellowShulkerBox;
|
||||
mappings[368] = ItemType.LimeShulkerBox;
|
||||
mappings[369] = ItemType.PinkShulkerBox;
|
||||
mappings[370] = ItemType.GrayShulkerBox;
|
||||
mappings[371] = ItemType.LightGrayShulkerBox;
|
||||
mappings[372] = ItemType.CyanShulkerBox;
|
||||
mappings[373] = ItemType.PurpleShulkerBox;
|
||||
mappings[374] = ItemType.BlueShulkerBox;
|
||||
mappings[375] = ItemType.BrownShulkerBox;
|
||||
mappings[376] = ItemType.GreenShulkerBox;
|
||||
mappings[377] = ItemType.RedShulkerBox;
|
||||
mappings[378] = ItemType.BlackShulkerBox;
|
||||
mappings[379] = ItemType.WhiteGlazedTerracotta;
|
||||
mappings[380] = ItemType.OrangeGlazedTerracotta;
|
||||
mappings[381] = ItemType.MagentaGlazedTerracotta;
|
||||
mappings[382] = ItemType.LightBlueGlazedTerracotta;
|
||||
mappings[383] = ItemType.YellowGlazedTerracotta;
|
||||
mappings[384] = ItemType.LimeGlazedTerracotta;
|
||||
mappings[385] = ItemType.PinkGlazedTerracotta;
|
||||
mappings[386] = ItemType.GrayGlazedTerracotta;
|
||||
mappings[387] = ItemType.LightGrayGlazedTerracotta;
|
||||
mappings[388] = ItemType.CyanGlazedTerracotta;
|
||||
mappings[389] = ItemType.PurpleGlazedTerracotta;
|
||||
mappings[390] = ItemType.BlueGlazedTerracotta;
|
||||
mappings[391] = ItemType.BrownGlazedTerracotta;
|
||||
mappings[392] = ItemType.GreenGlazedTerracotta;
|
||||
mappings[393] = ItemType.RedGlazedTerracotta;
|
||||
mappings[394] = ItemType.BlackGlazedTerracotta;
|
||||
mappings[395] = ItemType.WhiteConcrete;
|
||||
mappings[396] = ItemType.OrangeConcrete;
|
||||
mappings[397] = ItemType.MagentaConcrete;
|
||||
mappings[398] = ItemType.LightBlueConcrete;
|
||||
mappings[399] = ItemType.YellowConcrete;
|
||||
mappings[400] = ItemType.LimeConcrete;
|
||||
mappings[401] = ItemType.PinkConcrete;
|
||||
mappings[402] = ItemType.GrayConcrete;
|
||||
mappings[403] = ItemType.LightGrayConcrete;
|
||||
mappings[404] = ItemType.CyanConcrete;
|
||||
mappings[405] = ItemType.PurpleConcrete;
|
||||
mappings[406] = ItemType.BlueConcrete;
|
||||
mappings[407] = ItemType.BrownConcrete;
|
||||
mappings[408] = ItemType.GreenConcrete;
|
||||
mappings[409] = ItemType.RedConcrete;
|
||||
mappings[410] = ItemType.BlackConcrete;
|
||||
mappings[411] = ItemType.WhiteConcretePowder;
|
||||
mappings[412] = ItemType.OrangeConcretePowder;
|
||||
mappings[413] = ItemType.MagentaConcretePowder;
|
||||
mappings[414] = ItemType.LightBlueConcretePowder;
|
||||
mappings[415] = ItemType.YellowConcretePowder;
|
||||
mappings[416] = ItemType.LimeConcretePowder;
|
||||
mappings[417] = ItemType.PinkConcretePowder;
|
||||
mappings[418] = ItemType.GrayConcretePowder;
|
||||
mappings[419] = ItemType.LightGrayConcretePowder;
|
||||
mappings[420] = ItemType.CyanConcretePowder;
|
||||
mappings[421] = ItemType.PurpleConcretePowder;
|
||||
mappings[422] = ItemType.BlueConcretePowder;
|
||||
mappings[423] = ItemType.BrownConcretePowder;
|
||||
mappings[424] = ItemType.GreenConcretePowder;
|
||||
mappings[425] = ItemType.RedConcretePowder;
|
||||
mappings[426] = ItemType.BlackConcretePowder;
|
||||
mappings[427] = ItemType.TurtleEgg;
|
||||
mappings[428] = ItemType.DeadTubeCoralBlock;
|
||||
mappings[429] = ItemType.DeadBrainCoralBlock;
|
||||
mappings[430] = ItemType.DeadBubbleCoralBlock;
|
||||
mappings[431] = ItemType.DeadFireCoralBlock;
|
||||
mappings[432] = ItemType.DeadHornCoralBlock;
|
||||
mappings[433] = ItemType.TubeCoralBlock;
|
||||
mappings[434] = ItemType.BrainCoralBlock;
|
||||
mappings[435] = ItemType.BubbleCoralBlock;
|
||||
mappings[436] = ItemType.FireCoralBlock;
|
||||
mappings[437] = ItemType.HornCoralBlock;
|
||||
mappings[438] = ItemType.TubeCoral;
|
||||
mappings[439] = ItemType.BrainCoral;
|
||||
mappings[440] = ItemType.BubbleCoral;
|
||||
mappings[441] = ItemType.FireCoral;
|
||||
mappings[442] = ItemType.HornCoral;
|
||||
mappings[443] = ItemType.TubeCoralFan;
|
||||
mappings[444] = ItemType.BrainCoralFan;
|
||||
mappings[445] = ItemType.BubbleCoralFan;
|
||||
mappings[446] = ItemType.FireCoralFan;
|
||||
mappings[447] = ItemType.HornCoralFan;
|
||||
mappings[448] = ItemType.DeadTubeCoralFan;
|
||||
mappings[449] = ItemType.DeadBrainCoralFan;
|
||||
mappings[450] = ItemType.DeadBubbleCoralFan;
|
||||
mappings[451] = ItemType.DeadFireCoralFan;
|
||||
mappings[452] = ItemType.DeadHornCoralFan;
|
||||
mappings[453] = ItemType.BlueIce;
|
||||
mappings[454] = ItemType.Conduit;
|
||||
mappings[455] = ItemType.IronDoor;
|
||||
mappings[456] = ItemType.OakDoor;
|
||||
mappings[457] = ItemType.SpruceDoor;
|
||||
mappings[458] = ItemType.BirchDoor;
|
||||
mappings[459] = ItemType.JungleDoor;
|
||||
mappings[460] = ItemType.AcaciaDoor;
|
||||
mappings[461] = ItemType.DarkOakDoor;
|
||||
mappings[462] = ItemType.Repeater;
|
||||
mappings[463] = ItemType.Comparator;
|
||||
mappings[464] = ItemType.StructureBlock;
|
||||
mappings[465] = ItemType.TurtleHelmet;
|
||||
mappings[466] = ItemType.TurtleScute;
|
||||
mappings[467] = ItemType.IronShovel;
|
||||
mappings[468] = ItemType.IronPickaxe;
|
||||
mappings[469] = ItemType.IronAxe;
|
||||
mappings[470] = ItemType.FlintAndSteel;
|
||||
mappings[471] = ItemType.Apple;
|
||||
mappings[472] = ItemType.Bow;
|
||||
mappings[473] = ItemType.Arrow;
|
||||
mappings[474] = ItemType.Coal;
|
||||
mappings[475] = ItemType.Charcoal;
|
||||
mappings[476] = ItemType.Diamond;
|
||||
mappings[477] = ItemType.IronIngot;
|
||||
mappings[478] = ItemType.GoldIngot;
|
||||
mappings[479] = ItemType.IronSword;
|
||||
mappings[480] = ItemType.WoodenSword;
|
||||
mappings[481] = ItemType.WoodenShovel;
|
||||
mappings[482] = ItemType.WoodenPickaxe;
|
||||
mappings[483] = ItemType.WoodenAxe;
|
||||
mappings[484] = ItemType.StoneSword;
|
||||
mappings[485] = ItemType.StoneShovel;
|
||||
mappings[486] = ItemType.StonePickaxe;
|
||||
mappings[487] = ItemType.StoneAxe;
|
||||
mappings[488] = ItemType.DiamondSword;
|
||||
mappings[489] = ItemType.DiamondShovel;
|
||||
mappings[490] = ItemType.DiamondPickaxe;
|
||||
mappings[491] = ItemType.DiamondAxe;
|
||||
mappings[492] = ItemType.Stick;
|
||||
mappings[493] = ItemType.Bowl;
|
||||
mappings[494] = ItemType.MushroomStew;
|
||||
mappings[495] = ItemType.GoldenSword;
|
||||
mappings[496] = ItemType.GoldenShovel;
|
||||
mappings[497] = ItemType.GoldenPickaxe;
|
||||
mappings[498] = ItemType.GoldenAxe;
|
||||
mappings[499] = ItemType.String;
|
||||
mappings[500] = ItemType.Feather;
|
||||
mappings[501] = ItemType.Gunpowder;
|
||||
mappings[502] = ItemType.WoodenHoe;
|
||||
mappings[503] = ItemType.StoneHoe;
|
||||
mappings[504] = ItemType.IronHoe;
|
||||
mappings[505] = ItemType.DiamondHoe;
|
||||
mappings[506] = ItemType.GoldenHoe;
|
||||
mappings[507] = ItemType.WheatSeeds;
|
||||
mappings[508] = ItemType.Wheat;
|
||||
mappings[509] = ItemType.Bread;
|
||||
mappings[510] = ItemType.LeatherHelmet;
|
||||
mappings[511] = ItemType.LeatherChestplate;
|
||||
mappings[512] = ItemType.LeatherLeggings;
|
||||
mappings[513] = ItemType.LeatherBoots;
|
||||
mappings[514] = ItemType.ChainmailHelmet;
|
||||
mappings[515] = ItemType.ChainmailChestplate;
|
||||
mappings[516] = ItemType.ChainmailLeggings;
|
||||
mappings[517] = ItemType.ChainmailBoots;
|
||||
mappings[518] = ItemType.IronHelmet;
|
||||
mappings[519] = ItemType.IronChestplate;
|
||||
mappings[520] = ItemType.IronLeggings;
|
||||
mappings[521] = ItemType.IronBoots;
|
||||
mappings[522] = ItemType.DiamondHelmet;
|
||||
mappings[523] = ItemType.DiamondChestplate;
|
||||
mappings[524] = ItemType.DiamondLeggings;
|
||||
mappings[525] = ItemType.DiamondBoots;
|
||||
mappings[526] = ItemType.GoldenHelmet;
|
||||
mappings[527] = ItemType.GoldenChestplate;
|
||||
mappings[528] = ItemType.GoldenLeggings;
|
||||
mappings[529] = ItemType.GoldenBoots;
|
||||
mappings[530] = ItemType.Flint;
|
||||
mappings[531] = ItemType.Porkchop;
|
||||
mappings[532] = ItemType.CookedPorkchop;
|
||||
mappings[533] = ItemType.Painting;
|
||||
mappings[534] = ItemType.GoldenApple;
|
||||
mappings[535] = ItemType.EnchantedGoldenApple;
|
||||
mappings[536] = ItemType.OakSign;
|
||||
mappings[537] = ItemType.Bucket;
|
||||
mappings[538] = ItemType.WaterBucket;
|
||||
mappings[539] = ItemType.LavaBucket;
|
||||
mappings[540] = ItemType.Minecart;
|
||||
mappings[541] = ItemType.Saddle;
|
||||
mappings[542] = ItemType.Redstone;
|
||||
mappings[543] = ItemType.Snowball;
|
||||
mappings[544] = ItemType.OakBoat;
|
||||
mappings[545] = ItemType.Leather;
|
||||
mappings[546] = ItemType.MilkBucket;
|
||||
mappings[547] = ItemType.PufferfishBucket;
|
||||
mappings[548] = ItemType.SalmonBucket;
|
||||
mappings[549] = ItemType.CodBucket;
|
||||
mappings[550] = ItemType.TropicalFishBucket;
|
||||
mappings[551] = ItemType.Brick;
|
||||
mappings[552] = ItemType.ClayBall;
|
||||
mappings[553] = ItemType.SugarCane;
|
||||
mappings[554] = ItemType.Kelp;
|
||||
mappings[555] = ItemType.DriedKelpBlock;
|
||||
mappings[556] = ItemType.Paper;
|
||||
mappings[557] = ItemType.Book;
|
||||
mappings[558] = ItemType.SlimeBall;
|
||||
mappings[559] = ItemType.ChestMinecart;
|
||||
mappings[560] = ItemType.FurnaceMinecart;
|
||||
mappings[561] = ItemType.Egg;
|
||||
mappings[562] = ItemType.Compass;
|
||||
mappings[563] = ItemType.FishingRod;
|
||||
mappings[564] = ItemType.Clock;
|
||||
mappings[565] = ItemType.GlowstoneDust;
|
||||
mappings[566] = ItemType.Cod;
|
||||
mappings[567] = ItemType.Salmon;
|
||||
mappings[568] = ItemType.TropicalFish;
|
||||
mappings[569] = ItemType.Pufferfish;
|
||||
mappings[570] = ItemType.CookedCod;
|
||||
mappings[571] = ItemType.CookedSalmon;
|
||||
mappings[572] = ItemType.InkSac;
|
||||
mappings[573] = ItemType.RedDye;
|
||||
mappings[574] = ItemType.GreenDye;
|
||||
mappings[575] = ItemType.CocoaBeans;
|
||||
mappings[576] = ItemType.LapisLazuli;
|
||||
mappings[577] = ItemType.PurpleDye;
|
||||
mappings[578] = ItemType.CyanDye;
|
||||
mappings[579] = ItemType.LightGrayDye;
|
||||
mappings[580] = ItemType.GrayDye;
|
||||
mappings[581] = ItemType.PinkDye;
|
||||
mappings[582] = ItemType.LimeDye;
|
||||
mappings[583] = ItemType.YellowDye;
|
||||
mappings[584] = ItemType.LightBlueDye;
|
||||
mappings[585] = ItemType.MagentaDye;
|
||||
mappings[586] = ItemType.OrangeDye;
|
||||
mappings[587] = ItemType.BoneMeal;
|
||||
mappings[588] = ItemType.Bone;
|
||||
mappings[589] = ItemType.Sugar;
|
||||
mappings[590] = ItemType.Cake;
|
||||
mappings[591] = ItemType.WhiteBed;
|
||||
mappings[592] = ItemType.OrangeBed;
|
||||
mappings[593] = ItemType.MagentaBed;
|
||||
mappings[594] = ItemType.LightBlueBed;
|
||||
mappings[595] = ItemType.YellowBed;
|
||||
mappings[596] = ItemType.LimeBed;
|
||||
mappings[597] = ItemType.PinkBed;
|
||||
mappings[598] = ItemType.GrayBed;
|
||||
mappings[599] = ItemType.LightGrayBed;
|
||||
mappings[600] = ItemType.CyanBed;
|
||||
mappings[601] = ItemType.PurpleBed;
|
||||
mappings[602] = ItemType.BlueBed;
|
||||
mappings[603] = ItemType.BrownBed;
|
||||
mappings[604] = ItemType.GreenBed;
|
||||
mappings[605] = ItemType.RedBed;
|
||||
mappings[606] = ItemType.BlackBed;
|
||||
mappings[607] = ItemType.Cookie;
|
||||
mappings[608] = ItemType.FilledMap;
|
||||
mappings[609] = ItemType.Shears;
|
||||
mappings[610] = ItemType.MelonSlice;
|
||||
mappings[611] = ItemType.DriedKelp;
|
||||
mappings[612] = ItemType.PumpkinSeeds;
|
||||
mappings[613] = ItemType.MelonSeeds;
|
||||
mappings[614] = ItemType.Beef;
|
||||
mappings[615] = ItemType.CookedBeef;
|
||||
mappings[616] = ItemType.Chicken;
|
||||
mappings[617] = ItemType.CookedChicken;
|
||||
mappings[618] = ItemType.RottenFlesh;
|
||||
mappings[619] = ItemType.EnderPearl;
|
||||
mappings[620] = ItemType.BlazeRod;
|
||||
mappings[621] = ItemType.GhastTear;
|
||||
mappings[622] = ItemType.GoldNugget;
|
||||
mappings[623] = ItemType.NetherWart;
|
||||
mappings[624] = ItemType.Potion;
|
||||
mappings[625] = ItemType.GlassBottle;
|
||||
mappings[626] = ItemType.SpiderEye;
|
||||
mappings[627] = ItemType.FermentedSpiderEye;
|
||||
mappings[628] = ItemType.BlazePowder;
|
||||
mappings[629] = ItemType.MagmaCream;
|
||||
mappings[630] = ItemType.BrewingStand;
|
||||
mappings[631] = ItemType.Cauldron;
|
||||
mappings[632] = ItemType.EnderEye;
|
||||
mappings[633] = ItemType.GlisteringMelonSlice;
|
||||
mappings[634] = ItemType.BatSpawnEgg;
|
||||
mappings[635] = ItemType.BlazeSpawnEgg;
|
||||
mappings[636] = ItemType.CaveSpiderSpawnEgg;
|
||||
mappings[637] = ItemType.ChickenSpawnEgg;
|
||||
mappings[638] = ItemType.CodSpawnEgg;
|
||||
mappings[639] = ItemType.CowSpawnEgg;
|
||||
mappings[640] = ItemType.CreeperSpawnEgg;
|
||||
mappings[641] = ItemType.DolphinSpawnEgg;
|
||||
mappings[642] = ItemType.DonkeySpawnEgg;
|
||||
mappings[643] = ItemType.DrownedSpawnEgg;
|
||||
mappings[644] = ItemType.ElderGuardianSpawnEgg;
|
||||
mappings[645] = ItemType.EndermanSpawnEgg;
|
||||
mappings[646] = ItemType.EndermiteSpawnEgg;
|
||||
mappings[647] = ItemType.EvokerSpawnEgg;
|
||||
mappings[648] = ItemType.GhastSpawnEgg;
|
||||
mappings[649] = ItemType.GuardianSpawnEgg;
|
||||
mappings[650] = ItemType.HorseSpawnEgg;
|
||||
mappings[651] = ItemType.HuskSpawnEgg;
|
||||
mappings[652] = ItemType.LlamaSpawnEgg;
|
||||
mappings[653] = ItemType.MagmaCubeSpawnEgg;
|
||||
mappings[654] = ItemType.MooshroomSpawnEgg;
|
||||
mappings[655] = ItemType.MuleSpawnEgg;
|
||||
mappings[656] = ItemType.OcelotSpawnEgg;
|
||||
mappings[657] = ItemType.ParrotSpawnEgg;
|
||||
mappings[658] = ItemType.PhantomSpawnEgg;
|
||||
mappings[659] = ItemType.PigSpawnEgg;
|
||||
mappings[660] = ItemType.PolarBearSpawnEgg;
|
||||
mappings[661] = ItemType.PufferfishSpawnEgg;
|
||||
mappings[662] = ItemType.RabbitSpawnEgg;
|
||||
mappings[663] = ItemType.SalmonSpawnEgg;
|
||||
mappings[664] = ItemType.SheepSpawnEgg;
|
||||
mappings[665] = ItemType.ShulkerSpawnEgg;
|
||||
mappings[666] = ItemType.SilverfishSpawnEgg;
|
||||
mappings[667] = ItemType.SkeletonSpawnEgg;
|
||||
mappings[668] = ItemType.SkeletonHorseSpawnEgg;
|
||||
mappings[669] = ItemType.SlimeSpawnEgg;
|
||||
mappings[670] = ItemType.SpiderSpawnEgg;
|
||||
mappings[671] = ItemType.SquidSpawnEgg;
|
||||
mappings[672] = ItemType.StraySpawnEgg;
|
||||
mappings[673] = ItemType.TropicalFishSpawnEgg;
|
||||
mappings[674] = ItemType.TurtleSpawnEgg;
|
||||
mappings[675] = ItemType.VexSpawnEgg;
|
||||
mappings[676] = ItemType.VillagerSpawnEgg;
|
||||
mappings[677] = ItemType.VindicatorSpawnEgg;
|
||||
mappings[678] = ItemType.WitchSpawnEgg;
|
||||
mappings[679] = ItemType.WitherSkeletonSpawnEgg;
|
||||
mappings[680] = ItemType.WolfSpawnEgg;
|
||||
mappings[681] = ItemType.ZombieSpawnEgg;
|
||||
mappings[682] = ItemType.ZombieHorseSpawnEgg;
|
||||
mappings[683] = ItemType.ZombifiedPiglinSpawnEgg;
|
||||
mappings[684] = ItemType.ZombieVillagerSpawnEgg;
|
||||
mappings[685] = ItemType.ExperienceBottle;
|
||||
mappings[686] = ItemType.FireCharge;
|
||||
mappings[687] = ItemType.WritableBook;
|
||||
mappings[688] = ItemType.WrittenBook;
|
||||
mappings[689] = ItemType.Emerald;
|
||||
mappings[690] = ItemType.ItemFrame;
|
||||
mappings[691] = ItemType.FlowerPot;
|
||||
mappings[692] = ItemType.Carrot;
|
||||
mappings[693] = ItemType.Potato;
|
||||
mappings[694] = ItemType.BakedPotato;
|
||||
mappings[695] = ItemType.PoisonousPotato;
|
||||
mappings[696] = ItemType.Map;
|
||||
mappings[697] = ItemType.GoldenCarrot;
|
||||
mappings[698] = ItemType.SkeletonSkull;
|
||||
mappings[699] = ItemType.WitherSkeletonSkull;
|
||||
mappings[700] = ItemType.PlayerHead;
|
||||
mappings[701] = ItemType.ZombieHead;
|
||||
mappings[702] = ItemType.CreeperHead;
|
||||
mappings[703] = ItemType.DragonHead;
|
||||
mappings[704] = ItemType.CarrotOnAStick;
|
||||
mappings[705] = ItemType.NetherStar;
|
||||
mappings[706] = ItemType.PumpkinPie;
|
||||
mappings[707] = ItemType.FireworkRocket;
|
||||
mappings[708] = ItemType.FireworkStar;
|
||||
mappings[709] = ItemType.EnchantedBook;
|
||||
mappings[710] = ItemType.NetherBrick;
|
||||
mappings[711] = ItemType.Quartz;
|
||||
mappings[712] = ItemType.TntMinecart;
|
||||
mappings[713] = ItemType.HopperMinecart;
|
||||
mappings[714] = ItemType.PrismarineShard;
|
||||
mappings[715] = ItemType.PrismarineCrystals;
|
||||
mappings[716] = ItemType.Rabbit;
|
||||
mappings[717] = ItemType.CookedRabbit;
|
||||
mappings[718] = ItemType.RabbitStew;
|
||||
mappings[719] = ItemType.RabbitFoot;
|
||||
mappings[720] = ItemType.RabbitHide;
|
||||
mappings[721] = ItemType.ArmorStand;
|
||||
mappings[722] = ItemType.IronHorseArmor;
|
||||
mappings[723] = ItemType.GoldenHorseArmor;
|
||||
mappings[724] = ItemType.DiamondHorseArmor;
|
||||
mappings[725] = ItemType.Lead;
|
||||
mappings[726] = ItemType.NameTag;
|
||||
mappings[727] = ItemType.CommandBlockMinecart;
|
||||
mappings[728] = ItemType.Mutton;
|
||||
mappings[729] = ItemType.CookedMutton;
|
||||
mappings[730] = ItemType.WhiteBanner;
|
||||
mappings[731] = ItemType.OrangeBanner;
|
||||
mappings[732] = ItemType.MagentaBanner;
|
||||
mappings[733] = ItemType.LightBlueBanner;
|
||||
mappings[734] = ItemType.YellowBanner;
|
||||
mappings[735] = ItemType.LimeBanner;
|
||||
mappings[736] = ItemType.PinkBanner;
|
||||
mappings[737] = ItemType.GrayBanner;
|
||||
mappings[738] = ItemType.LightGrayBanner;
|
||||
mappings[739] = ItemType.CyanBanner;
|
||||
mappings[740] = ItemType.PurpleBanner;
|
||||
mappings[741] = ItemType.BlueBanner;
|
||||
mappings[742] = ItemType.BrownBanner;
|
||||
mappings[743] = ItemType.GreenBanner;
|
||||
mappings[744] = ItemType.RedBanner;
|
||||
mappings[745] = ItemType.BlackBanner;
|
||||
mappings[746] = ItemType.EndCrystal;
|
||||
mappings[747] = ItemType.ChorusFruit;
|
||||
mappings[748] = ItemType.PoppedChorusFruit;
|
||||
mappings[749] = ItemType.Beetroot;
|
||||
mappings[750] = ItemType.BeetrootSeeds;
|
||||
mappings[751] = ItemType.BeetrootSoup;
|
||||
mappings[752] = ItemType.DragonBreath;
|
||||
mappings[753] = ItemType.SplashPotion;
|
||||
mappings[754] = ItemType.SpectralArrow;
|
||||
mappings[755] = ItemType.TippedArrow;
|
||||
mappings[756] = ItemType.LingeringPotion;
|
||||
mappings[757] = ItemType.Shield;
|
||||
mappings[758] = ItemType.Elytra;
|
||||
mappings[759] = ItemType.SpruceBoat;
|
||||
mappings[760] = ItemType.BirchBoat;
|
||||
mappings[761] = ItemType.JungleBoat;
|
||||
mappings[762] = ItemType.AcaciaBoat;
|
||||
mappings[763] = ItemType.DarkOakBoat;
|
||||
mappings[764] = ItemType.TotemOfUndying;
|
||||
mappings[765] = ItemType.ShulkerShell;
|
||||
mappings[766] = ItemType.IronNugget;
|
||||
mappings[767] = ItemType.KnowledgeBook;
|
||||
mappings[768] = ItemType.DebugStick;
|
||||
mappings[769] = ItemType.MusicDisc13;
|
||||
mappings[770] = ItemType.MusicDiscCat;
|
||||
mappings[771] = ItemType.MusicDiscBlocks;
|
||||
mappings[772] = ItemType.MusicDiscChirp;
|
||||
mappings[773] = ItemType.MusicDiscFar;
|
||||
mappings[774] = ItemType.MusicDiscMall;
|
||||
mappings[775] = ItemType.MusicDiscMellohi;
|
||||
mappings[776] = ItemType.MusicDiscStal;
|
||||
mappings[777] = ItemType.MusicDiscStrad;
|
||||
mappings[778] = ItemType.MusicDiscWard;
|
||||
mappings[779] = ItemType.MusicDisc11;
|
||||
mappings[780] = ItemType.MusicDiscWait;
|
||||
mappings[781] = ItemType.Trident;
|
||||
mappings[782] = ItemType.PhantomMembrane;
|
||||
mappings[783] = ItemType.NautilusShell;
|
||||
mappings[784] = ItemType.HeartOfTheSea;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, ItemType> GetDict()
|
||||
{
|
||||
return mappings;
|
||||
}
|
||||
}
|
||||
}
|
||||
808
MinecraftClient/Inventory/ItemPalettes/ItemPalette1132.cs
Normal file
808
MinecraftClient/Inventory/ItemPalettes/ItemPalette1132.cs
Normal file
|
|
@ -0,0 +1,808 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace MinecraftClient.Inventory.ItemPalettes
|
||||
{
|
||||
public class ItemPalette1132 : ItemPalette
|
||||
{
|
||||
private static readonly Dictionary<int, ItemType> mappings = new();
|
||||
|
||||
static ItemPalette1132()
|
||||
{
|
||||
mappings[0] = ItemType.Air;
|
||||
mappings[1] = ItemType.Stone;
|
||||
mappings[2] = ItemType.Granite;
|
||||
mappings[3] = ItemType.PolishedGranite;
|
||||
mappings[4] = ItemType.Diorite;
|
||||
mappings[5] = ItemType.PolishedDiorite;
|
||||
mappings[6] = ItemType.Andesite;
|
||||
mappings[7] = ItemType.PolishedAndesite;
|
||||
mappings[8] = ItemType.GrassBlock;
|
||||
mappings[9] = ItemType.Dirt;
|
||||
mappings[10] = ItemType.CoarseDirt;
|
||||
mappings[11] = ItemType.Podzol;
|
||||
mappings[12] = ItemType.Cobblestone;
|
||||
mappings[13] = ItemType.OakPlanks;
|
||||
mappings[14] = ItemType.SprucePlanks;
|
||||
mappings[15] = ItemType.BirchPlanks;
|
||||
mappings[16] = ItemType.JunglePlanks;
|
||||
mappings[17] = ItemType.AcaciaPlanks;
|
||||
mappings[18] = ItemType.DarkOakPlanks;
|
||||
mappings[19] = ItemType.OakSapling;
|
||||
mappings[20] = ItemType.SpruceSapling;
|
||||
mappings[21] = ItemType.BirchSapling;
|
||||
mappings[22] = ItemType.JungleSapling;
|
||||
mappings[23] = ItemType.AcaciaSapling;
|
||||
mappings[24] = ItemType.DarkOakSapling;
|
||||
mappings[25] = ItemType.Bedrock;
|
||||
mappings[26] = ItemType.Sand;
|
||||
mappings[27] = ItemType.RedSand;
|
||||
mappings[28] = ItemType.Gravel;
|
||||
mappings[29] = ItemType.GoldOre;
|
||||
mappings[30] = ItemType.IronOre;
|
||||
mappings[31] = ItemType.CoalOre;
|
||||
mappings[32] = ItemType.OakLog;
|
||||
mappings[33] = ItemType.SpruceLog;
|
||||
mappings[34] = ItemType.BirchLog;
|
||||
mappings[35] = ItemType.JungleLog;
|
||||
mappings[36] = ItemType.AcaciaLog;
|
||||
mappings[37] = ItemType.DarkOakLog;
|
||||
mappings[38] = ItemType.StrippedOakLog;
|
||||
mappings[39] = ItemType.StrippedSpruceLog;
|
||||
mappings[40] = ItemType.StrippedBirchLog;
|
||||
mappings[41] = ItemType.StrippedJungleLog;
|
||||
mappings[42] = ItemType.StrippedAcaciaLog;
|
||||
mappings[43] = ItemType.StrippedDarkOakLog;
|
||||
mappings[44] = ItemType.StrippedOakWood;
|
||||
mappings[45] = ItemType.StrippedSpruceWood;
|
||||
mappings[46] = ItemType.StrippedBirchWood;
|
||||
mappings[47] = ItemType.StrippedJungleWood;
|
||||
mappings[48] = ItemType.StrippedAcaciaWood;
|
||||
mappings[49] = ItemType.StrippedDarkOakWood;
|
||||
mappings[50] = ItemType.OakWood;
|
||||
mappings[51] = ItemType.SpruceWood;
|
||||
mappings[52] = ItemType.BirchWood;
|
||||
mappings[53] = ItemType.JungleWood;
|
||||
mappings[54] = ItemType.AcaciaWood;
|
||||
mappings[55] = ItemType.DarkOakWood;
|
||||
mappings[56] = ItemType.OakLeaves;
|
||||
mappings[57] = ItemType.SpruceLeaves;
|
||||
mappings[58] = ItemType.BirchLeaves;
|
||||
mappings[59] = ItemType.JungleLeaves;
|
||||
mappings[60] = ItemType.AcaciaLeaves;
|
||||
mappings[61] = ItemType.DarkOakLeaves;
|
||||
mappings[62] = ItemType.Sponge;
|
||||
mappings[63] = ItemType.WetSponge;
|
||||
mappings[64] = ItemType.Glass;
|
||||
mappings[65] = ItemType.LapisOre;
|
||||
mappings[66] = ItemType.LapisBlock;
|
||||
mappings[67] = ItemType.Dispenser;
|
||||
mappings[68] = ItemType.Sandstone;
|
||||
mappings[69] = ItemType.ChiseledSandstone;
|
||||
mappings[70] = ItemType.CutSandstone;
|
||||
mappings[71] = ItemType.NoteBlock;
|
||||
mappings[72] = ItemType.PoweredRail;
|
||||
mappings[73] = ItemType.DetectorRail;
|
||||
mappings[74] = ItemType.StickyPiston;
|
||||
mappings[75] = ItemType.Cobweb;
|
||||
mappings[76] = ItemType.ShortGrass;
|
||||
mappings[77] = ItemType.Fern;
|
||||
mappings[78] = ItemType.DeadBush;
|
||||
mappings[79] = ItemType.Seagrass;
|
||||
mappings[80] = ItemType.SeaPickle;
|
||||
mappings[81] = ItemType.Piston;
|
||||
mappings[82] = ItemType.WhiteWool;
|
||||
mappings[83] = ItemType.OrangeWool;
|
||||
mappings[84] = ItemType.MagentaWool;
|
||||
mappings[85] = ItemType.LightBlueWool;
|
||||
mappings[86] = ItemType.YellowWool;
|
||||
mappings[87] = ItemType.LimeWool;
|
||||
mappings[88] = ItemType.PinkWool;
|
||||
mappings[89] = ItemType.GrayWool;
|
||||
mappings[90] = ItemType.LightGrayWool;
|
||||
mappings[91] = ItemType.CyanWool;
|
||||
mappings[92] = ItemType.PurpleWool;
|
||||
mappings[93] = ItemType.BlueWool;
|
||||
mappings[94] = ItemType.BrownWool;
|
||||
mappings[95] = ItemType.GreenWool;
|
||||
mappings[96] = ItemType.RedWool;
|
||||
mappings[97] = ItemType.BlackWool;
|
||||
mappings[98] = ItemType.Dandelion;
|
||||
mappings[99] = ItemType.Poppy;
|
||||
mappings[100] = ItemType.BlueOrchid;
|
||||
mappings[101] = ItemType.Allium;
|
||||
mappings[102] = ItemType.AzureBluet;
|
||||
mappings[103] = ItemType.RedTulip;
|
||||
mappings[104] = ItemType.OrangeTulip;
|
||||
mappings[105] = ItemType.WhiteTulip;
|
||||
mappings[106] = ItemType.PinkTulip;
|
||||
mappings[107] = ItemType.OxeyeDaisy;
|
||||
mappings[108] = ItemType.BrownMushroom;
|
||||
mappings[109] = ItemType.RedMushroom;
|
||||
mappings[110] = ItemType.GoldBlock;
|
||||
mappings[111] = ItemType.IronBlock;
|
||||
mappings[112] = ItemType.OakSlab;
|
||||
mappings[113] = ItemType.SpruceSlab;
|
||||
mappings[114] = ItemType.BirchSlab;
|
||||
mappings[115] = ItemType.JungleSlab;
|
||||
mappings[116] = ItemType.AcaciaSlab;
|
||||
mappings[117] = ItemType.DarkOakSlab;
|
||||
mappings[118] = ItemType.StoneSlab;
|
||||
mappings[119] = ItemType.SandstoneSlab;
|
||||
mappings[120] = ItemType.PetrifiedOakSlab;
|
||||
mappings[121] = ItemType.CobblestoneSlab;
|
||||
mappings[122] = ItemType.BrickSlab;
|
||||
mappings[123] = ItemType.StoneBrickSlab;
|
||||
mappings[124] = ItemType.NetherBrickSlab;
|
||||
mappings[125] = ItemType.QuartzSlab;
|
||||
mappings[126] = ItemType.RedSandstoneSlab;
|
||||
mappings[127] = ItemType.PurpurSlab;
|
||||
mappings[128] = ItemType.PrismarineSlab;
|
||||
mappings[129] = ItemType.PrismarineBrickSlab;
|
||||
mappings[130] = ItemType.DarkPrismarineSlab;
|
||||
mappings[131] = ItemType.SmoothQuartz;
|
||||
mappings[132] = ItemType.SmoothRedSandstone;
|
||||
mappings[133] = ItemType.SmoothSandstone;
|
||||
mappings[134] = ItemType.SmoothStone;
|
||||
mappings[135] = ItemType.Bricks;
|
||||
mappings[136] = ItemType.Tnt;
|
||||
mappings[137] = ItemType.Bookshelf;
|
||||
mappings[138] = ItemType.MossyCobblestone;
|
||||
mappings[139] = ItemType.Obsidian;
|
||||
mappings[140] = ItemType.Torch;
|
||||
mappings[141] = ItemType.EndRod;
|
||||
mappings[142] = ItemType.ChorusPlant;
|
||||
mappings[143] = ItemType.ChorusFlower;
|
||||
mappings[144] = ItemType.PurpurBlock;
|
||||
mappings[145] = ItemType.PurpurPillar;
|
||||
mappings[146] = ItemType.PurpurStairs;
|
||||
mappings[147] = ItemType.Spawner;
|
||||
mappings[148] = ItemType.OakStairs;
|
||||
mappings[149] = ItemType.Chest;
|
||||
mappings[150] = ItemType.DiamondOre;
|
||||
mappings[151] = ItemType.DiamondBlock;
|
||||
mappings[152] = ItemType.CraftingTable;
|
||||
mappings[153] = ItemType.Farmland;
|
||||
mappings[154] = ItemType.Furnace;
|
||||
mappings[155] = ItemType.Ladder;
|
||||
mappings[156] = ItemType.Rail;
|
||||
mappings[157] = ItemType.CobblestoneStairs;
|
||||
mappings[158] = ItemType.Lever;
|
||||
mappings[159] = ItemType.StonePressurePlate;
|
||||
mappings[160] = ItemType.OakPressurePlate;
|
||||
mappings[161] = ItemType.SprucePressurePlate;
|
||||
mappings[162] = ItemType.BirchPressurePlate;
|
||||
mappings[163] = ItemType.JunglePressurePlate;
|
||||
mappings[164] = ItemType.AcaciaPressurePlate;
|
||||
mappings[165] = ItemType.DarkOakPressurePlate;
|
||||
mappings[166] = ItemType.RedstoneOre;
|
||||
mappings[167] = ItemType.RedstoneTorch;
|
||||
mappings[168] = ItemType.StoneButton;
|
||||
mappings[169] = ItemType.Snow;
|
||||
mappings[170] = ItemType.Ice;
|
||||
mappings[171] = ItemType.SnowBlock;
|
||||
mappings[172] = ItemType.Cactus;
|
||||
mappings[173] = ItemType.Clay;
|
||||
mappings[174] = ItemType.Jukebox;
|
||||
mappings[175] = ItemType.OakFence;
|
||||
mappings[176] = ItemType.SpruceFence;
|
||||
mappings[177] = ItemType.BirchFence;
|
||||
mappings[178] = ItemType.JungleFence;
|
||||
mappings[179] = ItemType.AcaciaFence;
|
||||
mappings[180] = ItemType.DarkOakFence;
|
||||
mappings[181] = ItemType.Pumpkin;
|
||||
mappings[182] = ItemType.CarvedPumpkin;
|
||||
mappings[183] = ItemType.Netherrack;
|
||||
mappings[184] = ItemType.SoulSand;
|
||||
mappings[185] = ItemType.Glowstone;
|
||||
mappings[186] = ItemType.JackOLantern;
|
||||
mappings[187] = ItemType.OakTrapdoor;
|
||||
mappings[188] = ItemType.SpruceTrapdoor;
|
||||
mappings[189] = ItemType.BirchTrapdoor;
|
||||
mappings[190] = ItemType.JungleTrapdoor;
|
||||
mappings[191] = ItemType.AcaciaTrapdoor;
|
||||
mappings[192] = ItemType.DarkOakTrapdoor;
|
||||
mappings[193] = ItemType.InfestedStone;
|
||||
mappings[194] = ItemType.InfestedCobblestone;
|
||||
mappings[195] = ItemType.InfestedStoneBricks;
|
||||
mappings[196] = ItemType.InfestedMossyStoneBricks;
|
||||
mappings[197] = ItemType.InfestedCrackedStoneBricks;
|
||||
mappings[198] = ItemType.InfestedChiseledStoneBricks;
|
||||
mappings[199] = ItemType.StoneBricks;
|
||||
mappings[200] = ItemType.MossyStoneBricks;
|
||||
mappings[201] = ItemType.CrackedStoneBricks;
|
||||
mappings[202] = ItemType.ChiseledStoneBricks;
|
||||
mappings[203] = ItemType.BrownMushroomBlock;
|
||||
mappings[204] = ItemType.RedMushroomBlock;
|
||||
mappings[205] = ItemType.MushroomStem;
|
||||
mappings[206] = ItemType.IronBars;
|
||||
mappings[207] = ItemType.GlassPane;
|
||||
mappings[208] = ItemType.Melon;
|
||||
mappings[209] = ItemType.Vine;
|
||||
mappings[210] = ItemType.OakFenceGate;
|
||||
mappings[211] = ItemType.SpruceFenceGate;
|
||||
mappings[212] = ItemType.BirchFenceGate;
|
||||
mappings[213] = ItemType.JungleFenceGate;
|
||||
mappings[214] = ItemType.AcaciaFenceGate;
|
||||
mappings[215] = ItemType.DarkOakFenceGate;
|
||||
mappings[216] = ItemType.BrickStairs;
|
||||
mappings[217] = ItemType.StoneBrickStairs;
|
||||
mappings[218] = ItemType.Mycelium;
|
||||
mappings[219] = ItemType.LilyPad;
|
||||
mappings[220] = ItemType.NetherBricks;
|
||||
mappings[221] = ItemType.NetherBrickFence;
|
||||
mappings[222] = ItemType.NetherBrickStairs;
|
||||
mappings[223] = ItemType.EnchantingTable;
|
||||
mappings[224] = ItemType.EndPortalFrame;
|
||||
mappings[225] = ItemType.EndStone;
|
||||
mappings[226] = ItemType.EndStoneBricks;
|
||||
mappings[227] = ItemType.DragonEgg;
|
||||
mappings[228] = ItemType.RedstoneLamp;
|
||||
mappings[229] = ItemType.SandstoneStairs;
|
||||
mappings[230] = ItemType.EmeraldOre;
|
||||
mappings[231] = ItemType.EnderChest;
|
||||
mappings[232] = ItemType.TripwireHook;
|
||||
mappings[233] = ItemType.EmeraldBlock;
|
||||
mappings[234] = ItemType.SpruceStairs;
|
||||
mappings[235] = ItemType.BirchStairs;
|
||||
mappings[236] = ItemType.JungleStairs;
|
||||
mappings[237] = ItemType.CommandBlock;
|
||||
mappings[238] = ItemType.Beacon;
|
||||
mappings[239] = ItemType.CobblestoneWall;
|
||||
mappings[240] = ItemType.MossyCobblestoneWall;
|
||||
mappings[241] = ItemType.OakButton;
|
||||
mappings[242] = ItemType.SpruceButton;
|
||||
mappings[243] = ItemType.BirchButton;
|
||||
mappings[244] = ItemType.JungleButton;
|
||||
mappings[245] = ItemType.AcaciaButton;
|
||||
mappings[246] = ItemType.DarkOakButton;
|
||||
mappings[247] = ItemType.Anvil;
|
||||
mappings[248] = ItemType.ChippedAnvil;
|
||||
mappings[249] = ItemType.DamagedAnvil;
|
||||
mappings[250] = ItemType.TrappedChest;
|
||||
mappings[251] = ItemType.LightWeightedPressurePlate;
|
||||
mappings[252] = ItemType.HeavyWeightedPressurePlate;
|
||||
mappings[253] = ItemType.DaylightDetector;
|
||||
mappings[254] = ItemType.RedstoneBlock;
|
||||
mappings[255] = ItemType.NetherQuartzOre;
|
||||
mappings[256] = ItemType.Hopper;
|
||||
mappings[257] = ItemType.ChiseledQuartzBlock;
|
||||
mappings[258] = ItemType.QuartzBlock;
|
||||
mappings[259] = ItemType.QuartzPillar;
|
||||
mappings[260] = ItemType.QuartzStairs;
|
||||
mappings[261] = ItemType.ActivatorRail;
|
||||
mappings[262] = ItemType.Dropper;
|
||||
mappings[263] = ItemType.WhiteTerracotta;
|
||||
mappings[264] = ItemType.OrangeTerracotta;
|
||||
mappings[265] = ItemType.MagentaTerracotta;
|
||||
mappings[266] = ItemType.LightBlueTerracotta;
|
||||
mappings[267] = ItemType.YellowTerracotta;
|
||||
mappings[268] = ItemType.LimeTerracotta;
|
||||
mappings[269] = ItemType.PinkTerracotta;
|
||||
mappings[270] = ItemType.GrayTerracotta;
|
||||
mappings[271] = ItemType.LightGrayTerracotta;
|
||||
mappings[272] = ItemType.CyanTerracotta;
|
||||
mappings[273] = ItemType.PurpleTerracotta;
|
||||
mappings[274] = ItemType.BlueTerracotta;
|
||||
mappings[275] = ItemType.BrownTerracotta;
|
||||
mappings[276] = ItemType.GreenTerracotta;
|
||||
mappings[277] = ItemType.RedTerracotta;
|
||||
mappings[278] = ItemType.BlackTerracotta;
|
||||
mappings[279] = ItemType.Barrier;
|
||||
mappings[280] = ItemType.IronTrapdoor;
|
||||
mappings[281] = ItemType.HayBlock;
|
||||
mappings[282] = ItemType.WhiteCarpet;
|
||||
mappings[283] = ItemType.OrangeCarpet;
|
||||
mappings[284] = ItemType.MagentaCarpet;
|
||||
mappings[285] = ItemType.LightBlueCarpet;
|
||||
mappings[286] = ItemType.YellowCarpet;
|
||||
mappings[287] = ItemType.LimeCarpet;
|
||||
mappings[288] = ItemType.PinkCarpet;
|
||||
mappings[289] = ItemType.GrayCarpet;
|
||||
mappings[290] = ItemType.LightGrayCarpet;
|
||||
mappings[291] = ItemType.CyanCarpet;
|
||||
mappings[292] = ItemType.PurpleCarpet;
|
||||
mappings[293] = ItemType.BlueCarpet;
|
||||
mappings[294] = ItemType.BrownCarpet;
|
||||
mappings[295] = ItemType.GreenCarpet;
|
||||
mappings[296] = ItemType.RedCarpet;
|
||||
mappings[297] = ItemType.BlackCarpet;
|
||||
mappings[298] = ItemType.Terracotta;
|
||||
mappings[299] = ItemType.CoalBlock;
|
||||
mappings[300] = ItemType.PackedIce;
|
||||
mappings[301] = ItemType.AcaciaStairs;
|
||||
mappings[302] = ItemType.DarkOakStairs;
|
||||
mappings[303] = ItemType.SlimeBlock;
|
||||
mappings[304] = ItemType.DirtPath;
|
||||
mappings[305] = ItemType.Sunflower;
|
||||
mappings[306] = ItemType.Lilac;
|
||||
mappings[307] = ItemType.RoseBush;
|
||||
mappings[308] = ItemType.Peony;
|
||||
mappings[309] = ItemType.TallGrass;
|
||||
mappings[310] = ItemType.LargeFern;
|
||||
mappings[311] = ItemType.WhiteStainedGlass;
|
||||
mappings[312] = ItemType.OrangeStainedGlass;
|
||||
mappings[313] = ItemType.MagentaStainedGlass;
|
||||
mappings[314] = ItemType.LightBlueStainedGlass;
|
||||
mappings[315] = ItemType.YellowStainedGlass;
|
||||
mappings[316] = ItemType.LimeStainedGlass;
|
||||
mappings[317] = ItemType.PinkStainedGlass;
|
||||
mappings[318] = ItemType.GrayStainedGlass;
|
||||
mappings[319] = ItemType.LightGrayStainedGlass;
|
||||
mappings[320] = ItemType.CyanStainedGlass;
|
||||
mappings[321] = ItemType.PurpleStainedGlass;
|
||||
mappings[322] = ItemType.BlueStainedGlass;
|
||||
mappings[323] = ItemType.BrownStainedGlass;
|
||||
mappings[324] = ItemType.GreenStainedGlass;
|
||||
mappings[325] = ItemType.RedStainedGlass;
|
||||
mappings[326] = ItemType.BlackStainedGlass;
|
||||
mappings[327] = ItemType.WhiteStainedGlassPane;
|
||||
mappings[328] = ItemType.OrangeStainedGlassPane;
|
||||
mappings[329] = ItemType.MagentaStainedGlassPane;
|
||||
mappings[330] = ItemType.LightBlueStainedGlassPane;
|
||||
mappings[331] = ItemType.YellowStainedGlassPane;
|
||||
mappings[332] = ItemType.LimeStainedGlassPane;
|
||||
mappings[333] = ItemType.PinkStainedGlassPane;
|
||||
mappings[334] = ItemType.GrayStainedGlassPane;
|
||||
mappings[335] = ItemType.LightGrayStainedGlassPane;
|
||||
mappings[336] = ItemType.CyanStainedGlassPane;
|
||||
mappings[337] = ItemType.PurpleStainedGlassPane;
|
||||
mappings[338] = ItemType.BlueStainedGlassPane;
|
||||
mappings[339] = ItemType.BrownStainedGlassPane;
|
||||
mappings[340] = ItemType.GreenStainedGlassPane;
|
||||
mappings[341] = ItemType.RedStainedGlassPane;
|
||||
mappings[342] = ItemType.BlackStainedGlassPane;
|
||||
mappings[343] = ItemType.Prismarine;
|
||||
mappings[344] = ItemType.PrismarineBricks;
|
||||
mappings[345] = ItemType.DarkPrismarine;
|
||||
mappings[346] = ItemType.PrismarineStairs;
|
||||
mappings[347] = ItemType.PrismarineBrickStairs;
|
||||
mappings[348] = ItemType.DarkPrismarineStairs;
|
||||
mappings[349] = ItemType.SeaLantern;
|
||||
mappings[350] = ItemType.RedSandstone;
|
||||
mappings[351] = ItemType.ChiseledRedSandstone;
|
||||
mappings[352] = ItemType.CutRedSandstone;
|
||||
mappings[353] = ItemType.RedSandstoneStairs;
|
||||
mappings[354] = ItemType.RepeatingCommandBlock;
|
||||
mappings[355] = ItemType.ChainCommandBlock;
|
||||
mappings[356] = ItemType.MagmaBlock;
|
||||
mappings[357] = ItemType.NetherWartBlock;
|
||||
mappings[358] = ItemType.RedNetherBricks;
|
||||
mappings[359] = ItemType.BoneBlock;
|
||||
mappings[360] = ItemType.StructureVoid;
|
||||
mappings[361] = ItemType.Observer;
|
||||
mappings[362] = ItemType.ShulkerBox;
|
||||
mappings[363] = ItemType.WhiteShulkerBox;
|
||||
mappings[364] = ItemType.OrangeShulkerBox;
|
||||
mappings[365] = ItemType.MagentaShulkerBox;
|
||||
mappings[366] = ItemType.LightBlueShulkerBox;
|
||||
mappings[367] = ItemType.YellowShulkerBox;
|
||||
mappings[368] = ItemType.LimeShulkerBox;
|
||||
mappings[369] = ItemType.PinkShulkerBox;
|
||||
mappings[370] = ItemType.GrayShulkerBox;
|
||||
mappings[371] = ItemType.LightGrayShulkerBox;
|
||||
mappings[372] = ItemType.CyanShulkerBox;
|
||||
mappings[373] = ItemType.PurpleShulkerBox;
|
||||
mappings[374] = ItemType.BlueShulkerBox;
|
||||
mappings[375] = ItemType.BrownShulkerBox;
|
||||
mappings[376] = ItemType.GreenShulkerBox;
|
||||
mappings[377] = ItemType.RedShulkerBox;
|
||||
mappings[378] = ItemType.BlackShulkerBox;
|
||||
mappings[379] = ItemType.WhiteGlazedTerracotta;
|
||||
mappings[380] = ItemType.OrangeGlazedTerracotta;
|
||||
mappings[381] = ItemType.MagentaGlazedTerracotta;
|
||||
mappings[382] = ItemType.LightBlueGlazedTerracotta;
|
||||
mappings[383] = ItemType.YellowGlazedTerracotta;
|
||||
mappings[384] = ItemType.LimeGlazedTerracotta;
|
||||
mappings[385] = ItemType.PinkGlazedTerracotta;
|
||||
mappings[386] = ItemType.GrayGlazedTerracotta;
|
||||
mappings[387] = ItemType.LightGrayGlazedTerracotta;
|
||||
mappings[388] = ItemType.CyanGlazedTerracotta;
|
||||
mappings[389] = ItemType.PurpleGlazedTerracotta;
|
||||
mappings[390] = ItemType.BlueGlazedTerracotta;
|
||||
mappings[391] = ItemType.BrownGlazedTerracotta;
|
||||
mappings[392] = ItemType.GreenGlazedTerracotta;
|
||||
mappings[393] = ItemType.RedGlazedTerracotta;
|
||||
mappings[394] = ItemType.BlackGlazedTerracotta;
|
||||
mappings[395] = ItemType.WhiteConcrete;
|
||||
mappings[396] = ItemType.OrangeConcrete;
|
||||
mappings[397] = ItemType.MagentaConcrete;
|
||||
mappings[398] = ItemType.LightBlueConcrete;
|
||||
mappings[399] = ItemType.YellowConcrete;
|
||||
mappings[400] = ItemType.LimeConcrete;
|
||||
mappings[401] = ItemType.PinkConcrete;
|
||||
mappings[402] = ItemType.GrayConcrete;
|
||||
mappings[403] = ItemType.LightGrayConcrete;
|
||||
mappings[404] = ItemType.CyanConcrete;
|
||||
mappings[405] = ItemType.PurpleConcrete;
|
||||
mappings[406] = ItemType.BlueConcrete;
|
||||
mappings[407] = ItemType.BrownConcrete;
|
||||
mappings[408] = ItemType.GreenConcrete;
|
||||
mappings[409] = ItemType.RedConcrete;
|
||||
mappings[410] = ItemType.BlackConcrete;
|
||||
mappings[411] = ItemType.WhiteConcretePowder;
|
||||
mappings[412] = ItemType.OrangeConcretePowder;
|
||||
mappings[413] = ItemType.MagentaConcretePowder;
|
||||
mappings[414] = ItemType.LightBlueConcretePowder;
|
||||
mappings[415] = ItemType.YellowConcretePowder;
|
||||
mappings[416] = ItemType.LimeConcretePowder;
|
||||
mappings[417] = ItemType.PinkConcretePowder;
|
||||
mappings[418] = ItemType.GrayConcretePowder;
|
||||
mappings[419] = ItemType.LightGrayConcretePowder;
|
||||
mappings[420] = ItemType.CyanConcretePowder;
|
||||
mappings[421] = ItemType.PurpleConcretePowder;
|
||||
mappings[422] = ItemType.BlueConcretePowder;
|
||||
mappings[423] = ItemType.BrownConcretePowder;
|
||||
mappings[424] = ItemType.GreenConcretePowder;
|
||||
mappings[425] = ItemType.RedConcretePowder;
|
||||
mappings[426] = ItemType.BlackConcretePowder;
|
||||
mappings[427] = ItemType.TurtleEgg;
|
||||
mappings[428] = ItemType.DeadTubeCoralBlock;
|
||||
mappings[429] = ItemType.DeadBrainCoralBlock;
|
||||
mappings[430] = ItemType.DeadBubbleCoralBlock;
|
||||
mappings[431] = ItemType.DeadFireCoralBlock;
|
||||
mappings[432] = ItemType.DeadHornCoralBlock;
|
||||
mappings[433] = ItemType.TubeCoralBlock;
|
||||
mappings[434] = ItemType.BrainCoralBlock;
|
||||
mappings[435] = ItemType.BubbleCoralBlock;
|
||||
mappings[436] = ItemType.FireCoralBlock;
|
||||
mappings[437] = ItemType.HornCoralBlock;
|
||||
mappings[438] = ItemType.TubeCoral;
|
||||
mappings[439] = ItemType.BrainCoral;
|
||||
mappings[440] = ItemType.BubbleCoral;
|
||||
mappings[441] = ItemType.FireCoral;
|
||||
mappings[442] = ItemType.HornCoral;
|
||||
mappings[443] = ItemType.DeadBrainCoral;
|
||||
mappings[444] = ItemType.DeadBubbleCoral;
|
||||
mappings[445] = ItemType.DeadFireCoral;
|
||||
mappings[446] = ItemType.DeadHornCoral;
|
||||
mappings[447] = ItemType.DeadTubeCoral;
|
||||
mappings[448] = ItemType.TubeCoralFan;
|
||||
mappings[449] = ItemType.BrainCoralFan;
|
||||
mappings[450] = ItemType.BubbleCoralFan;
|
||||
mappings[451] = ItemType.FireCoralFan;
|
||||
mappings[452] = ItemType.HornCoralFan;
|
||||
mappings[453] = ItemType.DeadTubeCoralFan;
|
||||
mappings[454] = ItemType.DeadBrainCoralFan;
|
||||
mappings[455] = ItemType.DeadBubbleCoralFan;
|
||||
mappings[456] = ItemType.DeadFireCoralFan;
|
||||
mappings[457] = ItemType.DeadHornCoralFan;
|
||||
mappings[458] = ItemType.BlueIce;
|
||||
mappings[459] = ItemType.Conduit;
|
||||
mappings[460] = ItemType.IronDoor;
|
||||
mappings[461] = ItemType.OakDoor;
|
||||
mappings[462] = ItemType.SpruceDoor;
|
||||
mappings[463] = ItemType.BirchDoor;
|
||||
mappings[464] = ItemType.JungleDoor;
|
||||
mappings[465] = ItemType.AcaciaDoor;
|
||||
mappings[466] = ItemType.DarkOakDoor;
|
||||
mappings[467] = ItemType.Repeater;
|
||||
mappings[468] = ItemType.Comparator;
|
||||
mappings[469] = ItemType.StructureBlock;
|
||||
mappings[470] = ItemType.TurtleHelmet;
|
||||
mappings[471] = ItemType.TurtleScute;
|
||||
mappings[472] = ItemType.IronShovel;
|
||||
mappings[473] = ItemType.IronPickaxe;
|
||||
mappings[474] = ItemType.IronAxe;
|
||||
mappings[475] = ItemType.FlintAndSteel;
|
||||
mappings[476] = ItemType.Apple;
|
||||
mappings[477] = ItemType.Bow;
|
||||
mappings[478] = ItemType.Arrow;
|
||||
mappings[479] = ItemType.Coal;
|
||||
mappings[480] = ItemType.Charcoal;
|
||||
mappings[481] = ItemType.Diamond;
|
||||
mappings[482] = ItemType.IronIngot;
|
||||
mappings[483] = ItemType.GoldIngot;
|
||||
mappings[484] = ItemType.IronSword;
|
||||
mappings[485] = ItemType.WoodenSword;
|
||||
mappings[486] = ItemType.WoodenShovel;
|
||||
mappings[487] = ItemType.WoodenPickaxe;
|
||||
mappings[488] = ItemType.WoodenAxe;
|
||||
mappings[489] = ItemType.StoneSword;
|
||||
mappings[490] = ItemType.StoneShovel;
|
||||
mappings[491] = ItemType.StonePickaxe;
|
||||
mappings[492] = ItemType.StoneAxe;
|
||||
mappings[493] = ItemType.DiamondSword;
|
||||
mappings[494] = ItemType.DiamondShovel;
|
||||
mappings[495] = ItemType.DiamondPickaxe;
|
||||
mappings[496] = ItemType.DiamondAxe;
|
||||
mappings[497] = ItemType.Stick;
|
||||
mappings[498] = ItemType.Bowl;
|
||||
mappings[499] = ItemType.MushroomStew;
|
||||
mappings[500] = ItemType.GoldenSword;
|
||||
mappings[501] = ItemType.GoldenShovel;
|
||||
mappings[502] = ItemType.GoldenPickaxe;
|
||||
mappings[503] = ItemType.GoldenAxe;
|
||||
mappings[504] = ItemType.String;
|
||||
mappings[505] = ItemType.Feather;
|
||||
mappings[506] = ItemType.Gunpowder;
|
||||
mappings[507] = ItemType.WoodenHoe;
|
||||
mappings[508] = ItemType.StoneHoe;
|
||||
mappings[509] = ItemType.IronHoe;
|
||||
mappings[510] = ItemType.DiamondHoe;
|
||||
mappings[511] = ItemType.GoldenHoe;
|
||||
mappings[512] = ItemType.WheatSeeds;
|
||||
mappings[513] = ItemType.Wheat;
|
||||
mappings[514] = ItemType.Bread;
|
||||
mappings[515] = ItemType.LeatherHelmet;
|
||||
mappings[516] = ItemType.LeatherChestplate;
|
||||
mappings[517] = ItemType.LeatherLeggings;
|
||||
mappings[518] = ItemType.LeatherBoots;
|
||||
mappings[519] = ItemType.ChainmailHelmet;
|
||||
mappings[520] = ItemType.ChainmailChestplate;
|
||||
mappings[521] = ItemType.ChainmailLeggings;
|
||||
mappings[522] = ItemType.ChainmailBoots;
|
||||
mappings[523] = ItemType.IronHelmet;
|
||||
mappings[524] = ItemType.IronChestplate;
|
||||
mappings[525] = ItemType.IronLeggings;
|
||||
mappings[526] = ItemType.IronBoots;
|
||||
mappings[527] = ItemType.DiamondHelmet;
|
||||
mappings[528] = ItemType.DiamondChestplate;
|
||||
mappings[529] = ItemType.DiamondLeggings;
|
||||
mappings[530] = ItemType.DiamondBoots;
|
||||
mappings[531] = ItemType.GoldenHelmet;
|
||||
mappings[532] = ItemType.GoldenChestplate;
|
||||
mappings[533] = ItemType.GoldenLeggings;
|
||||
mappings[534] = ItemType.GoldenBoots;
|
||||
mappings[535] = ItemType.Flint;
|
||||
mappings[536] = ItemType.Porkchop;
|
||||
mappings[537] = ItemType.CookedPorkchop;
|
||||
mappings[538] = ItemType.Painting;
|
||||
mappings[539] = ItemType.GoldenApple;
|
||||
mappings[540] = ItemType.EnchantedGoldenApple;
|
||||
mappings[541] = ItemType.OakSign;
|
||||
mappings[542] = ItemType.Bucket;
|
||||
mappings[543] = ItemType.WaterBucket;
|
||||
mappings[544] = ItemType.LavaBucket;
|
||||
mappings[545] = ItemType.Minecart;
|
||||
mappings[546] = ItemType.Saddle;
|
||||
mappings[547] = ItemType.Redstone;
|
||||
mappings[548] = ItemType.Snowball;
|
||||
mappings[549] = ItemType.OakBoat;
|
||||
mappings[550] = ItemType.Leather;
|
||||
mappings[551] = ItemType.MilkBucket;
|
||||
mappings[552] = ItemType.PufferfishBucket;
|
||||
mappings[553] = ItemType.SalmonBucket;
|
||||
mappings[554] = ItemType.CodBucket;
|
||||
mappings[555] = ItemType.TropicalFishBucket;
|
||||
mappings[556] = ItemType.Brick;
|
||||
mappings[557] = ItemType.ClayBall;
|
||||
mappings[558] = ItemType.SugarCane;
|
||||
mappings[559] = ItemType.Kelp;
|
||||
mappings[560] = ItemType.DriedKelpBlock;
|
||||
mappings[561] = ItemType.Paper;
|
||||
mappings[562] = ItemType.Book;
|
||||
mappings[563] = ItemType.SlimeBall;
|
||||
mappings[564] = ItemType.ChestMinecart;
|
||||
mappings[565] = ItemType.FurnaceMinecart;
|
||||
mappings[566] = ItemType.Egg;
|
||||
mappings[567] = ItemType.Compass;
|
||||
mappings[568] = ItemType.FishingRod;
|
||||
mappings[569] = ItemType.Clock;
|
||||
mappings[570] = ItemType.GlowstoneDust;
|
||||
mappings[571] = ItemType.Cod;
|
||||
mappings[572] = ItemType.Salmon;
|
||||
mappings[573] = ItemType.TropicalFish;
|
||||
mappings[574] = ItemType.Pufferfish;
|
||||
mappings[575] = ItemType.CookedCod;
|
||||
mappings[576] = ItemType.CookedSalmon;
|
||||
mappings[577] = ItemType.InkSac;
|
||||
mappings[578] = ItemType.RedDye;
|
||||
mappings[579] = ItemType.GreenDye;
|
||||
mappings[580] = ItemType.CocoaBeans;
|
||||
mappings[581] = ItemType.LapisLazuli;
|
||||
mappings[582] = ItemType.PurpleDye;
|
||||
mappings[583] = ItemType.CyanDye;
|
||||
mappings[584] = ItemType.LightGrayDye;
|
||||
mappings[585] = ItemType.GrayDye;
|
||||
mappings[586] = ItemType.PinkDye;
|
||||
mappings[587] = ItemType.LimeDye;
|
||||
mappings[588] = ItemType.YellowDye;
|
||||
mappings[589] = ItemType.LightBlueDye;
|
||||
mappings[590] = ItemType.MagentaDye;
|
||||
mappings[591] = ItemType.OrangeDye;
|
||||
mappings[592] = ItemType.BoneMeal;
|
||||
mappings[593] = ItemType.Bone;
|
||||
mappings[594] = ItemType.Sugar;
|
||||
mappings[595] = ItemType.Cake;
|
||||
mappings[596] = ItemType.WhiteBed;
|
||||
mappings[597] = ItemType.OrangeBed;
|
||||
mappings[598] = ItemType.MagentaBed;
|
||||
mappings[599] = ItemType.LightBlueBed;
|
||||
mappings[600] = ItemType.YellowBed;
|
||||
mappings[601] = ItemType.LimeBed;
|
||||
mappings[602] = ItemType.PinkBed;
|
||||
mappings[603] = ItemType.GrayBed;
|
||||
mappings[604] = ItemType.LightGrayBed;
|
||||
mappings[605] = ItemType.CyanBed;
|
||||
mappings[606] = ItemType.PurpleBed;
|
||||
mappings[607] = ItemType.BlueBed;
|
||||
mappings[608] = ItemType.BrownBed;
|
||||
mappings[609] = ItemType.GreenBed;
|
||||
mappings[610] = ItemType.RedBed;
|
||||
mappings[611] = ItemType.BlackBed;
|
||||
mappings[612] = ItemType.Cookie;
|
||||
mappings[613] = ItemType.FilledMap;
|
||||
mappings[614] = ItemType.Shears;
|
||||
mappings[615] = ItemType.MelonSlice;
|
||||
mappings[616] = ItemType.DriedKelp;
|
||||
mappings[617] = ItemType.PumpkinSeeds;
|
||||
mappings[618] = ItemType.MelonSeeds;
|
||||
mappings[619] = ItemType.Beef;
|
||||
mappings[620] = ItemType.CookedBeef;
|
||||
mappings[621] = ItemType.Chicken;
|
||||
mappings[622] = ItemType.CookedChicken;
|
||||
mappings[623] = ItemType.RottenFlesh;
|
||||
mappings[624] = ItemType.EnderPearl;
|
||||
mappings[625] = ItemType.BlazeRod;
|
||||
mappings[626] = ItemType.GhastTear;
|
||||
mappings[627] = ItemType.GoldNugget;
|
||||
mappings[628] = ItemType.NetherWart;
|
||||
mappings[629] = ItemType.Potion;
|
||||
mappings[630] = ItemType.GlassBottle;
|
||||
mappings[631] = ItemType.SpiderEye;
|
||||
mappings[632] = ItemType.FermentedSpiderEye;
|
||||
mappings[633] = ItemType.BlazePowder;
|
||||
mappings[634] = ItemType.MagmaCream;
|
||||
mappings[635] = ItemType.BrewingStand;
|
||||
mappings[636] = ItemType.Cauldron;
|
||||
mappings[637] = ItemType.EnderEye;
|
||||
mappings[638] = ItemType.GlisteringMelonSlice;
|
||||
mappings[639] = ItemType.BatSpawnEgg;
|
||||
mappings[640] = ItemType.BlazeSpawnEgg;
|
||||
mappings[641] = ItemType.CaveSpiderSpawnEgg;
|
||||
mappings[642] = ItemType.ChickenSpawnEgg;
|
||||
mappings[643] = ItemType.CodSpawnEgg;
|
||||
mappings[644] = ItemType.CowSpawnEgg;
|
||||
mappings[645] = ItemType.CreeperSpawnEgg;
|
||||
mappings[646] = ItemType.DolphinSpawnEgg;
|
||||
mappings[647] = ItemType.DonkeySpawnEgg;
|
||||
mappings[648] = ItemType.DrownedSpawnEgg;
|
||||
mappings[649] = ItemType.ElderGuardianSpawnEgg;
|
||||
mappings[650] = ItemType.EndermanSpawnEgg;
|
||||
mappings[651] = ItemType.EndermiteSpawnEgg;
|
||||
mappings[652] = ItemType.EvokerSpawnEgg;
|
||||
mappings[653] = ItemType.GhastSpawnEgg;
|
||||
mappings[654] = ItemType.GuardianSpawnEgg;
|
||||
mappings[655] = ItemType.HorseSpawnEgg;
|
||||
mappings[656] = ItemType.HuskSpawnEgg;
|
||||
mappings[657] = ItemType.LlamaSpawnEgg;
|
||||
mappings[658] = ItemType.MagmaCubeSpawnEgg;
|
||||
mappings[659] = ItemType.MooshroomSpawnEgg;
|
||||
mappings[660] = ItemType.MuleSpawnEgg;
|
||||
mappings[661] = ItemType.OcelotSpawnEgg;
|
||||
mappings[662] = ItemType.ParrotSpawnEgg;
|
||||
mappings[663] = ItemType.PhantomSpawnEgg;
|
||||
mappings[664] = ItemType.PigSpawnEgg;
|
||||
mappings[665] = ItemType.PolarBearSpawnEgg;
|
||||
mappings[666] = ItemType.PufferfishSpawnEgg;
|
||||
mappings[667] = ItemType.RabbitSpawnEgg;
|
||||
mappings[668] = ItemType.SalmonSpawnEgg;
|
||||
mappings[669] = ItemType.SheepSpawnEgg;
|
||||
mappings[670] = ItemType.ShulkerSpawnEgg;
|
||||
mappings[671] = ItemType.SilverfishSpawnEgg;
|
||||
mappings[672] = ItemType.SkeletonSpawnEgg;
|
||||
mappings[673] = ItemType.SkeletonHorseSpawnEgg;
|
||||
mappings[674] = ItemType.SlimeSpawnEgg;
|
||||
mappings[675] = ItemType.SpiderSpawnEgg;
|
||||
mappings[676] = ItemType.SquidSpawnEgg;
|
||||
mappings[677] = ItemType.StraySpawnEgg;
|
||||
mappings[678] = ItemType.TropicalFishSpawnEgg;
|
||||
mappings[679] = ItemType.TurtleSpawnEgg;
|
||||
mappings[680] = ItemType.VexSpawnEgg;
|
||||
mappings[681] = ItemType.VillagerSpawnEgg;
|
||||
mappings[682] = ItemType.VindicatorSpawnEgg;
|
||||
mappings[683] = ItemType.WitchSpawnEgg;
|
||||
mappings[684] = ItemType.WitherSkeletonSpawnEgg;
|
||||
mappings[685] = ItemType.WolfSpawnEgg;
|
||||
mappings[686] = ItemType.ZombieSpawnEgg;
|
||||
mappings[687] = ItemType.ZombieHorseSpawnEgg;
|
||||
mappings[688] = ItemType.ZombifiedPiglinSpawnEgg;
|
||||
mappings[689] = ItemType.ZombieVillagerSpawnEgg;
|
||||
mappings[690] = ItemType.ExperienceBottle;
|
||||
mappings[691] = ItemType.FireCharge;
|
||||
mappings[692] = ItemType.WritableBook;
|
||||
mappings[693] = ItemType.WrittenBook;
|
||||
mappings[694] = ItemType.Emerald;
|
||||
mappings[695] = ItemType.ItemFrame;
|
||||
mappings[696] = ItemType.FlowerPot;
|
||||
mappings[697] = ItemType.Carrot;
|
||||
mappings[698] = ItemType.Potato;
|
||||
mappings[699] = ItemType.BakedPotato;
|
||||
mappings[700] = ItemType.PoisonousPotato;
|
||||
mappings[701] = ItemType.Map;
|
||||
mappings[702] = ItemType.GoldenCarrot;
|
||||
mappings[703] = ItemType.SkeletonSkull;
|
||||
mappings[704] = ItemType.WitherSkeletonSkull;
|
||||
mappings[705] = ItemType.PlayerHead;
|
||||
mappings[706] = ItemType.ZombieHead;
|
||||
mappings[707] = ItemType.CreeperHead;
|
||||
mappings[708] = ItemType.DragonHead;
|
||||
mappings[709] = ItemType.CarrotOnAStick;
|
||||
mappings[710] = ItemType.NetherStar;
|
||||
mappings[711] = ItemType.PumpkinPie;
|
||||
mappings[712] = ItemType.FireworkRocket;
|
||||
mappings[713] = ItemType.FireworkStar;
|
||||
mappings[714] = ItemType.EnchantedBook;
|
||||
mappings[715] = ItemType.NetherBrick;
|
||||
mappings[716] = ItemType.Quartz;
|
||||
mappings[717] = ItemType.TntMinecart;
|
||||
mappings[718] = ItemType.HopperMinecart;
|
||||
mappings[719] = ItemType.PrismarineShard;
|
||||
mappings[720] = ItemType.PrismarineCrystals;
|
||||
mappings[721] = ItemType.Rabbit;
|
||||
mappings[722] = ItemType.CookedRabbit;
|
||||
mappings[723] = ItemType.RabbitStew;
|
||||
mappings[724] = ItemType.RabbitFoot;
|
||||
mappings[725] = ItemType.RabbitHide;
|
||||
mappings[726] = ItemType.ArmorStand;
|
||||
mappings[727] = ItemType.IronHorseArmor;
|
||||
mappings[728] = ItemType.GoldenHorseArmor;
|
||||
mappings[729] = ItemType.DiamondHorseArmor;
|
||||
mappings[730] = ItemType.Lead;
|
||||
mappings[731] = ItemType.NameTag;
|
||||
mappings[732] = ItemType.CommandBlockMinecart;
|
||||
mappings[733] = ItemType.Mutton;
|
||||
mappings[734] = ItemType.CookedMutton;
|
||||
mappings[735] = ItemType.WhiteBanner;
|
||||
mappings[736] = ItemType.OrangeBanner;
|
||||
mappings[737] = ItemType.MagentaBanner;
|
||||
mappings[738] = ItemType.LightBlueBanner;
|
||||
mappings[739] = ItemType.YellowBanner;
|
||||
mappings[740] = ItemType.LimeBanner;
|
||||
mappings[741] = ItemType.PinkBanner;
|
||||
mappings[742] = ItemType.GrayBanner;
|
||||
mappings[743] = ItemType.LightGrayBanner;
|
||||
mappings[744] = ItemType.CyanBanner;
|
||||
mappings[745] = ItemType.PurpleBanner;
|
||||
mappings[746] = ItemType.BlueBanner;
|
||||
mappings[747] = ItemType.BrownBanner;
|
||||
mappings[748] = ItemType.GreenBanner;
|
||||
mappings[749] = ItemType.RedBanner;
|
||||
mappings[750] = ItemType.BlackBanner;
|
||||
mappings[751] = ItemType.EndCrystal;
|
||||
mappings[752] = ItemType.ChorusFruit;
|
||||
mappings[753] = ItemType.PoppedChorusFruit;
|
||||
mappings[754] = ItemType.Beetroot;
|
||||
mappings[755] = ItemType.BeetrootSeeds;
|
||||
mappings[756] = ItemType.BeetrootSoup;
|
||||
mappings[757] = ItemType.DragonBreath;
|
||||
mappings[758] = ItemType.SplashPotion;
|
||||
mappings[759] = ItemType.SpectralArrow;
|
||||
mappings[760] = ItemType.TippedArrow;
|
||||
mappings[761] = ItemType.LingeringPotion;
|
||||
mappings[762] = ItemType.Shield;
|
||||
mappings[763] = ItemType.Elytra;
|
||||
mappings[764] = ItemType.SpruceBoat;
|
||||
mappings[765] = ItemType.BirchBoat;
|
||||
mappings[766] = ItemType.JungleBoat;
|
||||
mappings[767] = ItemType.AcaciaBoat;
|
||||
mappings[768] = ItemType.DarkOakBoat;
|
||||
mappings[769] = ItemType.TotemOfUndying;
|
||||
mappings[770] = ItemType.ShulkerShell;
|
||||
mappings[771] = ItemType.IronNugget;
|
||||
mappings[772] = ItemType.KnowledgeBook;
|
||||
mappings[773] = ItemType.DebugStick;
|
||||
mappings[774] = ItemType.MusicDisc13;
|
||||
mappings[775] = ItemType.MusicDiscCat;
|
||||
mappings[776] = ItemType.MusicDiscBlocks;
|
||||
mappings[777] = ItemType.MusicDiscChirp;
|
||||
mappings[778] = ItemType.MusicDiscFar;
|
||||
mappings[779] = ItemType.MusicDiscMall;
|
||||
mappings[780] = ItemType.MusicDiscMellohi;
|
||||
mappings[781] = ItemType.MusicDiscStal;
|
||||
mappings[782] = ItemType.MusicDiscStrad;
|
||||
mappings[783] = ItemType.MusicDiscWard;
|
||||
mappings[784] = ItemType.MusicDisc11;
|
||||
mappings[785] = ItemType.MusicDiscWait;
|
||||
mappings[786] = ItemType.Trident;
|
||||
mappings[787] = ItemType.PhantomMembrane;
|
||||
mappings[788] = ItemType.NautilusShell;
|
||||
mappings[789] = ItemType.HeartOfTheSea;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, ItemType> GetDict()
|
||||
{
|
||||
return mappings;
|
||||
}
|
||||
}
|
||||
}
|
||||
895
MinecraftClient/Inventory/ItemPalettes/ItemPalette114.cs
Normal file
895
MinecraftClient/Inventory/ItemPalettes/ItemPalette114.cs
Normal file
|
|
@ -0,0 +1,895 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace MinecraftClient.Inventory.ItemPalettes
|
||||
{
|
||||
public class ItemPalette114 : ItemPalette
|
||||
{
|
||||
private static readonly Dictionary<int, ItemType> mappings = new();
|
||||
|
||||
static ItemPalette114()
|
||||
{
|
||||
mappings[0] = ItemType.Air;
|
||||
mappings[1] = ItemType.Stone;
|
||||
mappings[2] = ItemType.Granite;
|
||||
mappings[3] = ItemType.PolishedGranite;
|
||||
mappings[4] = ItemType.Diorite;
|
||||
mappings[5] = ItemType.PolishedDiorite;
|
||||
mappings[6] = ItemType.Andesite;
|
||||
mappings[7] = ItemType.PolishedAndesite;
|
||||
mappings[8] = ItemType.GrassBlock;
|
||||
mappings[9] = ItemType.Dirt;
|
||||
mappings[10] = ItemType.CoarseDirt;
|
||||
mappings[11] = ItemType.Podzol;
|
||||
mappings[12] = ItemType.Cobblestone;
|
||||
mappings[13] = ItemType.OakPlanks;
|
||||
mappings[14] = ItemType.SprucePlanks;
|
||||
mappings[15] = ItemType.BirchPlanks;
|
||||
mappings[16] = ItemType.JunglePlanks;
|
||||
mappings[17] = ItemType.AcaciaPlanks;
|
||||
mappings[18] = ItemType.DarkOakPlanks;
|
||||
mappings[19] = ItemType.OakSapling;
|
||||
mappings[20] = ItemType.SpruceSapling;
|
||||
mappings[21] = ItemType.BirchSapling;
|
||||
mappings[22] = ItemType.JungleSapling;
|
||||
mappings[23] = ItemType.AcaciaSapling;
|
||||
mappings[24] = ItemType.DarkOakSapling;
|
||||
mappings[25] = ItemType.Bedrock;
|
||||
mappings[26] = ItemType.Sand;
|
||||
mappings[27] = ItemType.RedSand;
|
||||
mappings[28] = ItemType.Gravel;
|
||||
mappings[29] = ItemType.GoldOre;
|
||||
mappings[30] = ItemType.IronOre;
|
||||
mappings[31] = ItemType.CoalOre;
|
||||
mappings[32] = ItemType.OakLog;
|
||||
mappings[33] = ItemType.SpruceLog;
|
||||
mappings[34] = ItemType.BirchLog;
|
||||
mappings[35] = ItemType.JungleLog;
|
||||
mappings[36] = ItemType.AcaciaLog;
|
||||
mappings[37] = ItemType.DarkOakLog;
|
||||
mappings[38] = ItemType.StrippedOakLog;
|
||||
mappings[39] = ItemType.StrippedSpruceLog;
|
||||
mappings[40] = ItemType.StrippedBirchLog;
|
||||
mappings[41] = ItemType.StrippedJungleLog;
|
||||
mappings[42] = ItemType.StrippedAcaciaLog;
|
||||
mappings[43] = ItemType.StrippedDarkOakLog;
|
||||
mappings[44] = ItemType.StrippedOakWood;
|
||||
mappings[45] = ItemType.StrippedSpruceWood;
|
||||
mappings[46] = ItemType.StrippedBirchWood;
|
||||
mappings[47] = ItemType.StrippedJungleWood;
|
||||
mappings[48] = ItemType.StrippedAcaciaWood;
|
||||
mappings[49] = ItemType.StrippedDarkOakWood;
|
||||
mappings[50] = ItemType.OakWood;
|
||||
mappings[51] = ItemType.SpruceWood;
|
||||
mappings[52] = ItemType.BirchWood;
|
||||
mappings[53] = ItemType.JungleWood;
|
||||
mappings[54] = ItemType.AcaciaWood;
|
||||
mappings[55] = ItemType.DarkOakWood;
|
||||
mappings[56] = ItemType.OakLeaves;
|
||||
mappings[57] = ItemType.SpruceLeaves;
|
||||
mappings[58] = ItemType.BirchLeaves;
|
||||
mappings[59] = ItemType.JungleLeaves;
|
||||
mappings[60] = ItemType.AcaciaLeaves;
|
||||
mappings[61] = ItemType.DarkOakLeaves;
|
||||
mappings[62] = ItemType.Sponge;
|
||||
mappings[63] = ItemType.WetSponge;
|
||||
mappings[64] = ItemType.Glass;
|
||||
mappings[65] = ItemType.LapisOre;
|
||||
mappings[66] = ItemType.LapisBlock;
|
||||
mappings[67] = ItemType.Dispenser;
|
||||
mappings[68] = ItemType.Sandstone;
|
||||
mappings[69] = ItemType.ChiseledSandstone;
|
||||
mappings[70] = ItemType.CutSandstone;
|
||||
mappings[71] = ItemType.NoteBlock;
|
||||
mappings[72] = ItemType.PoweredRail;
|
||||
mappings[73] = ItemType.DetectorRail;
|
||||
mappings[74] = ItemType.StickyPiston;
|
||||
mappings[75] = ItemType.Cobweb;
|
||||
mappings[76] = ItemType.ShortGrass;
|
||||
mappings[77] = ItemType.Fern;
|
||||
mappings[78] = ItemType.DeadBush;
|
||||
mappings[79] = ItemType.Seagrass;
|
||||
mappings[80] = ItemType.SeaPickle;
|
||||
mappings[81] = ItemType.Piston;
|
||||
mappings[82] = ItemType.WhiteWool;
|
||||
mappings[83] = ItemType.OrangeWool;
|
||||
mappings[84] = ItemType.MagentaWool;
|
||||
mappings[85] = ItemType.LightBlueWool;
|
||||
mappings[86] = ItemType.YellowWool;
|
||||
mappings[87] = ItemType.LimeWool;
|
||||
mappings[88] = ItemType.PinkWool;
|
||||
mappings[89] = ItemType.GrayWool;
|
||||
mappings[90] = ItemType.LightGrayWool;
|
||||
mappings[91] = ItemType.CyanWool;
|
||||
mappings[92] = ItemType.PurpleWool;
|
||||
mappings[93] = ItemType.BlueWool;
|
||||
mappings[94] = ItemType.BrownWool;
|
||||
mappings[95] = ItemType.GreenWool;
|
||||
mappings[96] = ItemType.RedWool;
|
||||
mappings[97] = ItemType.BlackWool;
|
||||
mappings[98] = ItemType.Dandelion;
|
||||
mappings[99] = ItemType.Poppy;
|
||||
mappings[100] = ItemType.BlueOrchid;
|
||||
mappings[101] = ItemType.Allium;
|
||||
mappings[102] = ItemType.AzureBluet;
|
||||
mappings[103] = ItemType.RedTulip;
|
||||
mappings[104] = ItemType.OrangeTulip;
|
||||
mappings[105] = ItemType.WhiteTulip;
|
||||
mappings[106] = ItemType.PinkTulip;
|
||||
mappings[107] = ItemType.OxeyeDaisy;
|
||||
mappings[108] = ItemType.Cornflower;
|
||||
mappings[109] = ItemType.LilyOfTheValley;
|
||||
mappings[110] = ItemType.WitherRose;
|
||||
mappings[111] = ItemType.BrownMushroom;
|
||||
mappings[112] = ItemType.RedMushroom;
|
||||
mappings[113] = ItemType.GoldBlock;
|
||||
mappings[114] = ItemType.IronBlock;
|
||||
mappings[115] = ItemType.OakSlab;
|
||||
mappings[116] = ItemType.SpruceSlab;
|
||||
mappings[117] = ItemType.BirchSlab;
|
||||
mappings[118] = ItemType.JungleSlab;
|
||||
mappings[119] = ItemType.AcaciaSlab;
|
||||
mappings[120] = ItemType.DarkOakSlab;
|
||||
mappings[121] = ItemType.StoneSlab;
|
||||
mappings[122] = ItemType.SmoothStoneSlab;
|
||||
mappings[123] = ItemType.SandstoneSlab;
|
||||
mappings[124] = ItemType.CutSandstoneSlab;
|
||||
mappings[125] = ItemType.PetrifiedOakSlab;
|
||||
mappings[126] = ItemType.CobblestoneSlab;
|
||||
mappings[127] = ItemType.BrickSlab;
|
||||
mappings[128] = ItemType.StoneBrickSlab;
|
||||
mappings[129] = ItemType.NetherBrickSlab;
|
||||
mappings[130] = ItemType.QuartzSlab;
|
||||
mappings[131] = ItemType.RedSandstoneSlab;
|
||||
mappings[132] = ItemType.CutRedSandstoneSlab;
|
||||
mappings[133] = ItemType.PurpurSlab;
|
||||
mappings[134] = ItemType.PrismarineSlab;
|
||||
mappings[135] = ItemType.PrismarineBrickSlab;
|
||||
mappings[136] = ItemType.DarkPrismarineSlab;
|
||||
mappings[137] = ItemType.SmoothQuartz;
|
||||
mappings[138] = ItemType.SmoothRedSandstone;
|
||||
mappings[139] = ItemType.SmoothSandstone;
|
||||
mappings[140] = ItemType.SmoothStone;
|
||||
mappings[141] = ItemType.Bricks;
|
||||
mappings[142] = ItemType.Tnt;
|
||||
mappings[143] = ItemType.Bookshelf;
|
||||
mappings[144] = ItemType.MossyCobblestone;
|
||||
mappings[145] = ItemType.Obsidian;
|
||||
mappings[146] = ItemType.Torch;
|
||||
mappings[147] = ItemType.EndRod;
|
||||
mappings[148] = ItemType.ChorusPlant;
|
||||
mappings[149] = ItemType.ChorusFlower;
|
||||
mappings[150] = ItemType.PurpurBlock;
|
||||
mappings[151] = ItemType.PurpurPillar;
|
||||
mappings[152] = ItemType.PurpurStairs;
|
||||
mappings[153] = ItemType.Spawner;
|
||||
mappings[154] = ItemType.OakStairs;
|
||||
mappings[155] = ItemType.Chest;
|
||||
mappings[156] = ItemType.DiamondOre;
|
||||
mappings[157] = ItemType.DiamondBlock;
|
||||
mappings[158] = ItemType.CraftingTable;
|
||||
mappings[159] = ItemType.Farmland;
|
||||
mappings[160] = ItemType.Furnace;
|
||||
mappings[161] = ItemType.Ladder;
|
||||
mappings[162] = ItemType.Rail;
|
||||
mappings[163] = ItemType.CobblestoneStairs;
|
||||
mappings[164] = ItemType.Lever;
|
||||
mappings[165] = ItemType.StonePressurePlate;
|
||||
mappings[166] = ItemType.OakPressurePlate;
|
||||
mappings[167] = ItemType.SprucePressurePlate;
|
||||
mappings[168] = ItemType.BirchPressurePlate;
|
||||
mappings[169] = ItemType.JunglePressurePlate;
|
||||
mappings[170] = ItemType.AcaciaPressurePlate;
|
||||
mappings[171] = ItemType.DarkOakPressurePlate;
|
||||
mappings[172] = ItemType.RedstoneOre;
|
||||
mappings[173] = ItemType.RedstoneTorch;
|
||||
mappings[174] = ItemType.StoneButton;
|
||||
mappings[175] = ItemType.Snow;
|
||||
mappings[176] = ItemType.Ice;
|
||||
mappings[177] = ItemType.SnowBlock;
|
||||
mappings[178] = ItemType.Cactus;
|
||||
mappings[179] = ItemType.Clay;
|
||||
mappings[180] = ItemType.Jukebox;
|
||||
mappings[181] = ItemType.OakFence;
|
||||
mappings[182] = ItemType.SpruceFence;
|
||||
mappings[183] = ItemType.BirchFence;
|
||||
mappings[184] = ItemType.JungleFence;
|
||||
mappings[185] = ItemType.AcaciaFence;
|
||||
mappings[186] = ItemType.DarkOakFence;
|
||||
mappings[187] = ItemType.Pumpkin;
|
||||
mappings[188] = ItemType.CarvedPumpkin;
|
||||
mappings[189] = ItemType.Netherrack;
|
||||
mappings[190] = ItemType.SoulSand;
|
||||
mappings[191] = ItemType.Glowstone;
|
||||
mappings[192] = ItemType.JackOLantern;
|
||||
mappings[193] = ItemType.OakTrapdoor;
|
||||
mappings[194] = ItemType.SpruceTrapdoor;
|
||||
mappings[195] = ItemType.BirchTrapdoor;
|
||||
mappings[196] = ItemType.JungleTrapdoor;
|
||||
mappings[197] = ItemType.AcaciaTrapdoor;
|
||||
mappings[198] = ItemType.DarkOakTrapdoor;
|
||||
mappings[199] = ItemType.InfestedStone;
|
||||
mappings[200] = ItemType.InfestedCobblestone;
|
||||
mappings[201] = ItemType.InfestedStoneBricks;
|
||||
mappings[202] = ItemType.InfestedMossyStoneBricks;
|
||||
mappings[203] = ItemType.InfestedCrackedStoneBricks;
|
||||
mappings[204] = ItemType.InfestedChiseledStoneBricks;
|
||||
mappings[205] = ItemType.StoneBricks;
|
||||
mappings[206] = ItemType.MossyStoneBricks;
|
||||
mappings[207] = ItemType.CrackedStoneBricks;
|
||||
mappings[208] = ItemType.ChiseledStoneBricks;
|
||||
mappings[209] = ItemType.BrownMushroomBlock;
|
||||
mappings[210] = ItemType.RedMushroomBlock;
|
||||
mappings[211] = ItemType.MushroomStem;
|
||||
mappings[212] = ItemType.IronBars;
|
||||
mappings[213] = ItemType.GlassPane;
|
||||
mappings[214] = ItemType.Melon;
|
||||
mappings[215] = ItemType.Vine;
|
||||
mappings[216] = ItemType.OakFenceGate;
|
||||
mappings[217] = ItemType.SpruceFenceGate;
|
||||
mappings[218] = ItemType.BirchFenceGate;
|
||||
mappings[219] = ItemType.JungleFenceGate;
|
||||
mappings[220] = ItemType.AcaciaFenceGate;
|
||||
mappings[221] = ItemType.DarkOakFenceGate;
|
||||
mappings[222] = ItemType.BrickStairs;
|
||||
mappings[223] = ItemType.StoneBrickStairs;
|
||||
mappings[224] = ItemType.Mycelium;
|
||||
mappings[225] = ItemType.LilyPad;
|
||||
mappings[226] = ItemType.NetherBricks;
|
||||
mappings[227] = ItemType.NetherBrickFence;
|
||||
mappings[228] = ItemType.NetherBrickStairs;
|
||||
mappings[229] = ItemType.EnchantingTable;
|
||||
mappings[230] = ItemType.EndPortalFrame;
|
||||
mappings[231] = ItemType.EndStone;
|
||||
mappings[232] = ItemType.EndStoneBricks;
|
||||
mappings[233] = ItemType.DragonEgg;
|
||||
mappings[234] = ItemType.RedstoneLamp;
|
||||
mappings[235] = ItemType.SandstoneStairs;
|
||||
mappings[236] = ItemType.EmeraldOre;
|
||||
mappings[237] = ItemType.EnderChest;
|
||||
mappings[238] = ItemType.TripwireHook;
|
||||
mappings[239] = ItemType.EmeraldBlock;
|
||||
mappings[240] = ItemType.SpruceStairs;
|
||||
mappings[241] = ItemType.BirchStairs;
|
||||
mappings[242] = ItemType.JungleStairs;
|
||||
mappings[243] = ItemType.CommandBlock;
|
||||
mappings[244] = ItemType.Beacon;
|
||||
mappings[245] = ItemType.CobblestoneWall;
|
||||
mappings[246] = ItemType.MossyCobblestoneWall;
|
||||
mappings[247] = ItemType.BrickWall;
|
||||
mappings[248] = ItemType.PrismarineWall;
|
||||
mappings[249] = ItemType.RedSandstoneWall;
|
||||
mappings[250] = ItemType.MossyStoneBrickWall;
|
||||
mappings[251] = ItemType.GraniteWall;
|
||||
mappings[252] = ItemType.StoneBrickWall;
|
||||
mappings[253] = ItemType.NetherBrickWall;
|
||||
mappings[254] = ItemType.AndesiteWall;
|
||||
mappings[255] = ItemType.RedNetherBrickWall;
|
||||
mappings[256] = ItemType.SandstoneWall;
|
||||
mappings[257] = ItemType.EndStoneBrickWall;
|
||||
mappings[258] = ItemType.DioriteWall;
|
||||
mappings[259] = ItemType.OakButton;
|
||||
mappings[260] = ItemType.SpruceButton;
|
||||
mappings[261] = ItemType.BirchButton;
|
||||
mappings[262] = ItemType.JungleButton;
|
||||
mappings[263] = ItemType.AcaciaButton;
|
||||
mappings[264] = ItemType.DarkOakButton;
|
||||
mappings[265] = ItemType.Anvil;
|
||||
mappings[266] = ItemType.ChippedAnvil;
|
||||
mappings[267] = ItemType.DamagedAnvil;
|
||||
mappings[268] = ItemType.TrappedChest;
|
||||
mappings[269] = ItemType.LightWeightedPressurePlate;
|
||||
mappings[270] = ItemType.HeavyWeightedPressurePlate;
|
||||
mappings[271] = ItemType.DaylightDetector;
|
||||
mappings[272] = ItemType.RedstoneBlock;
|
||||
mappings[273] = ItemType.NetherQuartzOre;
|
||||
mappings[274] = ItemType.Hopper;
|
||||
mappings[275] = ItemType.ChiseledQuartzBlock;
|
||||
mappings[276] = ItemType.QuartzBlock;
|
||||
mappings[277] = ItemType.QuartzPillar;
|
||||
mappings[278] = ItemType.QuartzStairs;
|
||||
mappings[279] = ItemType.ActivatorRail;
|
||||
mappings[280] = ItemType.Dropper;
|
||||
mappings[281] = ItemType.WhiteTerracotta;
|
||||
mappings[282] = ItemType.OrangeTerracotta;
|
||||
mappings[283] = ItemType.MagentaTerracotta;
|
||||
mappings[284] = ItemType.LightBlueTerracotta;
|
||||
mappings[285] = ItemType.YellowTerracotta;
|
||||
mappings[286] = ItemType.LimeTerracotta;
|
||||
mappings[287] = ItemType.PinkTerracotta;
|
||||
mappings[288] = ItemType.GrayTerracotta;
|
||||
mappings[289] = ItemType.LightGrayTerracotta;
|
||||
mappings[290] = ItemType.CyanTerracotta;
|
||||
mappings[291] = ItemType.PurpleTerracotta;
|
||||
mappings[292] = ItemType.BlueTerracotta;
|
||||
mappings[293] = ItemType.BrownTerracotta;
|
||||
mappings[294] = ItemType.GreenTerracotta;
|
||||
mappings[295] = ItemType.RedTerracotta;
|
||||
mappings[296] = ItemType.BlackTerracotta;
|
||||
mappings[297] = ItemType.Barrier;
|
||||
mappings[298] = ItemType.IronTrapdoor;
|
||||
mappings[299] = ItemType.HayBlock;
|
||||
mappings[300] = ItemType.WhiteCarpet;
|
||||
mappings[301] = ItemType.OrangeCarpet;
|
||||
mappings[302] = ItemType.MagentaCarpet;
|
||||
mappings[303] = ItemType.LightBlueCarpet;
|
||||
mappings[304] = ItemType.YellowCarpet;
|
||||
mappings[305] = ItemType.LimeCarpet;
|
||||
mappings[306] = ItemType.PinkCarpet;
|
||||
mappings[307] = ItemType.GrayCarpet;
|
||||
mappings[308] = ItemType.LightGrayCarpet;
|
||||
mappings[309] = ItemType.CyanCarpet;
|
||||
mappings[310] = ItemType.PurpleCarpet;
|
||||
mappings[311] = ItemType.BlueCarpet;
|
||||
mappings[312] = ItemType.BrownCarpet;
|
||||
mappings[313] = ItemType.GreenCarpet;
|
||||
mappings[314] = ItemType.RedCarpet;
|
||||
mappings[315] = ItemType.BlackCarpet;
|
||||
mappings[316] = ItemType.Terracotta;
|
||||
mappings[317] = ItemType.CoalBlock;
|
||||
mappings[318] = ItemType.PackedIce;
|
||||
mappings[319] = ItemType.AcaciaStairs;
|
||||
mappings[320] = ItemType.DarkOakStairs;
|
||||
mappings[321] = ItemType.SlimeBlock;
|
||||
mappings[322] = ItemType.DirtPath;
|
||||
mappings[323] = ItemType.Sunflower;
|
||||
mappings[324] = ItemType.Lilac;
|
||||
mappings[325] = ItemType.RoseBush;
|
||||
mappings[326] = ItemType.Peony;
|
||||
mappings[327] = ItemType.TallGrass;
|
||||
mappings[328] = ItemType.LargeFern;
|
||||
mappings[329] = ItemType.WhiteStainedGlass;
|
||||
mappings[330] = ItemType.OrangeStainedGlass;
|
||||
mappings[331] = ItemType.MagentaStainedGlass;
|
||||
mappings[332] = ItemType.LightBlueStainedGlass;
|
||||
mappings[333] = ItemType.YellowStainedGlass;
|
||||
mappings[334] = ItemType.LimeStainedGlass;
|
||||
mappings[335] = ItemType.PinkStainedGlass;
|
||||
mappings[336] = ItemType.GrayStainedGlass;
|
||||
mappings[337] = ItemType.LightGrayStainedGlass;
|
||||
mappings[338] = ItemType.CyanStainedGlass;
|
||||
mappings[339] = ItemType.PurpleStainedGlass;
|
||||
mappings[340] = ItemType.BlueStainedGlass;
|
||||
mappings[341] = ItemType.BrownStainedGlass;
|
||||
mappings[342] = ItemType.GreenStainedGlass;
|
||||
mappings[343] = ItemType.RedStainedGlass;
|
||||
mappings[344] = ItemType.BlackStainedGlass;
|
||||
mappings[345] = ItemType.WhiteStainedGlassPane;
|
||||
mappings[346] = ItemType.OrangeStainedGlassPane;
|
||||
mappings[347] = ItemType.MagentaStainedGlassPane;
|
||||
mappings[348] = ItemType.LightBlueStainedGlassPane;
|
||||
mappings[349] = ItemType.YellowStainedGlassPane;
|
||||
mappings[350] = ItemType.LimeStainedGlassPane;
|
||||
mappings[351] = ItemType.PinkStainedGlassPane;
|
||||
mappings[352] = ItemType.GrayStainedGlassPane;
|
||||
mappings[353] = ItemType.LightGrayStainedGlassPane;
|
||||
mappings[354] = ItemType.CyanStainedGlassPane;
|
||||
mappings[355] = ItemType.PurpleStainedGlassPane;
|
||||
mappings[356] = ItemType.BlueStainedGlassPane;
|
||||
mappings[357] = ItemType.BrownStainedGlassPane;
|
||||
mappings[358] = ItemType.GreenStainedGlassPane;
|
||||
mappings[359] = ItemType.RedStainedGlassPane;
|
||||
mappings[360] = ItemType.BlackStainedGlassPane;
|
||||
mappings[361] = ItemType.Prismarine;
|
||||
mappings[362] = ItemType.PrismarineBricks;
|
||||
mappings[363] = ItemType.DarkPrismarine;
|
||||
mappings[364] = ItemType.PrismarineStairs;
|
||||
mappings[365] = ItemType.PrismarineBrickStairs;
|
||||
mappings[366] = ItemType.DarkPrismarineStairs;
|
||||
mappings[367] = ItemType.SeaLantern;
|
||||
mappings[368] = ItemType.RedSandstone;
|
||||
mappings[369] = ItemType.ChiseledRedSandstone;
|
||||
mappings[370] = ItemType.CutRedSandstone;
|
||||
mappings[371] = ItemType.RedSandstoneStairs;
|
||||
mappings[372] = ItemType.RepeatingCommandBlock;
|
||||
mappings[373] = ItemType.ChainCommandBlock;
|
||||
mappings[374] = ItemType.MagmaBlock;
|
||||
mappings[375] = ItemType.NetherWartBlock;
|
||||
mappings[376] = ItemType.RedNetherBricks;
|
||||
mappings[377] = ItemType.BoneBlock;
|
||||
mappings[378] = ItemType.StructureVoid;
|
||||
mappings[379] = ItemType.Observer;
|
||||
mappings[380] = ItemType.ShulkerBox;
|
||||
mappings[381] = ItemType.WhiteShulkerBox;
|
||||
mappings[382] = ItemType.OrangeShulkerBox;
|
||||
mappings[383] = ItemType.MagentaShulkerBox;
|
||||
mappings[384] = ItemType.LightBlueShulkerBox;
|
||||
mappings[385] = ItemType.YellowShulkerBox;
|
||||
mappings[386] = ItemType.LimeShulkerBox;
|
||||
mappings[387] = ItemType.PinkShulkerBox;
|
||||
mappings[388] = ItemType.GrayShulkerBox;
|
||||
mappings[389] = ItemType.LightGrayShulkerBox;
|
||||
mappings[390] = ItemType.CyanShulkerBox;
|
||||
mappings[391] = ItemType.PurpleShulkerBox;
|
||||
mappings[392] = ItemType.BlueShulkerBox;
|
||||
mappings[393] = ItemType.BrownShulkerBox;
|
||||
mappings[394] = ItemType.GreenShulkerBox;
|
||||
mappings[395] = ItemType.RedShulkerBox;
|
||||
mappings[396] = ItemType.BlackShulkerBox;
|
||||
mappings[397] = ItemType.WhiteGlazedTerracotta;
|
||||
mappings[398] = ItemType.OrangeGlazedTerracotta;
|
||||
mappings[399] = ItemType.MagentaGlazedTerracotta;
|
||||
mappings[400] = ItemType.LightBlueGlazedTerracotta;
|
||||
mappings[401] = ItemType.YellowGlazedTerracotta;
|
||||
mappings[402] = ItemType.LimeGlazedTerracotta;
|
||||
mappings[403] = ItemType.PinkGlazedTerracotta;
|
||||
mappings[404] = ItemType.GrayGlazedTerracotta;
|
||||
mappings[405] = ItemType.LightGrayGlazedTerracotta;
|
||||
mappings[406] = ItemType.CyanGlazedTerracotta;
|
||||
mappings[407] = ItemType.PurpleGlazedTerracotta;
|
||||
mappings[408] = ItemType.BlueGlazedTerracotta;
|
||||
mappings[409] = ItemType.BrownGlazedTerracotta;
|
||||
mappings[410] = ItemType.GreenGlazedTerracotta;
|
||||
mappings[411] = ItemType.RedGlazedTerracotta;
|
||||
mappings[412] = ItemType.BlackGlazedTerracotta;
|
||||
mappings[413] = ItemType.WhiteConcrete;
|
||||
mappings[414] = ItemType.OrangeConcrete;
|
||||
mappings[415] = ItemType.MagentaConcrete;
|
||||
mappings[416] = ItemType.LightBlueConcrete;
|
||||
mappings[417] = ItemType.YellowConcrete;
|
||||
mappings[418] = ItemType.LimeConcrete;
|
||||
mappings[419] = ItemType.PinkConcrete;
|
||||
mappings[420] = ItemType.GrayConcrete;
|
||||
mappings[421] = ItemType.LightGrayConcrete;
|
||||
mappings[422] = ItemType.CyanConcrete;
|
||||
mappings[423] = ItemType.PurpleConcrete;
|
||||
mappings[424] = ItemType.BlueConcrete;
|
||||
mappings[425] = ItemType.BrownConcrete;
|
||||
mappings[426] = ItemType.GreenConcrete;
|
||||
mappings[427] = ItemType.RedConcrete;
|
||||
mappings[428] = ItemType.BlackConcrete;
|
||||
mappings[429] = ItemType.WhiteConcretePowder;
|
||||
mappings[430] = ItemType.OrangeConcretePowder;
|
||||
mappings[431] = ItemType.MagentaConcretePowder;
|
||||
mappings[432] = ItemType.LightBlueConcretePowder;
|
||||
mappings[433] = ItemType.YellowConcretePowder;
|
||||
mappings[434] = ItemType.LimeConcretePowder;
|
||||
mappings[435] = ItemType.PinkConcretePowder;
|
||||
mappings[436] = ItemType.GrayConcretePowder;
|
||||
mappings[437] = ItemType.LightGrayConcretePowder;
|
||||
mappings[438] = ItemType.CyanConcretePowder;
|
||||
mappings[439] = ItemType.PurpleConcretePowder;
|
||||
mappings[440] = ItemType.BlueConcretePowder;
|
||||
mappings[441] = ItemType.BrownConcretePowder;
|
||||
mappings[442] = ItemType.GreenConcretePowder;
|
||||
mappings[443] = ItemType.RedConcretePowder;
|
||||
mappings[444] = ItemType.BlackConcretePowder;
|
||||
mappings[445] = ItemType.TurtleEgg;
|
||||
mappings[446] = ItemType.DeadTubeCoralBlock;
|
||||
mappings[447] = ItemType.DeadBrainCoralBlock;
|
||||
mappings[448] = ItemType.DeadBubbleCoralBlock;
|
||||
mappings[449] = ItemType.DeadFireCoralBlock;
|
||||
mappings[450] = ItemType.DeadHornCoralBlock;
|
||||
mappings[451] = ItemType.TubeCoralBlock;
|
||||
mappings[452] = ItemType.BrainCoralBlock;
|
||||
mappings[453] = ItemType.BubbleCoralBlock;
|
||||
mappings[454] = ItemType.FireCoralBlock;
|
||||
mappings[455] = ItemType.HornCoralBlock;
|
||||
mappings[456] = ItemType.TubeCoral;
|
||||
mappings[457] = ItemType.BrainCoral;
|
||||
mappings[458] = ItemType.BubbleCoral;
|
||||
mappings[459] = ItemType.FireCoral;
|
||||
mappings[460] = ItemType.HornCoral;
|
||||
mappings[461] = ItemType.DeadBrainCoral;
|
||||
mappings[462] = ItemType.DeadBubbleCoral;
|
||||
mappings[463] = ItemType.DeadFireCoral;
|
||||
mappings[464] = ItemType.DeadHornCoral;
|
||||
mappings[465] = ItemType.DeadTubeCoral;
|
||||
mappings[466] = ItemType.TubeCoralFan;
|
||||
mappings[467] = ItemType.BrainCoralFan;
|
||||
mappings[468] = ItemType.BubbleCoralFan;
|
||||
mappings[469] = ItemType.FireCoralFan;
|
||||
mappings[470] = ItemType.HornCoralFan;
|
||||
mappings[471] = ItemType.DeadTubeCoralFan;
|
||||
mappings[472] = ItemType.DeadBrainCoralFan;
|
||||
mappings[473] = ItemType.DeadBubbleCoralFan;
|
||||
mappings[474] = ItemType.DeadFireCoralFan;
|
||||
mappings[475] = ItemType.DeadHornCoralFan;
|
||||
mappings[476] = ItemType.BlueIce;
|
||||
mappings[477] = ItemType.Conduit;
|
||||
mappings[478] = ItemType.PolishedGraniteStairs;
|
||||
mappings[479] = ItemType.SmoothRedSandstoneStairs;
|
||||
mappings[480] = ItemType.MossyStoneBrickStairs;
|
||||
mappings[481] = ItemType.PolishedDioriteStairs;
|
||||
mappings[482] = ItemType.MossyCobblestoneStairs;
|
||||
mappings[483] = ItemType.EndStoneBrickStairs;
|
||||
mappings[484] = ItemType.StoneStairs;
|
||||
mappings[485] = ItemType.SmoothSandstoneStairs;
|
||||
mappings[486] = ItemType.SmoothQuartzStairs;
|
||||
mappings[487] = ItemType.GraniteStairs;
|
||||
mappings[488] = ItemType.AndesiteStairs;
|
||||
mappings[489] = ItemType.RedNetherBrickStairs;
|
||||
mappings[490] = ItemType.PolishedAndesiteStairs;
|
||||
mappings[491] = ItemType.DioriteStairs;
|
||||
mappings[492] = ItemType.PolishedGraniteSlab;
|
||||
mappings[493] = ItemType.SmoothRedSandstoneSlab;
|
||||
mappings[494] = ItemType.MossyStoneBrickSlab;
|
||||
mappings[495] = ItemType.PolishedDioriteSlab;
|
||||
mappings[496] = ItemType.MossyCobblestoneSlab;
|
||||
mappings[497] = ItemType.EndStoneBrickSlab;
|
||||
mappings[498] = ItemType.SmoothSandstoneSlab;
|
||||
mappings[499] = ItemType.SmoothQuartzSlab;
|
||||
mappings[500] = ItemType.GraniteSlab;
|
||||
mappings[501] = ItemType.AndesiteSlab;
|
||||
mappings[502] = ItemType.RedNetherBrickSlab;
|
||||
mappings[503] = ItemType.PolishedAndesiteSlab;
|
||||
mappings[504] = ItemType.DioriteSlab;
|
||||
mappings[505] = ItemType.Scaffolding;
|
||||
mappings[506] = ItemType.IronDoor;
|
||||
mappings[507] = ItemType.OakDoor;
|
||||
mappings[508] = ItemType.SpruceDoor;
|
||||
mappings[509] = ItemType.BirchDoor;
|
||||
mappings[510] = ItemType.JungleDoor;
|
||||
mappings[511] = ItemType.AcaciaDoor;
|
||||
mappings[512] = ItemType.DarkOakDoor;
|
||||
mappings[513] = ItemType.Repeater;
|
||||
mappings[514] = ItemType.Comparator;
|
||||
mappings[515] = ItemType.StructureBlock;
|
||||
mappings[516] = ItemType.Jigsaw;
|
||||
mappings[517] = ItemType.Composter;
|
||||
mappings[518] = ItemType.TurtleHelmet;
|
||||
mappings[519] = ItemType.TurtleScute;
|
||||
mappings[520] = ItemType.IronShovel;
|
||||
mappings[521] = ItemType.IronPickaxe;
|
||||
mappings[522] = ItemType.IronAxe;
|
||||
mappings[523] = ItemType.FlintAndSteel;
|
||||
mappings[524] = ItemType.Apple;
|
||||
mappings[525] = ItemType.Bow;
|
||||
mappings[526] = ItemType.Arrow;
|
||||
mappings[527] = ItemType.Coal;
|
||||
mappings[528] = ItemType.Charcoal;
|
||||
mappings[529] = ItemType.Diamond;
|
||||
mappings[530] = ItemType.IronIngot;
|
||||
mappings[531] = ItemType.GoldIngot;
|
||||
mappings[532] = ItemType.IronSword;
|
||||
mappings[533] = ItemType.WoodenSword;
|
||||
mappings[534] = ItemType.WoodenShovel;
|
||||
mappings[535] = ItemType.WoodenPickaxe;
|
||||
mappings[536] = ItemType.WoodenAxe;
|
||||
mappings[537] = ItemType.StoneSword;
|
||||
mappings[538] = ItemType.StoneShovel;
|
||||
mappings[539] = ItemType.StonePickaxe;
|
||||
mappings[540] = ItemType.StoneAxe;
|
||||
mappings[541] = ItemType.DiamondSword;
|
||||
mappings[542] = ItemType.DiamondShovel;
|
||||
mappings[543] = ItemType.DiamondPickaxe;
|
||||
mappings[544] = ItemType.DiamondAxe;
|
||||
mappings[545] = ItemType.Stick;
|
||||
mappings[546] = ItemType.Bowl;
|
||||
mappings[547] = ItemType.MushroomStew;
|
||||
mappings[548] = ItemType.GoldenSword;
|
||||
mappings[549] = ItemType.GoldenShovel;
|
||||
mappings[550] = ItemType.GoldenPickaxe;
|
||||
mappings[551] = ItemType.GoldenAxe;
|
||||
mappings[552] = ItemType.String;
|
||||
mappings[553] = ItemType.Feather;
|
||||
mappings[554] = ItemType.Gunpowder;
|
||||
mappings[555] = ItemType.WoodenHoe;
|
||||
mappings[556] = ItemType.StoneHoe;
|
||||
mappings[557] = ItemType.IronHoe;
|
||||
mappings[558] = ItemType.DiamondHoe;
|
||||
mappings[559] = ItemType.GoldenHoe;
|
||||
mappings[560] = ItemType.WheatSeeds;
|
||||
mappings[561] = ItemType.Wheat;
|
||||
mappings[562] = ItemType.Bread;
|
||||
mappings[563] = ItemType.LeatherHelmet;
|
||||
mappings[564] = ItemType.LeatherChestplate;
|
||||
mappings[565] = ItemType.LeatherLeggings;
|
||||
mappings[566] = ItemType.LeatherBoots;
|
||||
mappings[567] = ItemType.ChainmailHelmet;
|
||||
mappings[568] = ItemType.ChainmailChestplate;
|
||||
mappings[569] = ItemType.ChainmailLeggings;
|
||||
mappings[570] = ItemType.ChainmailBoots;
|
||||
mappings[571] = ItemType.IronHelmet;
|
||||
mappings[572] = ItemType.IronChestplate;
|
||||
mappings[573] = ItemType.IronLeggings;
|
||||
mappings[574] = ItemType.IronBoots;
|
||||
mappings[575] = ItemType.DiamondHelmet;
|
||||
mappings[576] = ItemType.DiamondChestplate;
|
||||
mappings[577] = ItemType.DiamondLeggings;
|
||||
mappings[578] = ItemType.DiamondBoots;
|
||||
mappings[579] = ItemType.GoldenHelmet;
|
||||
mappings[580] = ItemType.GoldenChestplate;
|
||||
mappings[581] = ItemType.GoldenLeggings;
|
||||
mappings[582] = ItemType.GoldenBoots;
|
||||
mappings[583] = ItemType.Flint;
|
||||
mappings[584] = ItemType.Porkchop;
|
||||
mappings[585] = ItemType.CookedPorkchop;
|
||||
mappings[586] = ItemType.Painting;
|
||||
mappings[587] = ItemType.GoldenApple;
|
||||
mappings[588] = ItemType.EnchantedGoldenApple;
|
||||
mappings[589] = ItemType.OakSign;
|
||||
mappings[590] = ItemType.SpruceSign;
|
||||
mappings[591] = ItemType.BirchSign;
|
||||
mappings[592] = ItemType.JungleSign;
|
||||
mappings[593] = ItemType.AcaciaSign;
|
||||
mappings[594] = ItemType.DarkOakSign;
|
||||
mappings[595] = ItemType.Bucket;
|
||||
mappings[596] = ItemType.WaterBucket;
|
||||
mappings[597] = ItemType.LavaBucket;
|
||||
mappings[598] = ItemType.Minecart;
|
||||
mappings[599] = ItemType.Saddle;
|
||||
mappings[600] = ItemType.Redstone;
|
||||
mappings[601] = ItemType.Snowball;
|
||||
mappings[602] = ItemType.OakBoat;
|
||||
mappings[603] = ItemType.Leather;
|
||||
mappings[604] = ItemType.MilkBucket;
|
||||
mappings[605] = ItemType.PufferfishBucket;
|
||||
mappings[606] = ItemType.SalmonBucket;
|
||||
mappings[607] = ItemType.CodBucket;
|
||||
mappings[608] = ItemType.TropicalFishBucket;
|
||||
mappings[609] = ItemType.Brick;
|
||||
mappings[610] = ItemType.ClayBall;
|
||||
mappings[611] = ItemType.SugarCane;
|
||||
mappings[612] = ItemType.Kelp;
|
||||
mappings[613] = ItemType.DriedKelpBlock;
|
||||
mappings[614] = ItemType.Bamboo;
|
||||
mappings[615] = ItemType.Paper;
|
||||
mappings[616] = ItemType.Book;
|
||||
mappings[617] = ItemType.SlimeBall;
|
||||
mappings[618] = ItemType.ChestMinecart;
|
||||
mappings[619] = ItemType.FurnaceMinecart;
|
||||
mappings[620] = ItemType.Egg;
|
||||
mappings[621] = ItemType.Compass;
|
||||
mappings[622] = ItemType.FishingRod;
|
||||
mappings[623] = ItemType.Clock;
|
||||
mappings[624] = ItemType.GlowstoneDust;
|
||||
mappings[625] = ItemType.Cod;
|
||||
mappings[626] = ItemType.Salmon;
|
||||
mappings[627] = ItemType.TropicalFish;
|
||||
mappings[628] = ItemType.Pufferfish;
|
||||
mappings[629] = ItemType.CookedCod;
|
||||
mappings[630] = ItemType.CookedSalmon;
|
||||
mappings[631] = ItemType.InkSac;
|
||||
mappings[632] = ItemType.RedDye;
|
||||
mappings[633] = ItemType.GreenDye;
|
||||
mappings[634] = ItemType.CocoaBeans;
|
||||
mappings[635] = ItemType.LapisLazuli;
|
||||
mappings[636] = ItemType.PurpleDye;
|
||||
mappings[637] = ItemType.CyanDye;
|
||||
mappings[638] = ItemType.LightGrayDye;
|
||||
mappings[639] = ItemType.GrayDye;
|
||||
mappings[640] = ItemType.PinkDye;
|
||||
mappings[641] = ItemType.LimeDye;
|
||||
mappings[642] = ItemType.YellowDye;
|
||||
mappings[643] = ItemType.LightBlueDye;
|
||||
mappings[644] = ItemType.MagentaDye;
|
||||
mappings[645] = ItemType.OrangeDye;
|
||||
mappings[646] = ItemType.BoneMeal;
|
||||
mappings[647] = ItemType.BlueDye;
|
||||
mappings[648] = ItemType.BrownDye;
|
||||
mappings[649] = ItemType.BlackDye;
|
||||
mappings[650] = ItemType.WhiteDye;
|
||||
mappings[651] = ItemType.Bone;
|
||||
mappings[652] = ItemType.Sugar;
|
||||
mappings[653] = ItemType.Cake;
|
||||
mappings[654] = ItemType.WhiteBed;
|
||||
mappings[655] = ItemType.OrangeBed;
|
||||
mappings[656] = ItemType.MagentaBed;
|
||||
mappings[657] = ItemType.LightBlueBed;
|
||||
mappings[658] = ItemType.YellowBed;
|
||||
mappings[659] = ItemType.LimeBed;
|
||||
mappings[660] = ItemType.PinkBed;
|
||||
mappings[661] = ItemType.GrayBed;
|
||||
mappings[662] = ItemType.LightGrayBed;
|
||||
mappings[663] = ItemType.CyanBed;
|
||||
mappings[664] = ItemType.PurpleBed;
|
||||
mappings[665] = ItemType.BlueBed;
|
||||
mappings[666] = ItemType.BrownBed;
|
||||
mappings[667] = ItemType.GreenBed;
|
||||
mappings[668] = ItemType.RedBed;
|
||||
mappings[669] = ItemType.BlackBed;
|
||||
mappings[670] = ItemType.Cookie;
|
||||
mappings[671] = ItemType.FilledMap;
|
||||
mappings[672] = ItemType.Shears;
|
||||
mappings[673] = ItemType.MelonSlice;
|
||||
mappings[674] = ItemType.DriedKelp;
|
||||
mappings[675] = ItemType.PumpkinSeeds;
|
||||
mappings[676] = ItemType.MelonSeeds;
|
||||
mappings[677] = ItemType.Beef;
|
||||
mappings[678] = ItemType.CookedBeef;
|
||||
mappings[679] = ItemType.Chicken;
|
||||
mappings[680] = ItemType.CookedChicken;
|
||||
mappings[681] = ItemType.RottenFlesh;
|
||||
mappings[682] = ItemType.EnderPearl;
|
||||
mappings[683] = ItemType.BlazeRod;
|
||||
mappings[684] = ItemType.GhastTear;
|
||||
mappings[685] = ItemType.GoldNugget;
|
||||
mappings[686] = ItemType.NetherWart;
|
||||
mappings[687] = ItemType.Potion;
|
||||
mappings[688] = ItemType.GlassBottle;
|
||||
mappings[689] = ItemType.SpiderEye;
|
||||
mappings[690] = ItemType.FermentedSpiderEye;
|
||||
mappings[691] = ItemType.BlazePowder;
|
||||
mappings[692] = ItemType.MagmaCream;
|
||||
mappings[693] = ItemType.BrewingStand;
|
||||
mappings[694] = ItemType.Cauldron;
|
||||
mappings[695] = ItemType.EnderEye;
|
||||
mappings[696] = ItemType.GlisteringMelonSlice;
|
||||
mappings[697] = ItemType.BatSpawnEgg;
|
||||
mappings[698] = ItemType.BlazeSpawnEgg;
|
||||
mappings[699] = ItemType.CatSpawnEgg;
|
||||
mappings[700] = ItemType.CaveSpiderSpawnEgg;
|
||||
mappings[701] = ItemType.ChickenSpawnEgg;
|
||||
mappings[702] = ItemType.CodSpawnEgg;
|
||||
mappings[703] = ItemType.CowSpawnEgg;
|
||||
mappings[704] = ItemType.CreeperSpawnEgg;
|
||||
mappings[705] = ItemType.DolphinSpawnEgg;
|
||||
mappings[706] = ItemType.DonkeySpawnEgg;
|
||||
mappings[707] = ItemType.DrownedSpawnEgg;
|
||||
mappings[708] = ItemType.ElderGuardianSpawnEgg;
|
||||
mappings[709] = ItemType.EndermanSpawnEgg;
|
||||
mappings[710] = ItemType.EndermiteSpawnEgg;
|
||||
mappings[711] = ItemType.EvokerSpawnEgg;
|
||||
mappings[712] = ItemType.FoxSpawnEgg;
|
||||
mappings[713] = ItemType.GhastSpawnEgg;
|
||||
mappings[714] = ItemType.GuardianSpawnEgg;
|
||||
mappings[715] = ItemType.HorseSpawnEgg;
|
||||
mappings[716] = ItemType.HuskSpawnEgg;
|
||||
mappings[717] = ItemType.LlamaSpawnEgg;
|
||||
mappings[718] = ItemType.MagmaCubeSpawnEgg;
|
||||
mappings[719] = ItemType.MooshroomSpawnEgg;
|
||||
mappings[720] = ItemType.MuleSpawnEgg;
|
||||
mappings[721] = ItemType.OcelotSpawnEgg;
|
||||
mappings[722] = ItemType.PandaSpawnEgg;
|
||||
mappings[723] = ItemType.ParrotSpawnEgg;
|
||||
mappings[724] = ItemType.PhantomSpawnEgg;
|
||||
mappings[725] = ItemType.PigSpawnEgg;
|
||||
mappings[726] = ItemType.PillagerSpawnEgg;
|
||||
mappings[727] = ItemType.PolarBearSpawnEgg;
|
||||
mappings[728] = ItemType.PufferfishSpawnEgg;
|
||||
mappings[729] = ItemType.RabbitSpawnEgg;
|
||||
mappings[730] = ItemType.RavagerSpawnEgg;
|
||||
mappings[731] = ItemType.SalmonSpawnEgg;
|
||||
mappings[732] = ItemType.SheepSpawnEgg;
|
||||
mappings[733] = ItemType.ShulkerSpawnEgg;
|
||||
mappings[734] = ItemType.SilverfishSpawnEgg;
|
||||
mappings[735] = ItemType.SkeletonSpawnEgg;
|
||||
mappings[736] = ItemType.SkeletonHorseSpawnEgg;
|
||||
mappings[737] = ItemType.SlimeSpawnEgg;
|
||||
mappings[738] = ItemType.SpiderSpawnEgg;
|
||||
mappings[739] = ItemType.SquidSpawnEgg;
|
||||
mappings[740] = ItemType.StraySpawnEgg;
|
||||
mappings[741] = ItemType.TraderLlamaSpawnEgg;
|
||||
mappings[742] = ItemType.TropicalFishSpawnEgg;
|
||||
mappings[743] = ItemType.TurtleSpawnEgg;
|
||||
mappings[744] = ItemType.VexSpawnEgg;
|
||||
mappings[745] = ItemType.VillagerSpawnEgg;
|
||||
mappings[746] = ItemType.VindicatorSpawnEgg;
|
||||
mappings[747] = ItemType.WanderingTraderSpawnEgg;
|
||||
mappings[748] = ItemType.WitchSpawnEgg;
|
||||
mappings[749] = ItemType.WitherSkeletonSpawnEgg;
|
||||
mappings[750] = ItemType.WolfSpawnEgg;
|
||||
mappings[751] = ItemType.ZombieSpawnEgg;
|
||||
mappings[752] = ItemType.ZombieHorseSpawnEgg;
|
||||
mappings[753] = ItemType.ZombifiedPiglinSpawnEgg;
|
||||
mappings[754] = ItemType.ZombieVillagerSpawnEgg;
|
||||
mappings[755] = ItemType.ExperienceBottle;
|
||||
mappings[756] = ItemType.FireCharge;
|
||||
mappings[757] = ItemType.WritableBook;
|
||||
mappings[758] = ItemType.WrittenBook;
|
||||
mappings[759] = ItemType.Emerald;
|
||||
mappings[760] = ItemType.ItemFrame;
|
||||
mappings[761] = ItemType.FlowerPot;
|
||||
mappings[762] = ItemType.Carrot;
|
||||
mappings[763] = ItemType.Potato;
|
||||
mappings[764] = ItemType.BakedPotato;
|
||||
mappings[765] = ItemType.PoisonousPotato;
|
||||
mappings[766] = ItemType.Map;
|
||||
mappings[767] = ItemType.GoldenCarrot;
|
||||
mappings[768] = ItemType.SkeletonSkull;
|
||||
mappings[769] = ItemType.WitherSkeletonSkull;
|
||||
mappings[770] = ItemType.PlayerHead;
|
||||
mappings[771] = ItemType.ZombieHead;
|
||||
mappings[772] = ItemType.CreeperHead;
|
||||
mappings[773] = ItemType.DragonHead;
|
||||
mappings[774] = ItemType.CarrotOnAStick;
|
||||
mappings[775] = ItemType.NetherStar;
|
||||
mappings[776] = ItemType.PumpkinPie;
|
||||
mappings[777] = ItemType.FireworkRocket;
|
||||
mappings[778] = ItemType.FireworkStar;
|
||||
mappings[779] = ItemType.EnchantedBook;
|
||||
mappings[780] = ItemType.NetherBrick;
|
||||
mappings[781] = ItemType.Quartz;
|
||||
mappings[782] = ItemType.TntMinecart;
|
||||
mappings[783] = ItemType.HopperMinecart;
|
||||
mappings[784] = ItemType.PrismarineShard;
|
||||
mappings[785] = ItemType.PrismarineCrystals;
|
||||
mappings[786] = ItemType.Rabbit;
|
||||
mappings[787] = ItemType.CookedRabbit;
|
||||
mappings[788] = ItemType.RabbitStew;
|
||||
mappings[789] = ItemType.RabbitFoot;
|
||||
mappings[790] = ItemType.RabbitHide;
|
||||
mappings[791] = ItemType.ArmorStand;
|
||||
mappings[792] = ItemType.IronHorseArmor;
|
||||
mappings[793] = ItemType.GoldenHorseArmor;
|
||||
mappings[794] = ItemType.DiamondHorseArmor;
|
||||
mappings[795] = ItemType.LeatherHorseArmor;
|
||||
mappings[796] = ItemType.Lead;
|
||||
mappings[797] = ItemType.NameTag;
|
||||
mappings[798] = ItemType.CommandBlockMinecart;
|
||||
mappings[799] = ItemType.Mutton;
|
||||
mappings[800] = ItemType.CookedMutton;
|
||||
mappings[801] = ItemType.WhiteBanner;
|
||||
mappings[802] = ItemType.OrangeBanner;
|
||||
mappings[803] = ItemType.MagentaBanner;
|
||||
mappings[804] = ItemType.LightBlueBanner;
|
||||
mappings[805] = ItemType.YellowBanner;
|
||||
mappings[806] = ItemType.LimeBanner;
|
||||
mappings[807] = ItemType.PinkBanner;
|
||||
mappings[808] = ItemType.GrayBanner;
|
||||
mappings[809] = ItemType.LightGrayBanner;
|
||||
mappings[810] = ItemType.CyanBanner;
|
||||
mappings[811] = ItemType.PurpleBanner;
|
||||
mappings[812] = ItemType.BlueBanner;
|
||||
mappings[813] = ItemType.BrownBanner;
|
||||
mappings[814] = ItemType.GreenBanner;
|
||||
mappings[815] = ItemType.RedBanner;
|
||||
mappings[816] = ItemType.BlackBanner;
|
||||
mappings[817] = ItemType.EndCrystal;
|
||||
mappings[818] = ItemType.ChorusFruit;
|
||||
mappings[819] = ItemType.PoppedChorusFruit;
|
||||
mappings[820] = ItemType.Beetroot;
|
||||
mappings[821] = ItemType.BeetrootSeeds;
|
||||
mappings[822] = ItemType.BeetrootSoup;
|
||||
mappings[823] = ItemType.DragonBreath;
|
||||
mappings[824] = ItemType.SplashPotion;
|
||||
mappings[825] = ItemType.SpectralArrow;
|
||||
mappings[826] = ItemType.TippedArrow;
|
||||
mappings[827] = ItemType.LingeringPotion;
|
||||
mappings[828] = ItemType.Shield;
|
||||
mappings[829] = ItemType.Elytra;
|
||||
mappings[830] = ItemType.SpruceBoat;
|
||||
mappings[831] = ItemType.BirchBoat;
|
||||
mappings[832] = ItemType.JungleBoat;
|
||||
mappings[833] = ItemType.AcaciaBoat;
|
||||
mappings[834] = ItemType.DarkOakBoat;
|
||||
mappings[835] = ItemType.TotemOfUndying;
|
||||
mappings[836] = ItemType.ShulkerShell;
|
||||
mappings[837] = ItemType.IronNugget;
|
||||
mappings[838] = ItemType.KnowledgeBook;
|
||||
mappings[839] = ItemType.DebugStick;
|
||||
mappings[840] = ItemType.MusicDisc13;
|
||||
mappings[841] = ItemType.MusicDiscCat;
|
||||
mappings[842] = ItemType.MusicDiscBlocks;
|
||||
mappings[843] = ItemType.MusicDiscChirp;
|
||||
mappings[844] = ItemType.MusicDiscFar;
|
||||
mappings[845] = ItemType.MusicDiscMall;
|
||||
mappings[846] = ItemType.MusicDiscMellohi;
|
||||
mappings[847] = ItemType.MusicDiscStal;
|
||||
mappings[848] = ItemType.MusicDiscStrad;
|
||||
mappings[849] = ItemType.MusicDiscWard;
|
||||
mappings[850] = ItemType.MusicDisc11;
|
||||
mappings[851] = ItemType.MusicDiscWait;
|
||||
mappings[852] = ItemType.Trident;
|
||||
mappings[853] = ItemType.PhantomMembrane;
|
||||
mappings[854] = ItemType.NautilusShell;
|
||||
mappings[855] = ItemType.HeartOfTheSea;
|
||||
mappings[856] = ItemType.Crossbow;
|
||||
mappings[857] = ItemType.SuspiciousStew;
|
||||
mappings[858] = ItemType.Loom;
|
||||
mappings[859] = ItemType.FlowerBannerPattern;
|
||||
mappings[860] = ItemType.CreeperBannerPattern;
|
||||
mappings[861] = ItemType.SkullBannerPattern;
|
||||
mappings[862] = ItemType.MojangBannerPattern;
|
||||
mappings[863] = ItemType.GlobeBannerPattern;
|
||||
mappings[864] = ItemType.Barrel;
|
||||
mappings[865] = ItemType.Smoker;
|
||||
mappings[866] = ItemType.BlastFurnace;
|
||||
mappings[867] = ItemType.CartographyTable;
|
||||
mappings[868] = ItemType.FletchingTable;
|
||||
mappings[869] = ItemType.Grindstone;
|
||||
mappings[870] = ItemType.Lectern;
|
||||
mappings[871] = ItemType.SmithingTable;
|
||||
mappings[872] = ItemType.Stonecutter;
|
||||
mappings[873] = ItemType.Bell;
|
||||
mappings[874] = ItemType.Lantern;
|
||||
mappings[875] = ItemType.SweetBerries;
|
||||
mappings[876] = ItemType.Campfire;
|
||||
}
|
||||
|
||||
protected override Dictionary<int, ItemType> GetDict()
|
||||
{
|
||||
return mappings;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1850,6 +1850,72 @@ namespace MinecraftClient
|
|||
return handler.SendPluginChannelPacket(channel, data);
|
||||
}
|
||||
|
||||
public Item? GetHeldBook(BookHand hand = BookHand.Main)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
return InvokeOnMainThread(() => GetHeldBook(hand));
|
||||
|
||||
if (!inventoryHandlingEnabled || !inventories.TryGetValue(0, out Container? inventory))
|
||||
return null;
|
||||
|
||||
int slot = hand == BookHand.Off ? 45 : 36 + CurrentSlot;
|
||||
return inventory.Items.TryGetValue(slot, out Item? item) ? item : null;
|
||||
}
|
||||
|
||||
public bool TryGetHeldBookContent(out BookContent content, BookHand hand = BookHand.Main)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
(bool ok, BookContent value) = InvokeOnMainThread(() =>
|
||||
{
|
||||
bool ok = TryGetHeldBookContent(out BookContent value, hand);
|
||||
return (ok, value);
|
||||
});
|
||||
content = value;
|
||||
return ok;
|
||||
}
|
||||
|
||||
return BookContentHelper.TryRead(GetHeldBook(hand), out content);
|
||||
}
|
||||
|
||||
public bool SendBookEdit(IReadOnlyList<string> pages, string? title = null)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
return InvokeOnMainThread(() => SendBookEdit(pages, title));
|
||||
|
||||
Item? currentBook = GetHeldBook(BookHand.Main);
|
||||
if (!BookContentHelper.IsWritableBook(currentBook))
|
||||
return false;
|
||||
|
||||
IReadOnlyList<string> normalizedPages = BookContentHelper.NormalizePages(pages);
|
||||
bool sent = handler.SendEditBook(currentBook!, normalizedPages, title, username, CurrentSlot);
|
||||
if (sent && GetProtocolVersion() < Protocol18Handler.MC_1_17_Version)
|
||||
SetHeldBook(BookHand.Main, CreateLocalBookResult(currentBook!, normalizedPages, title));
|
||||
|
||||
return sent;
|
||||
}
|
||||
|
||||
private Item CreateLocalBookResult(Item currentBook, IReadOnlyList<string> pages, string? title)
|
||||
{
|
||||
return title is null
|
||||
? BookContentHelper.CreateWritablePayload(currentBook, pages)
|
||||
: BookContentHelper.CreateWrittenPayload(
|
||||
currentBook,
|
||||
pages,
|
||||
title,
|
||||
username,
|
||||
encodePagesAsJson: GetProtocolVersion() < Protocol18Handler.MC_1_9_Version);
|
||||
}
|
||||
|
||||
private void SetHeldBook(BookHand hand, Item item)
|
||||
{
|
||||
if (!inventoryHandlingEnabled || !inventories.TryGetValue(0, out Container? inventory))
|
||||
return;
|
||||
|
||||
int slot = hand == BookHand.Off ? 45 : 36 + CurrentSlot;
|
||||
inventory.Items[slot] = item;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Send the Entity Action packet with the Specified ID
|
||||
/// </summary>
|
||||
|
|
@ -3817,6 +3883,17 @@ namespace MinecraftClient
|
|||
}
|
||||
}
|
||||
|
||||
public void OnBookOpen(int hand)
|
||||
{
|
||||
if (InvokeRequired)
|
||||
{
|
||||
InvokeOnMainThread(() => OnBookOpen(hand));
|
||||
return;
|
||||
}
|
||||
|
||||
Tui.BookTuiHost.OpenFromServer(this, hand == (int)BookHand.Off ? BookHand.Off : BookHand.Main);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when an entity spawned
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -514,7 +514,7 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
var type = itemPalette.FromId(itemId);
|
||||
itemCount = ReadNextByte(cache);
|
||||
nbt = ReadNextNbt(cache);
|
||||
return new Item(type, itemCount, nbt);
|
||||
return new Item(type, itemCount, itemId, nbt);
|
||||
}
|
||||
case >= Protocol18Handler.MC_1_13_Version:
|
||||
{
|
||||
|
|
@ -526,7 +526,7 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
var type = itemPalette.FromId(itemId);
|
||||
itemCount = ReadNextByte(cache);
|
||||
nbt = ReadNextNbt(cache);
|
||||
return new Item(type, itemCount, nbt);
|
||||
return new Item(type, itemCount, itemId, nbt);
|
||||
}
|
||||
default:
|
||||
{
|
||||
|
|
|
|||
|
|
@ -816,6 +816,11 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
return false; //MC 1.8-1.12.1 recipe book not supported
|
||||
}
|
||||
|
||||
public bool SendEditBook(Item currentBook, IReadOnlyList<string> pages, string? title, string author, int selectedHotbarSlot)
|
||||
{
|
||||
return false; //MC 1.4.6-1.6.4 book editing is not supported
|
||||
}
|
||||
|
||||
public bool SendCloseWindow(int windowId)
|
||||
{
|
||||
return false; //Currently not implemented
|
||||
|
|
|
|||
|
|
@ -242,6 +242,9 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
>= MC_1_16_2_Version => new ItemPalette1162(),
|
||||
>= MC_1_16_1_Version => new ItemPalette1161(),
|
||||
>= MC_1_15_Version => new ItemPalette115(),
|
||||
>= MC_1_14_Version => new ItemPalette114(),
|
||||
>= MC_1_13_2_Version => new ItemPalette1132(),
|
||||
>= MC_1_13_Version => new ItemPalette113(),
|
||||
>= MC_1_12_Version => new ItemPalette112(),
|
||||
>= MC_1_11_Version => new ItemPalette111(),
|
||||
>= MC_1_10_Version => new ItemPalette110(),
|
||||
|
|
@ -2314,8 +2317,13 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
// Length is unneeded as the whole remaining packetData is the entire payload of the packet.
|
||||
if (protocolVersion < MC_1_8_Version)
|
||||
pForge.ReadNextVarShort(packetData);
|
||||
if (IsOpenBookPluginChannel(channel))
|
||||
handler.OnBookOpen(ReadBookHand(new Queue<byte>(packetData)));
|
||||
handler.OnPluginChannelMessage(channel, packetData.ToArray());
|
||||
return pForge.HandlePluginMessage(channel, packetData, ref currentDimension);
|
||||
case PacketTypesIn.OpenBook:
|
||||
handler.OnBookOpen(ReadBookHand(packetData));
|
||||
break;
|
||||
case PacketTypesIn.Disconnect:
|
||||
handler.OnConnectionLost(ChatBot.DisconnectReason.InGameKick,
|
||||
dataTypes.ReadNextChat(packetData));
|
||||
|
|
@ -2987,6 +2995,9 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
soundName = null;
|
||||
}
|
||||
|
||||
if (protocolVersion < MC_1_19_Version && packetData.Count < 21)
|
||||
break;
|
||||
|
||||
int category = dataTypes.ReadNextVarInt(packetData);
|
||||
double x = dataTypes.ReadNextInt(packetData) / 8.0D;
|
||||
double y = dataTypes.ReadNextInt(packetData) / 8.0D;
|
||||
|
|
@ -3919,9 +3930,9 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
|
||||
private bool SkipRecipeBookSettings(Queue<byte> packetData)
|
||||
{
|
||||
// MC 1.13 uses 4 booleans for the crafting/smelting recipe book states.
|
||||
// MC 1.14+ expands this to 8 booleans by adding blast furnace and smoker states.
|
||||
int boolCount = protocolVersion >= MC_1_14_Version ? 8 : 4;
|
||||
// MC 1.13-1.16.1 uses 4 booleans for the crafting/smelting recipe book states.
|
||||
// MC 1.16.2+ expands this to 8 booleans through RecipeBookSettings.
|
||||
int boolCount = protocolVersion >= MC_1_16_2_Version ? 8 : 4;
|
||||
if (packetData.Count < boolCount)
|
||||
return false;
|
||||
|
||||
|
|
@ -5284,6 +5295,18 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
}
|
||||
}
|
||||
|
||||
private bool IsOpenBookPluginChannel(string channel)
|
||||
{
|
||||
return protocolVersion < MC_1_13_Version
|
||||
? string.Equals(channel, "MC|BOpen", StringComparison.Ordinal)
|
||||
: string.Equals(channel, "minecraft:book_open", StringComparison.Ordinal);
|
||||
}
|
||||
|
||||
private int ReadBookHand(Queue<byte> packetData)
|
||||
{
|
||||
return packetData.Count > 0 ? dataTypes.ReadNextVarInt(packetData) : (int)BookHand.Main;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Send a Login Plugin Response packet (0x02)
|
||||
/// </summary>
|
||||
|
|
@ -5902,6 +5925,80 @@ namespace MinecraftClient.Protocol.Handlers
|
|||
}
|
||||
}
|
||||
|
||||
public bool SendEditBook(Item currentBook, IReadOnlyList<string> pages, string? title, string author, int selectedHotbarSlot)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (protocolVersion < MC_1_8_Version)
|
||||
return false;
|
||||
|
||||
bool signing = title is not null;
|
||||
IReadOnlyList<string> normalizedPages = BookContentHelper.NormalizePages(pages);
|
||||
|
||||
if (protocolVersion < MC_1_13_Version)
|
||||
{
|
||||
Item payload = signing
|
||||
? BookContentHelper.CreateWrittenPayload(
|
||||
currentBook,
|
||||
normalizedPages,
|
||||
title ?? string.Empty,
|
||||
author,
|
||||
encodePagesAsJson: protocolVersion < MC_1_9_Version)
|
||||
: BookContentHelper.CreateWritablePayload(currentBook, normalizedPages);
|
||||
|
||||
byte[] payloadData = dataTypes.GetItemSlot(payload, itemPalette);
|
||||
if (payloadData.Length > 32767)
|
||||
return false;
|
||||
|
||||
return SendPluginChannelPacket(signing ? "MC|BSign" : "MC|BEdit", payloadData);
|
||||
}
|
||||
|
||||
if (protocolVersion < MC_1_17_Version)
|
||||
{
|
||||
Item payload = signing
|
||||
? BookContentHelper.CreateWrittenPayload(currentBook, normalizedPages, title ?? string.Empty, author, encodePagesAsJson: false)
|
||||
: BookContentHelper.CreateWritablePayload(currentBook, normalizedPages);
|
||||
|
||||
List<byte> packet = new();
|
||||
packet.AddRange(dataTypes.GetItemSlot(payload, itemPalette));
|
||||
packet.AddRange(dataTypes.GetBool(signing));
|
||||
|
||||
if (protocolVersion >= MC_1_16_5_Version)
|
||||
packet.AddRange(DataTypes.GetVarInt(selectedHotbarSlot));
|
||||
else if (protocolVersion >= MC_1_13_2_Version)
|
||||
packet.AddRange(DataTypes.GetVarInt((int)BookHand.Main));
|
||||
|
||||
SendPacket(PacketTypesOut.EditBook, packet);
|
||||
return true;
|
||||
}
|
||||
|
||||
List<byte> modernPacket = new();
|
||||
modernPacket.AddRange(DataTypes.GetVarInt(selectedHotbarSlot));
|
||||
modernPacket.AddRange(DataTypes.GetVarInt(normalizedPages.Count));
|
||||
foreach (string page in normalizedPages)
|
||||
modernPacket.AddRange(dataTypes.GetString(page));
|
||||
|
||||
modernPacket.AddRange(dataTypes.GetBool(signing));
|
||||
if (signing)
|
||||
modernPacket.AddRange(dataTypes.GetString(title ?? string.Empty));
|
||||
|
||||
SendPacket(PacketTypesOut.EditBook, modernPacket);
|
||||
return true;
|
||||
}
|
||||
catch (SocketException)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
catch (System.IO.IOException)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
catch (ObjectDisposedException)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public bool SendAnimation(int animation, int playerId)
|
||||
{
|
||||
try
|
||||
|
|
|
|||
|
|
@ -199,6 +199,17 @@ namespace MinecraftClient.Protocol
|
|||
/// <returns>True if packet was successfully sent</returns>
|
||||
bool SendPlaceRecipe(int windowId, string recipeId, bool makeAll);
|
||||
|
||||
/// <summary>
|
||||
/// Send a book edit/sign packet for the currently held writable book.
|
||||
/// </summary>
|
||||
/// <param name="currentBook">Current held writable book</param>
|
||||
/// <param name="pages">Book pages</param>
|
||||
/// <param name="title">Title when signing, otherwise null</param>
|
||||
/// <param name="author">Current player name when signing</param>
|
||||
/// <param name="selectedHotbarSlot">Selected hotbar slot, 0-8</param>
|
||||
/// <returns>True if packet was successfully sent</returns>
|
||||
bool SendEditBook(Item currentBook, IReadOnlyList<string> pages, string? title, string author, int selectedHotbarSlot);
|
||||
|
||||
/// <summary>
|
||||
/// Plays animation
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -224,6 +224,12 @@ namespace MinecraftClient.Protocol
|
|||
/// <param name="data">The data from the channel</param>
|
||||
void OnPluginChannelMessage(string channel, byte[] data);
|
||||
|
||||
/// <summary>
|
||||
/// Called when the server asks the client to open a book UI.
|
||||
/// </summary>
|
||||
/// <param name="hand">Book hand, 0 main hand, 1 off hand.</param>
|
||||
void OnBookOpen(int hand);
|
||||
|
||||
/// <summary>
|
||||
/// Called when an entity has spawned
|
||||
/// </summary>
|
||||
|
|
|
|||
|
|
@ -7561,5 +7561,165 @@ namespace MinecraftClient {
|
|||
return ResourceManager.GetString("cmd.achievement.entry", resourceCulture);
|
||||
}
|
||||
}
|
||||
internal static string cmd_book_usage {
|
||||
get { return ResourceManager.GetString("cmd.book.usage", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_desc {
|
||||
get { return ResourceManager.GetString("cmd.book.desc", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_help_read {
|
||||
get { return ResourceManager.GetString("cmd.book.help_read", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_help_write {
|
||||
get { return ResourceManager.GetString("cmd.book.help_write", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_help_edit {
|
||||
get { return ResourceManager.GetString("cmd.book.help_edit", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_help_sign {
|
||||
get { return ResourceManager.GetString("cmd.book.help_sign", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_not_holding_book {
|
||||
get { return ResourceManager.GetString("cmd.book.not_holding_book", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_not_holding_writable {
|
||||
get { return ResourceManager.GetString("cmd.book.not_holding_writable", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_already_signed {
|
||||
get { return ResourceManager.GetString("cmd.book.already_signed", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_cannot_edit_signed {
|
||||
get { return ResourceManager.GetString("cmd.book.cannot_edit_signed", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_tui_opened {
|
||||
get { return ResourceManager.GetString("cmd.book.tui_opened", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_tui_required {
|
||||
get { return ResourceManager.GetString("cmd.book.tui_required", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_write_sent {
|
||||
get { return ResourceManager.GetString("cmd.book.write_sent", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_edit_sent {
|
||||
get { return ResourceManager.GetString("cmd.book.edit_sent", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_sign_sent {
|
||||
get { return ResourceManager.GetString("cmd.book.sign_sent", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_write_failed {
|
||||
get { return ResourceManager.GetString("cmd.book.write_failed", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_file_not_found {
|
||||
get { return ResourceManager.GetString("cmd.book.file_not_found", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_page_out_of_range {
|
||||
get { return ResourceManager.GetString("cmd.book.page_out_of_range", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_too_many_pages {
|
||||
get { return ResourceManager.GetString("cmd.book.too_many_pages", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_page_too_long {
|
||||
get { return ResourceManager.GetString("cmd.book.page_too_long", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_title_invalid {
|
||||
get { return ResourceManager.GetString("cmd.book.title_invalid", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_header_signed {
|
||||
get { return ResourceManager.GetString("cmd.book.header_signed", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_header_writable {
|
||||
get { return ResourceManager.GetString("cmd.book.header_writable", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string cmd_book_page_header {
|
||||
get { return ResourceManager.GetString("cmd.book.page_header", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_title_watermark {
|
||||
get { return ResourceManager.GetString("tui.book.title_watermark", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_prev {
|
||||
get { return ResourceManager.GetString("tui.book.prev", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_next {
|
||||
get { return ResourceManager.GetString("tui.book.next", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_insert {
|
||||
get { return ResourceManager.GetString("tui.book.insert", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_delete {
|
||||
get { return ResourceManager.GetString("tui.book.delete", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_save {
|
||||
get { return ResourceManager.GetString("tui.book.save", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_sign {
|
||||
get { return ResourceManager.GetString("tui.book.sign", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_close {
|
||||
get { return ResourceManager.GetString("tui.book.close", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_saved {
|
||||
get { return ResourceManager.GetString("tui.book.saved", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_save_failed {
|
||||
get { return ResourceManager.GetString("tui.book.save_failed", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_signed {
|
||||
get { return ResourceManager.GetString("tui.book.signed", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_page_header {
|
||||
get { return ResourceManager.GetString("tui.book.page_header", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_editing {
|
||||
get { return ResourceManager.GetString("tui.book.editing", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_reading {
|
||||
get { return ResourceManager.GetString("tui.book.reading", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_edit_shortcut_tip {
|
||||
get { return ResourceManager.GetString("tui.book.edit_shortcut_tip", resourceCulture); }
|
||||
}
|
||||
|
||||
internal static string tui_book_page_shortcut_tip {
|
||||
get { return ResourceManager.GetString("tui.book.page_shortcut_tip", resourceCulture); }
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2662,4 +2662,124 @@ see item details.</value>
|
|||
<data name="cmd.achievement.entry" xml:space="preserve">
|
||||
<value>{0} {1} [{2}]</value>
|
||||
</data>
|
||||
<data name="cmd.book.usage" xml:space="preserve">
|
||||
<value>book <read|write|edit|sign></value>
|
||||
</data>
|
||||
<data name="cmd.book.desc" xml:space="preserve">
|
||||
<value>read, write, edit, and sign the book held in your main hand.</value>
|
||||
</data>
|
||||
<data name="cmd.book.help_read" xml:space="preserve">
|
||||
<value>/book read [page]</value>
|
||||
</data>
|
||||
<data name="cmd.book.help_write" xml:space="preserve">
|
||||
<value>/book write text <text> or /book write file <path>. Use \n for line breaks and \f for page breaks.</value>
|
||||
</data>
|
||||
<data name="cmd.book.help_edit" xml:space="preserve">
|
||||
<value>/book edit, /book edit page <page> <text>, /book edit insert <page> <text>, or /book edit delete <page>.</value>
|
||||
</data>
|
||||
<data name="cmd.book.help_sign" xml:space="preserve">
|
||||
<value>/book sign <title></value>
|
||||
</data>
|
||||
<data name="cmd.book.not_holding_book" xml:space="preserve">
|
||||
<value>You are not holding a book.</value>
|
||||
</data>
|
||||
<data name="cmd.book.not_holding_writable" xml:space="preserve">
|
||||
<value>You must hold a writable book in your main hand.</value>
|
||||
</data>
|
||||
<data name="cmd.book.already_signed" xml:space="preserve">
|
||||
<value>Book already signed.</value>
|
||||
</data>
|
||||
<data name="cmd.book.cannot_edit_signed" xml:space="preserve">
|
||||
<value>You cannot edit a signed book.</value>
|
||||
</data>
|
||||
<data name="cmd.book.tui_opened" xml:space="preserve">
|
||||
<value>Book TUI opened.</value>
|
||||
</data>
|
||||
<data name="cmd.book.tui_required" xml:space="preserve">
|
||||
<value>The book editor is only available in TUI mode.</value>
|
||||
</data>
|
||||
<data name="cmd.book.write_sent" xml:space="preserve">
|
||||
<value>Book write packet sent.</value>
|
||||
</data>
|
||||
<data name="cmd.book.edit_sent" xml:space="preserve">
|
||||
<value>Book edit packet sent.</value>
|
||||
</data>
|
||||
<data name="cmd.book.sign_sent" xml:space="preserve">
|
||||
<value>Book sign packet sent.</value>
|
||||
</data>
|
||||
<data name="cmd.book.write_failed" xml:space="preserve">
|
||||
<value>Book packet could not be sent.</value>
|
||||
</data>
|
||||
<data name="cmd.book.file_not_found" xml:space="preserve">
|
||||
<value>Book file not found: {0}</value>
|
||||
</data>
|
||||
<data name="cmd.book.page_out_of_range" xml:space="preserve">
|
||||
<value>Page {0} is outside the current page range 1-{1}.</value>
|
||||
</data>
|
||||
<data name="cmd.book.too_many_pages" xml:space="preserve">
|
||||
<value>Book has {0} pages, but this version supports at most {1} pages.</value>
|
||||
</data>
|
||||
<data name="cmd.book.page_too_long" xml:space="preserve">
|
||||
<value>Page {0} has {1} characters, but this version supports at most {2} characters per page.</value>
|
||||
</data>
|
||||
<data name="cmd.book.title_invalid" xml:space="preserve">
|
||||
<value>Book title must be 1-{0} characters.</value>
|
||||
</data>
|
||||
<data name="cmd.book.header_signed" xml:space="preserve">
|
||||
<value>Written book: {0} by {1}</value>
|
||||
</data>
|
||||
<data name="cmd.book.header_writable" xml:space="preserve">
|
||||
<value>Writable book</value>
|
||||
</data>
|
||||
<data name="cmd.book.page_header" xml:space="preserve">
|
||||
<value>Page {0}/{1}</value>
|
||||
</data>
|
||||
<data name="tui.book.title_watermark" xml:space="preserve">
|
||||
<value>Title</value>
|
||||
</data>
|
||||
<data name="tui.book.prev" xml:space="preserve">
|
||||
<value>Prev</value>
|
||||
</data>
|
||||
<data name="tui.book.next" xml:space="preserve">
|
||||
<value>Next</value>
|
||||
</data>
|
||||
<data name="tui.book.insert" xml:space="preserve">
|
||||
<value>Insert</value>
|
||||
</data>
|
||||
<data name="tui.book.delete" xml:space="preserve">
|
||||
<value>Delete</value>
|
||||
</data>
|
||||
<data name="tui.book.save" xml:space="preserve">
|
||||
<value>Save</value>
|
||||
</data>
|
||||
<data name="tui.book.sign" xml:space="preserve">
|
||||
<value>Sign</value>
|
||||
</data>
|
||||
<data name="tui.book.close" xml:space="preserve">
|
||||
<value>Close</value>
|
||||
</data>
|
||||
<data name="tui.book.saved" xml:space="preserve">
|
||||
<value>Saved.</value>
|
||||
</data>
|
||||
<data name="tui.book.save_failed" xml:space="preserve">
|
||||
<value>Book packet could not be sent.</value>
|
||||
</data>
|
||||
<data name="tui.book.signed" xml:space="preserve">
|
||||
<value>Signed.</value>
|
||||
</data>
|
||||
<data name="tui.book.page_header" xml:space="preserve">
|
||||
<value>Book page {0}/{1}</value>
|
||||
</data>
|
||||
<data name="tui.book.editing" xml:space="preserve">
|
||||
<value>Editing writable book.</value>
|
||||
</data>
|
||||
<data name="tui.book.reading" xml:space="preserve">
|
||||
<value>Reading book.</value>
|
||||
</data>
|
||||
<data name="tui.book.edit_shortcut_tip" xml:space="preserve">
|
||||
<value>PageUp/PageDown: previous/next page</value>
|
||||
</data>
|
||||
<data name="tui.book.page_shortcut_tip" xml:space="preserve">
|
||||
<value>PageUp/PageDown: previous/next page</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
|
|||
383
MinecraftClient/Tui/BookTuiHost.cs
Normal file
383
MinecraftClient/Tui/BookTuiHost.cs
Normal file
|
|
@ -0,0 +1,383 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Layout;
|
||||
using Avalonia.Media;
|
||||
using Avalonia.Threading;
|
||||
using MinecraftClient.Inventory;
|
||||
|
||||
namespace MinecraftClient.Tui;
|
||||
|
||||
public static class BookTuiHost
|
||||
{
|
||||
private static volatile bool isRunning;
|
||||
|
||||
public static bool TryOpen(McClient handler, BookHand hand, bool editable)
|
||||
{
|
||||
if (ConsoleIO.Backend is not TuiConsoleBackend)
|
||||
return false;
|
||||
|
||||
Open(handler, hand, editable);
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void OpenFromServer(McClient handler, BookHand hand)
|
||||
{
|
||||
if (ConsoleIO.Backend is TuiConsoleBackend)
|
||||
Open(handler, hand, editable: BookContentHelper.IsWritableBook(handler.GetHeldBook(hand)));
|
||||
}
|
||||
|
||||
private static void Open(McClient handler, BookHand hand, bool editable)
|
||||
{
|
||||
Dispatcher.UIThread.Post(() =>
|
||||
{
|
||||
if (isRunning)
|
||||
return;
|
||||
|
||||
MainTuiView? view = TuiConsoleBackend.Instance?.GetView();
|
||||
if (view is null)
|
||||
return;
|
||||
|
||||
if (!handler.TryGetHeldBookContent(out BookContent content, hand))
|
||||
return;
|
||||
|
||||
isRunning = true;
|
||||
var bookView = new BookView(handler, content, editable && !content.IsSigned);
|
||||
view.ShowOverlay(bookView, () => isRunning = false);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
internal sealed class BookView : UserControl
|
||||
{
|
||||
private readonly McClient handler;
|
||||
private readonly bool editable;
|
||||
private readonly List<string> pages;
|
||||
private readonly TextBlock header;
|
||||
private readonly TextBlock status;
|
||||
private readonly TextBlock shortcutTip;
|
||||
private readonly TextBox pageText;
|
||||
private readonly TextBox titleText;
|
||||
private readonly Button previousButton;
|
||||
private readonly Button nextButton;
|
||||
private readonly Button insertButton;
|
||||
private readonly Button deleteButton;
|
||||
private readonly Button saveButton;
|
||||
private readonly Button signButton;
|
||||
private bool bookSigned;
|
||||
private int pageIndex;
|
||||
|
||||
public BookView(McClient handler, BookContent content, bool editable)
|
||||
{
|
||||
this.handler = handler;
|
||||
this.editable = editable;
|
||||
bookSigned = content.IsSigned;
|
||||
pages = content.Pages.ToList();
|
||||
if (pages.Count == 0)
|
||||
pages.Add(string.Empty);
|
||||
|
||||
Focusable = true;
|
||||
Background = Brushes.Black;
|
||||
|
||||
header = new TextBlock
|
||||
{
|
||||
Foreground = Brushes.Yellow,
|
||||
Margin = new Thickness(1, 0),
|
||||
TextWrapping = TextWrapping.Wrap
|
||||
};
|
||||
|
||||
status = new TextBlock
|
||||
{
|
||||
Foreground = Brushes.Gray,
|
||||
Margin = new Thickness(1, 0),
|
||||
TextWrapping = TextWrapping.Wrap
|
||||
};
|
||||
|
||||
shortcutTip = new TextBlock
|
||||
{
|
||||
Foreground = Brushes.DarkGray,
|
||||
Margin = new Thickness(1, 0),
|
||||
Text = Translations.tui_book_page_shortcut_tip,
|
||||
TextWrapping = TextWrapping.Wrap
|
||||
};
|
||||
|
||||
pageText = new TextBox
|
||||
{
|
||||
AcceptsReturn = true,
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
IsReadOnly = !CanEdit,
|
||||
Foreground = Brushes.White,
|
||||
Background = Brushes.Black,
|
||||
BorderBrush = Brushes.Gray,
|
||||
MinHeight = 12,
|
||||
Margin = new Thickness(1)
|
||||
};
|
||||
pageText.TextChanged += (_, _) =>
|
||||
{
|
||||
if (CanEdit && pageIndex >= 0 && pageIndex < pages.Count)
|
||||
pages[pageIndex] = pageText.Text ?? string.Empty;
|
||||
};
|
||||
|
||||
titleText = new TextBox
|
||||
{
|
||||
Watermark = Translations.tui_book_title_watermark,
|
||||
IsVisible = CanEdit,
|
||||
Foreground = Brushes.White,
|
||||
Background = Brushes.Black,
|
||||
BorderBrush = Brushes.Gray,
|
||||
Margin = new Thickness(1)
|
||||
};
|
||||
|
||||
previousButton = Button(Translations.tui_book_prev, (_, _) => TryMovePage(-1));
|
||||
nextButton = Button(Translations.tui_book_next, (_, _) => TryMovePage(1));
|
||||
insertButton = Button(Translations.tui_book_insert, (_, _) => InsertPage(), editable);
|
||||
deleteButton = Button(Translations.tui_book_delete, (_, _) => DeletePage(), editable);
|
||||
saveButton = Button(Translations.tui_book_save, (_, _) => Save(), editable);
|
||||
signButton = Button(Translations.tui_book_sign, (_, _) => Sign(), editable);
|
||||
|
||||
var controls = new StackPanel
|
||||
{
|
||||
Orientation = Orientation.Horizontal,
|
||||
Spacing = 1,
|
||||
Margin = new Thickness(1),
|
||||
Children =
|
||||
{
|
||||
previousButton,
|
||||
nextButton,
|
||||
insertButton,
|
||||
deleteButton,
|
||||
saveButton,
|
||||
signButton,
|
||||
Button(Translations.tui_book_close, (_, _) => Close())
|
||||
}
|
||||
};
|
||||
|
||||
var panel = new DockPanel
|
||||
{
|
||||
Background = Brushes.Black,
|
||||
Children =
|
||||
{
|
||||
DockTo(header, Dock.Top),
|
||||
DockTo(status, Dock.Bottom),
|
||||
DockTo(shortcutTip, Dock.Bottom),
|
||||
DockTo(controls, Dock.Bottom),
|
||||
DockTo(titleText, Dock.Bottom),
|
||||
pageText
|
||||
}
|
||||
};
|
||||
|
||||
Content = panel;
|
||||
AttachedToVisualTree += (_, _) =>
|
||||
{
|
||||
AddHandler(KeyDownEvent, OnTunnelKeyDown, RoutingStrategies.Tunnel, handledEventsToo: true);
|
||||
FocusPageText();
|
||||
};
|
||||
DetachedFromVisualTree += (_, _) => RemoveHandler(KeyDownEvent, OnTunnelKeyDown);
|
||||
Refresh();
|
||||
}
|
||||
|
||||
private bool CanEdit => editable && !bookSigned;
|
||||
|
||||
private void OnTunnelKeyDown(object? sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.Key == Key.PageUp)
|
||||
{
|
||||
TryMovePage(-1);
|
||||
e.Handled = true;
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.Key == Key.PageDown)
|
||||
{
|
||||
TryMovePage(1);
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
private static Control DockTo(Control control, Dock dock)
|
||||
{
|
||||
DockPanel.SetDock(control, dock);
|
||||
return control;
|
||||
}
|
||||
|
||||
private static Button Button(string text, EventHandler<Avalonia.Interactivity.RoutedEventArgs> handler, bool enabled = true)
|
||||
{
|
||||
var button = new Button
|
||||
{
|
||||
Content = text,
|
||||
IsEnabled = enabled,
|
||||
Padding = new Thickness(1, 0),
|
||||
Margin = new Thickness(0)
|
||||
};
|
||||
button.Click += handler;
|
||||
return button;
|
||||
}
|
||||
|
||||
private bool TryMovePage(int delta)
|
||||
{
|
||||
int targetPageIndex = Math.Clamp(pageIndex + delta, 0, pages.Count - 1);
|
||||
if (targetPageIndex == pageIndex)
|
||||
return false;
|
||||
|
||||
pageIndex = targetPageIndex;
|
||||
Refresh();
|
||||
return true;
|
||||
}
|
||||
|
||||
private void InsertPage()
|
||||
{
|
||||
if (!CanEdit)
|
||||
return;
|
||||
|
||||
pages.Insert(pageIndex + 1, string.Empty);
|
||||
pageIndex++;
|
||||
Refresh();
|
||||
}
|
||||
|
||||
private void DeletePage()
|
||||
{
|
||||
if (!CanEdit)
|
||||
return;
|
||||
|
||||
if (pages.Count == 1)
|
||||
pages[0] = string.Empty;
|
||||
else
|
||||
{
|
||||
pages.RemoveAt(pageIndex);
|
||||
pageIndex = Math.Clamp(pageIndex, 0, pages.Count - 1);
|
||||
}
|
||||
Refresh();
|
||||
}
|
||||
|
||||
private void Save()
|
||||
{
|
||||
if (bookSigned || IsHeldBookSigned())
|
||||
{
|
||||
bookSigned = true;
|
||||
status.Text = Translations.cmd_book_cannot_edit_signed;
|
||||
RefreshEditability();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!Validate(out string error))
|
||||
{
|
||||
status.Text = error;
|
||||
return;
|
||||
}
|
||||
|
||||
status.Text = handler.SendBookEdit(pages)
|
||||
? Translations.tui_book_saved
|
||||
: Translations.tui_book_save_failed;
|
||||
}
|
||||
|
||||
private void Sign()
|
||||
{
|
||||
if (bookSigned || IsHeldBookSigned())
|
||||
{
|
||||
bookSigned = true;
|
||||
status.Text = Translations.cmd_book_already_signed;
|
||||
RefreshEditability();
|
||||
return;
|
||||
}
|
||||
|
||||
string title = (titleText.Text ?? string.Empty).Trim();
|
||||
if (!Validate(out string error, title))
|
||||
{
|
||||
status.Text = error;
|
||||
return;
|
||||
}
|
||||
|
||||
if (handler.SendBookEdit(pages, title))
|
||||
{
|
||||
bookSigned = true;
|
||||
status.Text = Translations.tui_book_signed;
|
||||
RefreshEditability();
|
||||
return;
|
||||
}
|
||||
|
||||
status.Text = IsHeldBookSigned()
|
||||
? Translations.cmd_book_already_signed
|
||||
: Translations.tui_book_save_failed;
|
||||
}
|
||||
|
||||
private bool Validate(out string error, string? title = null)
|
||||
{
|
||||
BookLimits limits = BookLimits.ForProtocol(handler.GetProtocolVersion());
|
||||
error = string.Empty;
|
||||
|
||||
if (pages.Count > limits.MaxPages)
|
||||
{
|
||||
error = string.Format(Translations.cmd_book_too_many_pages, pages.Count, limits.MaxPages);
|
||||
return false;
|
||||
}
|
||||
|
||||
for (int i = 0; i < pages.Count; i++)
|
||||
{
|
||||
if (pages[i].Length > limits.MaxPageLength)
|
||||
{
|
||||
error = string.Format(Translations.cmd_book_page_too_long, i + 1, pages[i].Length, limits.MaxPageLength);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (title is not null && (title.Length == 0 || title.Length > limits.MaxTitleLength))
|
||||
{
|
||||
error = string.Format(Translations.cmd_book_title_invalid, limits.MaxTitleLength);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private void Close()
|
||||
{
|
||||
TuiConsoleBackend.Instance?.GetView()?.HideOverlay();
|
||||
}
|
||||
|
||||
private void Refresh()
|
||||
{
|
||||
string currentPageText = pages[pageIndex];
|
||||
if (!string.Equals(pageText.Text, currentPageText, StringComparison.Ordinal))
|
||||
pageText.Text = currentPageText;
|
||||
|
||||
header.Text = string.Format(Translations.tui_book_page_header, pageIndex + 1, pages.Count);
|
||||
status.Text = CanEdit ? Translations.tui_book_editing : Translations.tui_book_reading;
|
||||
RefreshEditability();
|
||||
FocusPageText();
|
||||
}
|
||||
|
||||
private void RefreshEditability()
|
||||
{
|
||||
previousButton.IsEnabled = pageIndex > 0;
|
||||
nextButton.IsEnabled = pageIndex < pages.Count - 1;
|
||||
insertButton.IsEnabled = CanEdit;
|
||||
deleteButton.IsEnabled = CanEdit;
|
||||
saveButton.IsEnabled = CanEdit;
|
||||
signButton.IsEnabled = CanEdit;
|
||||
pageText.IsReadOnly = !CanEdit;
|
||||
titleText.IsEnabled = CanEdit;
|
||||
titleText.IsVisible = CanEdit;
|
||||
shortcutTip.Text = CanEdit
|
||||
? Translations.tui_book_edit_shortcut_tip
|
||||
: Translations.tui_book_page_shortcut_tip;
|
||||
}
|
||||
|
||||
private void FocusPageText()
|
||||
{
|
||||
Dispatcher.UIThread.Post(() =>
|
||||
{
|
||||
pageText.Focus();
|
||||
if (CanEdit)
|
||||
pageText.CaretIndex = pageText.Text?.Length ?? 0;
|
||||
}, DispatcherPriority.Input);
|
||||
}
|
||||
|
||||
private bool IsHeldBookSigned()
|
||||
{
|
||||
return BookContentHelper.TryRead(handler.GetHeldBook(BookHand.Main), out BookContent content) && content.IsSigned;
|
||||
}
|
||||
}
|
||||
|
|
@ -71,6 +71,8 @@ It was originally made by [ORelio](https://github.com/ORelio) in 2012 on the [Mi
|
|||
|
||||
- [Inventory Handling](usage.md#inventory)
|
||||
|
||||
- [Book Support](usage.md#book)
|
||||
|
||||
- [Terrain Traversing](usage.md#move)
|
||||
|
||||
- Entity Handling
|
||||
|
|
|
|||
|
|
@ -267,6 +267,119 @@ In scripts and remote control, no slash is needed to perform the command, eg. `q
|
|||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><code>book</code></summary>
|
||||
|
||||
<div class="custom-container note"><p class="custom-container-title">Note</p>
|
||||
|
||||
**You need to have [Inventory Handling](configuration.md#inventoryhandling) enabled in order for this to work.**
|
||||
|
||||
</div>
|
||||
|
||||
- **Description:**
|
||||
|
||||
Read the book in your main hand, or edit it if it is a writable book.
|
||||
|
||||
In TUI mode, `/book read` opens a page viewer instead of printing the whole book to chat. The same viewer also opens automatically when the server tells the client to open a book.
|
||||
|
||||
If you are holding a writable book, you can replace all pages, update one page, insert a page, delete a page, and sign the finished book.
|
||||
|
||||
- **Usage:**
|
||||
|
||||
Read the current book or a single page:
|
||||
|
||||
```
|
||||
/book read [page]
|
||||
```
|
||||
|
||||
Replace the whole writable book from inline text or a file:
|
||||
|
||||
```
|
||||
/book write text <text>
|
||||
/book write file <path>
|
||||
```
|
||||
|
||||
Open the TUI editor or edit specific pages from the command line:
|
||||
|
||||
```
|
||||
/book edit
|
||||
/book edit page <page> <text>
|
||||
/book edit insert <page> <text>
|
||||
/book edit delete <page>
|
||||
```
|
||||
|
||||
Sign the writable book in your main hand:
|
||||
|
||||
```
|
||||
/book sign <title>
|
||||
```
|
||||
|
||||
- **Notes:**
|
||||
|
||||
`read` works with a writable book or a written book in your main hand.
|
||||
|
||||
`write`, `edit`, and `sign` require a writable book in your main hand.
|
||||
|
||||
Use `\n` for line breaks and `\f` for page breaks when passing inline text.
|
||||
|
||||
MCC checks page count, page length, and title length against the current protocol before sending the packet.
|
||||
|
||||
The interactive editor is only available in TUI mode.
|
||||
|
||||
In the TUI book view, `PageUp`/`PageDown` switches pages.
|
||||
|
||||
- **Examples:**
|
||||
|
||||
Read the held book:
|
||||
|
||||
```
|
||||
/book read
|
||||
```
|
||||
|
||||
Show only page 2:
|
||||
|
||||
```
|
||||
/book read 2
|
||||
```
|
||||
|
||||
Write two pages from the command line:
|
||||
|
||||
```
|
||||
/book write text First page\nSecond line\fSecond page
|
||||
```
|
||||
|
||||
Load the book text from a file:
|
||||
|
||||
```
|
||||
/book write file ./letter.txt
|
||||
```
|
||||
|
||||
Replace page 3:
|
||||
|
||||
```
|
||||
/book edit page 3 Updated text for page three
|
||||
```
|
||||
|
||||
Insert a new page before page 2:
|
||||
|
||||
```
|
||||
/book edit insert 2 This page goes before the old page 2
|
||||
```
|
||||
|
||||
Delete page 4:
|
||||
|
||||
```
|
||||
/book edit delete 4
|
||||
```
|
||||
|
||||
Sign the current writable book:
|
||||
|
||||
```
|
||||
/book sign Meeting Notes
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><code>bed</code></summary>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue