diff --git a/Components/MineSharp.Protocol/MinecraftClient.cs b/Components/MineSharp.Protocol/MinecraftClient.cs index 7e2835fb..2e463239 100644 --- a/Components/MineSharp.Protocol/MinecraftClient.cs +++ b/Components/MineSharp.Protocol/MinecraftClient.cs @@ -60,7 +60,7 @@ public sealed class MinecraftClient : IDisposable private IPacketHandler _internalPacketHandler; private MinecraftStream? _stream; private Task? _streamLoop; - public IPAddress ip; + private IPAddress ip; /// /// Fires whenever the client received a known Packet @@ -342,7 +342,7 @@ private async Task ReceivePackets() { var buffer = this._stream!.ReadPacket(); var packetId = buffer.ReadVarInt(); - var packetType = this.Data.Protocol.FromPacketId(PacketFlow.Clientbound, this.gameState, packetId); + var packetType = this.Data.Protocol.GetPacketType(PacketFlow.Clientbound, this.gameState, packetId); if (this._bundlePackets) this._bundledPackets.Enqueue((packetType, buffer)); @@ -491,7 +491,7 @@ public static async Task RequestServerStatus( int timeout = 10000, ITcpClientFactory? tcpFactory = null) { - var latest = MinecraftData.FromVersion(LATEST_SUPPORTED_VERSION); + var latest = await MinecraftData.FromVersion(LATEST_SUPPORTED_VERSION); var client = new MinecraftClient( latest, Session.OfflineSession("RequestStatus"), @@ -536,10 +536,10 @@ public static async Task RequestServerStatus( /// /// /// - public static Task AutodetectServerVersion(string hostname, ushort port) + public static async Task AutodetectServerVersion(string hostname, ushort port) { - return RequestServerStatus(hostname, port) - .ContinueWith( - prev => MinecraftData.FromVersion(prev.Result.Version)); + var status = await RequestServerStatus(hostname, port); + + return await MinecraftData.FromVersion(status.Version); } } \ No newline at end of file diff --git a/Components/MineSharp.Protocol/Packets/NetworkTypes/CoreTypeExtensions.cs b/Components/MineSharp.Protocol/Packets/NetworkTypes/CoreTypeExtensions.cs index 01f9fed9..c6e7731e 100644 --- a/Components/MineSharp.Protocol/Packets/NetworkTypes/CoreTypeExtensions.cs +++ b/Components/MineSharp.Protocol/Packets/NetworkTypes/CoreTypeExtensions.cs @@ -27,7 +27,7 @@ public static void WriteOptionalItem(this PacketBuffer buffer, Item? item) return null; return new Item( - data.Items.GetById(buffer.ReadVarInt()), + data.Items.ById(buffer.ReadVarInt())!, buffer.ReadByte(), null, buffer.ReadNbtCompound()); diff --git a/Components/MineSharp.World/AbstractWorld.cs b/Components/MineSharp.World/AbstractWorld.cs index cb7b1640..0c66ee66 100644 --- a/Components/MineSharp.World/AbstractWorld.cs +++ b/Components/MineSharp.World/AbstractWorld.cs @@ -47,7 +47,7 @@ protected ConcurrentDictionary Chunks /// public readonly MinecraftData Data = data; - private readonly BlockInfo OutOfMapBlock = data.Blocks.GetByType(BlockType.Air); + private readonly BlockInfo OutOfMapBlock = data.Blocks.ByType(BlockType.Air)!; /// [Pure] @@ -161,7 +161,7 @@ public Block GetBlockAt(Position position) var relative = this.ToChunkPosition(position); var blockState = chunk.GetBlockAt(relative); var block = new Block( - this.Data.Blocks.GetByState(blockState), + this.Data.Blocks.ByState(blockState)!, blockState, position); return block; @@ -233,7 +233,7 @@ private void OnChunkBlockUpdate(IChunk chunk, int state, Position position) { var worldPosition = this.ToWorldPosition(chunk.Coordinates, position); this.OnBlockUpdated?.Invoke(this, new Block( // TODO: Hier jedes mal ein neuen block zu erstellen ist quatsch - this.Data.Blocks.GetByState(state), state, worldPosition)); + this.Data.Blocks.ByState(state)!, state, worldPosition)); } private int NonNegativeMod(int x, int m) diff --git a/Components/MineSharp.World/V1_18/ChunkSection_1_18.cs b/Components/MineSharp.World/V1_18/ChunkSection_1_18.cs index f2009ea3..80cd544d 100644 --- a/Components/MineSharp.World/V1_18/ChunkSection_1_18.cs +++ b/Components/MineSharp.World/V1_18/ChunkSection_1_18.cs @@ -33,11 +33,11 @@ public int GetBlockAt(Position position) public void SetBlockAt(int state, Position position) { var index = GetBlockIndex(position); - var old = this._data.Blocks.GetByState( - this._blockContainer.GetAt(index)); + var old = this._data.Blocks.ByState( + this._blockContainer.GetAt(index))!; bool wasSolid = old.IsSolid(); - bool isSolid = this._data.Blocks.GetByState(state).IsSolid(); + bool isSolid = this._data.Blocks.ByState(state)!.IsSolid(); if (wasSolid != isSolid) { @@ -54,7 +54,7 @@ public Biome GetBiomeAt(Position position) { var index = GetBiomeIndex(position); var state = this._biomeContainer.GetAt(index); - return new Biome(this._data.Biomes.GetById(state)); + return new Biome(this._data.Biomes.ById(state)!); } public void SetBiomeAt(Position position, Biome biome) @@ -65,7 +65,7 @@ public void SetBiomeAt(Position position, Biome biome) public IEnumerable FindBlocks(BlockType type, int? maxCount = null) { - var info = this._data.Blocks.GetByType(type); + var info = this._data.Blocks.ByType(type)!; if (!this._blockContainer.Palette.ContainsState(info.MinState, info.MaxState) || maxCount == 0) { yield break; diff --git a/Components/Tests/MineSharp.Windows.Tests/WindowTests.cs b/Components/Tests/MineSharp.Windows.Tests/WindowTests.cs index 064d4118..68fd5ff9 100644 --- a/Components/Tests/MineSharp.Windows.Tests/WindowTests.cs +++ b/Components/Tests/MineSharp.Windows.Tests/WindowTests.cs @@ -17,13 +17,13 @@ public class WindowTests [SetUp] public void Setup() { - this._data = MinecraftData.FromVersion("1.19.3"); + this._data = MinecraftData.FromVersion("1.19.3").Result; this._mainInventory = new Window(255, "", 4 * 9, null, null); this._inventory = new Window(0, "Inventory", 9, this._mainInventory, null); - this._oakLog = this._data.Items.GetByName("oak_log"); - this._netherStar = this._data.Items.GetByName("nether_star"); - this._diamond = this._data.Items.GetByName("diamond"); + this._oakLog = this._data.Items.ByName("oak_log")!; + this._netherStar = this._data.Items.ByName("nether_star")!; + this._diamond = this._data.Items.ByName("diamond")!; } [Test] diff --git a/Data/MineSharp.Data.Tests/MineSharp.Data.Tests.csproj b/Data/MineSharp.Data.Tests/MineSharp.Data.Tests.csproj index 8164a9da..e841da61 100644 --- a/Data/MineSharp.Data.Tests/MineSharp.Data.Tests.csproj +++ b/Data/MineSharp.Data.Tests/MineSharp.Data.Tests.csproj @@ -1,12 +1,12 @@ - net8.0 enable enable false true + net8.0;net7.0 diff --git a/Data/MineSharp.Data.Tests/TestVersions.cs b/Data/MineSharp.Data.Tests/TestVersions.cs index afd3f431..fa16eb3b 100644 --- a/Data/MineSharp.Data.Tests/TestVersions.cs +++ b/Data/MineSharp.Data.Tests/TestVersions.cs @@ -1,3 +1,11 @@ +using MineSharp.Core.Common.Biomes; +using MineSharp.Core.Common.Blocks; +using MineSharp.Core.Common.Effects; +using MineSharp.Core.Common.Enchantments; +using MineSharp.Core.Common.Entities; +using MineSharp.Core.Common.Items; +using MineSharp.Data.Protocol; + namespace MineSharp.Data.Tests; public class Tests @@ -14,7 +22,21 @@ public void TestLoadData() { foreach (var version in Versions) { - MinecraftData.FromVersion(version).Wait(); + var data = MinecraftData.FromVersion(version).Result; + + // load all data + data.Biomes.ByType(BiomeType.Beach); + data.BlockCollisionShapes.GetShapes(BlockType.Stone, 0); + data.Blocks.ByType(BlockType.Air); + data.Effects.ByType(EffectType.Absorption); + data.Enchantments.ByType(EnchantmentType.Channeling); + data.Entities.ByType(EntityType.Allay); + data.Items.ByType(ItemType.Bamboo); + data.Language.GetTranslation("menu.quit"); + data.Materials.GetMultiplier(Material.Shovel, ItemType.StoneSword); + data.Protocol.GetPacketId(PacketType.CB_Play_Login); + data.Recipes.ByItem(ItemType.DiamondShovel); + data.Windows.ById(0); } } } \ No newline at end of file diff --git a/Data/MineSharp.Data/BlockCollisionShapes/BlockCollisionShapeDataBlob.cs b/Data/MineSharp.Data/BlockCollisionShapes/BlockCollisionShapeDataBlob.cs index 231ff59d..d620a4c8 100644 --- a/Data/MineSharp.Data/BlockCollisionShapes/BlockCollisionShapeDataBlob.cs +++ b/Data/MineSharp.Data/BlockCollisionShapes/BlockCollisionShapeDataBlob.cs @@ -2,6 +2,6 @@ namespace MineSharp.Data.BlockCollisionShapes; -public record BlockCollisionShapeDataBlob( +internal record BlockCollisionShapeDataBlob( Dictionary BlockToIndicesMap, Dictionary IndexToShapeMap); \ No newline at end of file diff --git a/Data/MineSharp.Data/BlockCollisionShapes/BlockCollisionShapesProvider.cs b/Data/MineSharp.Data/BlockCollisionShapes/BlockCollisionShapesProvider.cs index ce62e16b..8da37d3e 100644 --- a/Data/MineSharp.Data/BlockCollisionShapes/BlockCollisionShapesProvider.cs +++ b/Data/MineSharp.Data/BlockCollisionShapes/BlockCollisionShapesProvider.cs @@ -6,7 +6,7 @@ namespace MineSharp.Data.BlockCollisionShapes; -internal class BlockCollisionShapesProvider(JToken token, IBlockData blocks) : IDataProvider +internal class BlockCollisionShapesProvider(JToken token) : IDataProvider { private static readonly EnumNameLookup BlockTypeLookup = new(); diff --git a/Data/MineSharp.Data/Blocks/BlockData.cs b/Data/MineSharp.Data/Blocks/BlockData.cs index 8e264937..89c8a719 100644 --- a/Data/MineSharp.Data/Blocks/BlockData.cs +++ b/Data/MineSharp.Data/Blocks/BlockData.cs @@ -6,4 +6,38 @@ namespace MineSharp.Data.Blocks; internal class BlockData(IDataProvider provider) - : TypeIdNameIndexedData(provider), IBlockData; \ No newline at end of file + : TypeIdNameIndexedData(provider), IBlockData +{ + + private BlockInfo[]? sortedByState; + + public int TotalBlockStateCount { get; private set; } = -1; + + public BlockInfo? ByState(int state) + { + if (!this.Loaded) + this.Load(); + + var half = this.sortedByState!.Length / 2; + var start = state < sortedByState![half].MaxState + ? 0 + : half; + + for (var i = start; i < sortedByState.Length; i++) + { + if (state <= this.sortedByState[i].MaxState) + return this.sortedByState[i]; + } + + return null; + } + + protected override void InitializeData(BlockInfo[] data) + { + Array.Sort(data, (a, b) => a.MinState.CompareTo(b.MinState)); + this.sortedByState = data; + this.TotalBlockStateCount = this.sortedByState[^1].MaxState + 1; + + base.InitializeData(data); + } +} \ No newline at end of file diff --git a/Data/MineSharp.Data/Blocks/BlockProvider.cs b/Data/MineSharp.Data/Blocks/BlockProvider.cs index f1bc8512..9cb32c62 100644 --- a/Data/MineSharp.Data/Blocks/BlockProvider.cs +++ b/Data/MineSharp.Data/Blocks/BlockProvider.cs @@ -95,7 +95,7 @@ private static ItemType[] GetHarvestTools(JObject? array, IItemData items) .Select(x => x.Name) .Select(x => Convert.ToInt32(x)) .Select(items.ById) - .Select(x => x.Type) + .Select(x => x!.Type) .ToArray(); } @@ -120,7 +120,8 @@ private static IBlockProperty GetBlockProperty(JObject obj) return type switch { "bool" => new BoolProperty(name), "int" => new IntProperty(name, numValues), - "enum" => new EnumProperty(name, obj.SelectToken("values")!.ToObject()!) + "enum" => new EnumProperty(name, obj.SelectToken("values")!.ToObject()!), + _ => throw new NotSupportedException($"Property of type '{type}' is not supported.") }; } } \ No newline at end of file diff --git a/Data/MineSharp.Data/DataProvider.cs b/Data/MineSharp.Data/DataProvider.cs deleted file mode 100644 index ff14c4ac..00000000 --- a/Data/MineSharp.Data/DataProvider.cs +++ /dev/null @@ -1,41 +0,0 @@ -using System.Diagnostics.CodeAnalysis; - -namespace MineSharp.Data; - -/// -/// Base Data provider. -/// Indexes by -/// -/// -/// -public class DataProvider where TEnum : Enum where T : class -{ - internal readonly DataVersion Version; - - internal DataProvider(DataVersion version) - { - this.Version = version; - } - - /// - /// Get a by - /// - /// - /// - public T GetByType(TEnum type) => this.Version.Palette[type]; - - /// - /// Try to get a by - /// - /// - /// - /// - public bool TryGetByType(TEnum type, [NotNullWhen(true)] out T? block) - => this.Version.Palette.TryGetValue(type, out block); - - /// - /// Get a by - /// - /// - public T this[TEnum type] => GetByType(type); -} diff --git a/Data/MineSharp.Data/DataVersion.cs b/Data/MineSharp.Data/DataVersion.cs deleted file mode 100644 index 00526290..00000000 --- a/Data/MineSharp.Data/DataVersion.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MineSharp.Data; - -internal abstract class DataVersion where TEnum : Enum where T : class -{ - public abstract Dictionary Palette { get; } -} diff --git a/Data/MineSharp.Data/Enchantments/EnchantmentProvider.cs b/Data/MineSharp.Data/Enchantments/EnchantmentProvider.cs index 203703f0..dd9a9775 100644 --- a/Data/MineSharp.Data/Enchantments/EnchantmentProvider.cs +++ b/Data/MineSharp.Data/Enchantments/EnchantmentProvider.cs @@ -61,7 +61,7 @@ private static EnchantmentInfo FromToken(JToken token) treasureOnly, curse, GetExclusions(exclude), - EnchantmentCategoryLookup.FromName(NameUtils.GetEnchantmentName(category)), + EnchantmentCategoryLookup.FromName(NameUtils.GetEnchantmentCategory(category)), weight, tradeable, discoverable); diff --git a/Data/MineSharp.Data/Entities/EntityProvider.cs b/Data/MineSharp.Data/Entities/EntityProvider.cs index bcc3ef5d..fe54f00d 100644 --- a/Data/MineSharp.Data/Entities/EntityProvider.cs +++ b/Data/MineSharp.Data/Entities/EntityProvider.cs @@ -55,7 +55,7 @@ private static EntityInfo FromToken(JToken token) width, height, MobTypeLookup.FromName(NameUtils.GetEntityName(mobType)), - EntityCategoryLookup.FromName(NameUtils.GetEntityName(category)) + EntityCategoryLookup.FromName(NameUtils.GetEntityCategory(category)) ); } } \ No newline at end of file diff --git a/Data/MineSharp.Data/Framework/DataInterfaces.cs b/Data/MineSharp.Data/Framework/DataInterfaces.cs index ab927253..c5e80cfe 100644 --- a/Data/MineSharp.Data/Framework/DataInterfaces.cs +++ b/Data/MineSharp.Data/Framework/DataInterfaces.cs @@ -20,7 +20,20 @@ public interface IBiomeData : ITypeIdNameIndexedData; /// /// Interface for implementing indexed block data /// -public interface IBlockData : ITypeIdNameIndexedData; +public interface IBlockData : ITypeIdNameIndexedData +{ + /// + /// The total number of block states + /// + public int TotalBlockStateCount { get; } + + /// + /// Get a block info by state + /// + /// + /// + public BlockInfo? ByState(int state); +} /// /// Interface for implementing indexed effect data @@ -70,7 +83,7 @@ public interface IBlockCollisionShapeData public AABB[] GetShapes(BlockType type, int index) { var indices = GetShapeIndices(type); - var entry = indices.Length > 0 ? indices[index] : indices[0]; + var entry = indices.Length > 1 ? indices[index] : indices[0]; return GetShapes(entry); } @@ -80,7 +93,7 @@ public AABB[] GetShapes(BlockType type, int index) /// /// public AABB[] GetForBlock(Block block) - => GetShapes(block.Info.Type, block.State); + => GetShapes(block.Info.Type, block.Metadata); } /// @@ -93,7 +106,7 @@ public interface ILanguageData /// /// /// - public string GetTranslation(string name); + public string? GetTranslation(string name); } /// @@ -129,7 +142,7 @@ public interface IProtocolData /// /// /// - public PacketType FromPacketType(PacketFlow flow, GameState state, int id); + public PacketType GetPacketType(PacketFlow flow, GameState state, int id); } /// @@ -150,6 +163,11 @@ public interface IRecipeData /// public interface IWindowData { + /// + /// A list of blocks that can be opened + /// + public IList AllowedBlocksToOpen { get; } + /// /// Get a window info by id /// diff --git a/Data/MineSharp.Data/Framework/IMinecraftData.cs b/Data/MineSharp.Data/Framework/IMinecraftData.cs deleted file mode 100644 index 53c5d0ed..00000000 --- a/Data/MineSharp.Data/Framework/IMinecraftData.cs +++ /dev/null @@ -1,17 +0,0 @@ -namespace MineSharp.Data.Framework; - -public interface IMinecraftData -{ - public IBiomeData Biomes { get; } - public IBlockCollisionShapeData BlockCollisionShapes { get; } - public IBlockData Blocks { get; } - public IEffectData Effects { get; } - public IEntityData Entities { get; } - public IItemData Items { get; } - public ILanguageData Language { get; } - public IMaterialData Materials { get; } - public IProtocolData Protocol { get; } - public IRecipeData Recipes { get; } - public IWindowData Windows { get; } - public MinecraftVersion Version { get; } -} \ No newline at end of file diff --git a/Data/MineSharp.Data/Framework/ITypeIdNameIndexedData.cs b/Data/MineSharp.Data/Framework/ITypeIdNameIndexedData.cs index cee36218..88322bb1 100644 --- a/Data/MineSharp.Data/Framework/ITypeIdNameIndexedData.cs +++ b/Data/MineSharp.Data/Framework/ITypeIdNameIndexedData.cs @@ -10,6 +10,11 @@ public interface ITypeIdNameIndexedData where TEnum : struct, Enum where TInfo : class { + /// + /// The number of data entries + /// + public int Count { get; } + /// /// Get by type /// diff --git a/Data/MineSharp.Data/Internal/NameUtils.cs b/Data/MineSharp.Data/Internal/NameUtils.cs index d4666367..82056cd9 100644 --- a/Data/MineSharp.Data/Internal/NameUtils.cs +++ b/Data/MineSharp.Data/Internal/NameUtils.cs @@ -50,8 +50,18 @@ public static string GetEffectName(string name) public static string GetEnchantmentName(string name) => CommonGetName(name); + public static string GetEnchantmentCategory(string name) + => CommonGetName(name); + public static string GetEntityName(string name) => CommonGetName(name); + + public static string GetEntityCategory(string name) + { + if (name == "UNKNOWN") + name = name.ToLower(); + return CommonGetName(name); + } public static string GetDimensionName(string name) => CommonGetName(name); diff --git a/Data/MineSharp.Data/Internal/TypeIdNameIndexedData.cs b/Data/MineSharp.Data/Internal/TypeIdNameIndexedData.cs index 598dca35..e912b3de 100644 --- a/Data/MineSharp.Data/Internal/TypeIdNameIndexedData.cs +++ b/Data/MineSharp.Data/Internal/TypeIdNameIndexedData.cs @@ -9,12 +9,16 @@ internal class TypeIdNameIndexedData(IDataProvider provid where TEnum : struct, Enum where TInfo : class { + public int Count { get; private set; } = -1; + private readonly Dictionary typeToInfo = new(); private readonly Dictionary idToInfo = new(); private readonly Dictionary nameToInfo = new(); protected override void InitializeData(TInfo[] data) { + this.Count = data.Length; + var tInfo = typeof(TInfo); var idField = tInfo.GetProperty("Id")!; var typeField = tInfo.GetProperty("Type")!; diff --git a/Data/MineSharp.Data/Language/LanguageData.cs b/Data/MineSharp.Data/Language/LanguageData.cs new file mode 100644 index 00000000..879c623c --- /dev/null +++ b/Data/MineSharp.Data/Language/LanguageData.cs @@ -0,0 +1,23 @@ +using MineSharp.Data.Framework; +using MineSharp.Data.Framework.Providers; +using MineSharp.Data.Internal; + +namespace MineSharp.Data.Language; + +internal class LanguageData(IDataProvider provider) : IndexedData(provider), ILanguageData +{ + private Dictionary translations = new(); + + public string? GetTranslation(string name) + { + if (!this.Loaded) + this.Load(); + + return this.translations.GetValueOrDefault(name); + } + + protected override void InitializeData(LanguageDataBlob data) + { + this.translations = data.Translations; + } +} \ No newline at end of file diff --git a/Data/MineSharp.Data/Language/LanguageDataBlob.cs b/Data/MineSharp.Data/Language/LanguageDataBlob.cs new file mode 100644 index 00000000..35bfe4dc --- /dev/null +++ b/Data/MineSharp.Data/Language/LanguageDataBlob.cs @@ -0,0 +1,3 @@ +namespace MineSharp.Data.Language; + +internal record LanguageDataBlob(Dictionary Translations); \ No newline at end of file diff --git a/Data/MineSharp.Data/Language/LanguageProvider.cs b/Data/MineSharp.Data/Language/LanguageProvider.cs index 77c575e3..57337225 100644 --- a/Data/MineSharp.Data/Language/LanguageProvider.cs +++ b/Data/MineSharp.Data/Language/LanguageProvider.cs @@ -1,23 +1,24 @@ +using MineSharp.Data.Framework.Providers; +using Newtonsoft.Json.Linq; + namespace MineSharp.Data.Language; -/// -/// Provides translation strings from minecraft. -/// -public class LanguageProvider +internal class LanguageProvider : IDataProvider { + private JObject token; + + public LanguageProvider(JToken token) + { + if (token.Type != JTokenType.Object) + { + throw new ArgumentException("Expected token to be an object"); + } - private readonly LanguageVersion _version; + this.token = (JObject)token; + } - internal LanguageProvider(LanguageVersion version) + public LanguageDataBlob GetData() { - this._version = version; + return new LanguageDataBlob(token.ToObject>()!); } - - /// - /// Get a translation by name. - /// - /// - /// - public string GetTranslation(string name) - => this._version.Translations[name]; } \ No newline at end of file diff --git a/Data/MineSharp.Data/Language/LanguageVersion.cs b/Data/MineSharp.Data/Language/LanguageVersion.cs deleted file mode 100644 index 1c4b862d..00000000 --- a/Data/MineSharp.Data/Language/LanguageVersion.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MineSharp.Data.Language; - -internal abstract class LanguageVersion -{ - public abstract Dictionary Translations { get; } -} \ No newline at end of file diff --git a/Data/MineSharp.Data/MinecraftData.cs b/Data/MineSharp.Data/MinecraftData.cs index 95d3def4..bdc1b6eb 100644 --- a/Data/MineSharp.Data/MinecraftData.cs +++ b/Data/MineSharp.Data/MinecraftData.cs @@ -7,9 +7,12 @@ using MineSharp.Data.Exceptions; using MineSharp.Data.Framework; using MineSharp.Data.Items; +using MineSharp.Data.Language; using MineSharp.Data.Materials; using MineSharp.Data.Protocol; using MineSharp.Data.Recipes; +using MineSharp.Data.Windows; +using MineSharp.Data.Windows.Versions; using Newtonsoft.Json.Linq; namespace MineSharp.Data; @@ -17,7 +20,7 @@ namespace MineSharp.Data; /// /// Provides static data about a Minecraft version. /// -public class MinecraftData : IMinecraftData +public class MinecraftData { private static readonly MinecraftDataRepository MinecraftDataRepository = new ( @@ -139,6 +142,9 @@ public static async Task FromVersion(string version) if (versionToken is null) throw new MineSharpVersionNotSupportedException($"Version {version} is not supported."); + var protocolVersion = (int)ProtocolVersions.Value[version].SelectToken("version")!; + var minecraftVersion = new MinecraftVersion(version, protocolVersion); + var biomeToken = await LoadAsset("biomes", versionToken); var shapesToken = await LoadAsset("blockCollisionShapes", versionToken); var blocksToken = await LoadAsset("blocks", versionToken); @@ -149,17 +155,20 @@ public static async Task FromVersion(string version) var protocolToken = await LoadAsset("protocol", versionToken); var materialsToken = await LoadAsset("materials", versionToken); var recipesToken = await LoadAsset("recipes", versionToken); + var languageToken = await LoadAsset("language", versionToken); var biomes = new BiomeData(new BiomeProvider(biomeToken)); var items = new ItemData(new ItemProvider(itemsToken)); var blocks = new BlockData(new BlockProvider(blocksToken, items)); - var shapes = new BlockCollisionShapeData(new BlockCollisionShapesProvider(shapesToken, blocks)); + var shapes = new BlockCollisionShapeData(new BlockCollisionShapesProvider(shapesToken)); var effects = new EffectData(new EffectProvider(effectsToken)); var enchantments = new EnchantmentData(new EnchantmentProvider(enchantmentsToken)); var entities = new EntityData(new EntityProvider(entitiesToken)); var protocol = new ProtocolData(new ProtocolProvider(protocolToken)); var materials = new MaterialData(new MaterialsProvider(materialsToken, items)); var recipes = new RecipeData(new RecipeProvider(recipesToken, items)); + var language = new LanguageData(new LanguageProvider(languageToken)); + var windows = GetWindowData(minecraftVersion); var data = new MinecraftData( biomes, @@ -172,9 +181,9 @@ public static async Task FromVersion(string version) protocol, materials, recipes, - null, - null, - null); + windows, + language, + minecraftVersion); LoadedData.Add(version, data); return data; @@ -215,4 +224,14 @@ private static Dictionary LoadProtocolVersions() x => (string)x.SelectToken("minecraftVersion")!, x => x); } + + private static IWindowData GetWindowData(MinecraftVersion version) + { + return version.Protocol switch + { + >= 765 => new WindowData(new WindowVersion1_20_3()), + >= 736 => new WindowData(new WindowVersion1_16_1()), + _ => throw new NotSupportedException() + }; + } } diff --git a/Data/MineSharp.Data/Protocol/ProtocolData.cs b/Data/MineSharp.Data/Protocol/ProtocolData.cs index ece4e2fe..5277bf2a 100644 --- a/Data/MineSharp.Data/Protocol/ProtocolData.cs +++ b/Data/MineSharp.Data/Protocol/ProtocolData.cs @@ -29,7 +29,7 @@ public int GetPacketId(PacketType type) return this.typeToId[type]; } - public PacketType FromPacketType(PacketFlow flow, GameState state, int id) + public PacketType GetPacketType(PacketFlow flow, GameState state, int id) { if (!this.Loaded) this.Load(); diff --git a/Data/MineSharp.Data/Recipes/RecipeProvider.cs b/Data/MineSharp.Data/Recipes/RecipeProvider.cs index e74c8813..5f80c5bc 100644 --- a/Data/MineSharp.Data/Recipes/RecipeProvider.cs +++ b/Data/MineSharp.Data/Recipes/RecipeProvider.cs @@ -51,18 +51,20 @@ private Recipe RecipeFromToken(JToken recipe) var resultCount = (int)recipe.SelectToken("result.count")!; var ingredientsToken = recipe.SelectToken("ingredients"); - var ingredients = ingredientsToken is null - ? IngredientsFromArray((JArray)ingredientsToken!)! + var ingredients = ingredientsToken is not null + ? IngredientsFromArray((JArray)ingredientsToken) : IngredientsFromShape((JArray)recipe.SelectToken("inShape")!)!; var outShapeToken = (JArray?)recipe.SelectToken("outShape"); var outShape = IngredientsFromShape(outShapeToken); + var itemType = this.items.ById(resultId)!.Type; + return new Recipe( ingredients, outShape, ingredients.Length > 4, - this.items.ById(resultId)!.Type, + itemType, resultCount); } diff --git a/Data/MineSharp.Data/VersionMap.cs b/Data/MineSharp.Data/VersionMap.cs deleted file mode 100644 index 11493bfd..00000000 --- a/Data/MineSharp.Data/VersionMap.cs +++ /dev/null @@ -1,193 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////////////// -// This File is generated by MineSharp.SourceGenerator and should not be modified. // -/////////////////////////////////////////////////////////////////////////////////////////// - -#pragma warning disable CS1591 - -namespace MineSharp.Data; - -internal static class VersionMap -{ - public static Dictionary Biomes { get; } = new() - { - { "1.18", "MineSharp.Data.Biomes.Versions.Biomes_1_18" }, - { "1.18.1", "MineSharp.Data.Biomes.Versions.Biomes_1_18" }, - { "1.18.2", "MineSharp.Data.Biomes.Versions.Biomes_1_18" }, - { "1.19", "MineSharp.Data.Biomes.Versions.Biomes_1_19" }, - { "1.19.2", "MineSharp.Data.Biomes.Versions.Biomes_1_19_2" }, - { "1.19.3", "MineSharp.Data.Biomes.Versions.Biomes_1_19_3" }, - { "1.19.4", "MineSharp.Data.Biomes.Versions.Biomes_1_19_4" }, - { "1.20", "MineSharp.Data.Biomes.Versions.Biomes_1_20" }, - { "1.20.1", "MineSharp.Data.Biomes.Versions.Biomes_1_20" }, - { "1.20.2", "MineSharp.Data.Biomes.Versions.Biomes_1_20_2" }, - { "1.20.3", "MineSharp.Data.Biomes.Versions.Biomes_1_20_2" }, - { "1.20.4", "MineSharp.Data.Biomes.Versions.Biomes_1_20_2" }, - }; - public static Dictionary Blocks { get; } = new() - { - { "1.18", "MineSharp.Data.Blocks.Versions.Blocks_1_18" }, - { "1.18.1", "MineSharp.Data.Blocks.Versions.Blocks_1_18" }, - { "1.18.2", "MineSharp.Data.Blocks.Versions.Blocks_1_18" }, - { "1.19", "MineSharp.Data.Blocks.Versions.Blocks_1_19" }, - { "1.19.2", "MineSharp.Data.Blocks.Versions.Blocks_1_19_2" }, - { "1.19.3", "MineSharp.Data.Blocks.Versions.Blocks_1_19_3" }, - { "1.19.4", "MineSharp.Data.Blocks.Versions.Blocks_1_19_4" }, - { "1.20", "MineSharp.Data.Blocks.Versions.Blocks_1_20" }, - { "1.20.1", "MineSharp.Data.Blocks.Versions.Blocks_1_20" }, - { "1.20.2", "MineSharp.Data.Blocks.Versions.Blocks_1_20_2" }, - { "1.20.3", "MineSharp.Data.Blocks.Versions.Blocks_1_20_3" }, - { "1.20.4", "MineSharp.Data.Blocks.Versions.Blocks_1_20_4" }, - }; - public static Dictionary BlockCollisionShapes { get; } = new() - { - { "1.18", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_17" }, - { "1.18.1", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_17" }, - { "1.18.2", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_17" }, - { "1.19", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_19" }, - { "1.19.2", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_19_2" }, - { "1.19.3", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_19_3" }, - { "1.19.4", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_19_4" }, - { "1.20", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_20" }, - { "1.20.1", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_20" }, - { "1.20.2", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_20_2" }, - { "1.20.3", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_20_3" }, - { "1.20.4", "MineSharp.Data.BlockCollisionShapes.Versions.BlockCollisionShapes_1_20_3" }, - }; - public static Dictionary Effects { get; } = new() - { - { "1.18", "MineSharp.Data.Effects.Versions.Effects_1_17" }, - { "1.18.1", "MineSharp.Data.Effects.Versions.Effects_1_17" }, - { "1.18.2", "MineSharp.Data.Effects.Versions.Effects_1_17" }, - { "1.19", "MineSharp.Data.Effects.Versions.Effects_1_19" }, - { "1.19.2", "MineSharp.Data.Effects.Versions.Effects_1_19_2" }, - { "1.19.3", "MineSharp.Data.Effects.Versions.Effects_1_19_3" }, - { "1.19.4", "MineSharp.Data.Effects.Versions.Effects_1_19_4" }, - { "1.20", "MineSharp.Data.Effects.Versions.Effects_1_20" }, - { "1.20.1", "MineSharp.Data.Effects.Versions.Effects_1_20" }, - { "1.20.2", "MineSharp.Data.Effects.Versions.Effects_1_20_2" }, - { "1.20.3", "MineSharp.Data.Effects.Versions.Effects_1_20_2" }, - { "1.20.4", "MineSharp.Data.Effects.Versions.Effects_1_20_2" }, - }; - public static Dictionary Enchantments { get; } = new() - { - { "1.18", "MineSharp.Data.Enchantments.Versions.Enchantments_1_17" }, - { "1.18.1", "MineSharp.Data.Enchantments.Versions.Enchantments_1_17" }, - { "1.18.2", "MineSharp.Data.Enchantments.Versions.Enchantments_1_17" }, - { "1.19", "MineSharp.Data.Enchantments.Versions.Enchantments_1_19" }, - { "1.19.2", "MineSharp.Data.Enchantments.Versions.Enchantments_1_19_2" }, - { "1.19.3", "MineSharp.Data.Enchantments.Versions.Enchantments_1_19_3" }, - { "1.19.4", "MineSharp.Data.Enchantments.Versions.Enchantments_1_19_4" }, - { "1.20", "MineSharp.Data.Enchantments.Versions.Enchantments_1_20" }, - { "1.20.1", "MineSharp.Data.Enchantments.Versions.Enchantments_1_20" }, - { "1.20.2", "MineSharp.Data.Enchantments.Versions.Enchantments_1_20_2" }, - { "1.20.3", "MineSharp.Data.Enchantments.Versions.Enchantments_1_20_2" }, - { "1.20.4", "MineSharp.Data.Enchantments.Versions.Enchantments_1_20_2" }, - }; - public static Dictionary Entities { get; } = new() - { - { "1.18", "MineSharp.Data.Entities.Versions.Entities_1_18" }, - { "1.18.1", "MineSharp.Data.Entities.Versions.Entities_1_18" }, - { "1.18.2", "MineSharp.Data.Entities.Versions.Entities_1_18" }, - { "1.19", "MineSharp.Data.Entities.Versions.Entities_1_19" }, - { "1.19.2", "MineSharp.Data.Entities.Versions.Entities_1_19_2" }, - { "1.19.3", "MineSharp.Data.Entities.Versions.Entities_1_19_3" }, - { "1.19.4", "MineSharp.Data.Entities.Versions.Entities_1_19_4" }, - { "1.20", "MineSharp.Data.Entities.Versions.Entities_1_20" }, - { "1.20.1", "MineSharp.Data.Entities.Versions.Entities_1_20" }, - { "1.20.2", "MineSharp.Data.Entities.Versions.Entities_1_20_2" }, - { "1.20.3", "MineSharp.Data.Entities.Versions.Entities_1_20_3" }, - { "1.20.4", "MineSharp.Data.Entities.Versions.Entities_1_20_3" }, - }; - public static Dictionary Items { get; } = new() - { - { "1.18", "MineSharp.Data.Items.Versions.Items_1_18" }, - { "1.18.1", "MineSharp.Data.Items.Versions.Items_1_18" }, - { "1.18.2", "MineSharp.Data.Items.Versions.Items_1_18" }, - { "1.19", "MineSharp.Data.Items.Versions.Items_1_19" }, - { "1.19.2", "MineSharp.Data.Items.Versions.Items_1_19_2" }, - { "1.19.3", "MineSharp.Data.Items.Versions.Items_1_19_3" }, - { "1.19.4", "MineSharp.Data.Items.Versions.Items_1_19_4" }, - { "1.20", "MineSharp.Data.Items.Versions.Items_1_20" }, - { "1.20.1", "MineSharp.Data.Items.Versions.Items_1_20" }, - { "1.20.2", "MineSharp.Data.Items.Versions.Items_1_20_2" }, - { "1.20.3", "MineSharp.Data.Items.Versions.Items_1_20_3" }, - { "1.20.4", "MineSharp.Data.Items.Versions.Items_1_20_3" }, - }; - public static Dictionary Protocol { get; } = new() - { - { "1.18", "MineSharp.Data.Protocol.Versions.Protocol_1_18" }, - { "1.18.1", "MineSharp.Data.Protocol.Versions.Protocol_1_18" }, - { "1.18.2", "MineSharp.Data.Protocol.Versions.Protocol_1_18_2" }, - { "1.19", "MineSharp.Data.Protocol.Versions.Protocol_1_19" }, - { "1.19.2", "MineSharp.Data.Protocol.Versions.Protocol_1_19_2" }, - { "1.19.3", "MineSharp.Data.Protocol.Versions.Protocol_1_19_3" }, - { "1.19.4", "MineSharp.Data.Protocol.Versions.Protocol_1_19_4" }, - { "1.20", "MineSharp.Data.Protocol.Versions.Protocol_1_20" }, - { "1.20.1", "MineSharp.Data.Protocol.Versions.Protocol_1_20" }, - { "1.20.2", "MineSharp.Data.Protocol.Versions.Protocol_1_20_2" }, - { "1.20.3", "MineSharp.Data.Protocol.Versions.Protocol_1_20_3" }, - { "1.20.4", "MineSharp.Data.Protocol.Versions.Protocol_1_20_3" }, - }; - public static Dictionary Materials { get; } = new() - { - { "1.18", "MineSharp.Data.Materials.Versions.Materials_1_18" }, - { "1.18.1", "MineSharp.Data.Materials.Versions.Materials_1_18" }, - { "1.18.2", "MineSharp.Data.Materials.Versions.Materials_1_18" }, - { "1.19", "MineSharp.Data.Materials.Versions.Materials_1_19" }, - { "1.19.2", "MineSharp.Data.Materials.Versions.Materials_1_19_2" }, - { "1.19.3", "MineSharp.Data.Materials.Versions.Materials_1_19_3" }, - { "1.19.4", "MineSharp.Data.Materials.Versions.Materials_1_19_4" }, - { "1.20", "MineSharp.Data.Materials.Versions.Materials_1_20" }, - { "1.20.1", "MineSharp.Data.Materials.Versions.Materials_1_20" }, - { "1.20.2", "MineSharp.Data.Materials.Versions.Materials_1_20_2" }, - { "1.20.3", "MineSharp.Data.Materials.Versions.Materials_1_20_3" }, - { "1.20.4", "MineSharp.Data.Materials.Versions.Materials_1_20_3" }, - }; - public static Dictionary Recipes { get; } = new() - { - { "1.18", "MineSharp.Data.Recipes.Versions.Recipes_1_18" }, - { "1.18.1", "MineSharp.Data.Recipes.Versions.Recipes_1_18" }, - { "1.18.2", "MineSharp.Data.Recipes.Versions.Recipes_1_18" }, - { "1.19", "MineSharp.Data.Recipes.Versions.Recipes_1_19" }, - { "1.19.2", "MineSharp.Data.Recipes.Versions.Recipes_1_19" }, - { "1.19.3", "MineSharp.Data.Recipes.Versions.Recipes_1_19_3" }, - { "1.19.4", "MineSharp.Data.Recipes.Versions.Recipes_1_19_4" }, - { "1.20", "MineSharp.Data.Recipes.Versions.Recipes_1_20" }, - { "1.20.1", "MineSharp.Data.Recipes.Versions.Recipes_1_20" }, - { "1.20.2", "MineSharp.Data.Recipes.Versions.Recipes_1_20_2" }, - { "1.20.3", "MineSharp.Data.Recipes.Versions.Recipes_1_20_3" }, - { "1.20.4", "MineSharp.Data.Recipes.Versions.Recipes_1_20_3" }, - }; - public static Dictionary Language { get; } = new() - { - { "1.18", "MineSharp.Data.Language.Versions.Language_1_18" }, - { "1.18.1", "MineSharp.Data.Language.Versions.Language_1_18" }, - { "1.18.2", "MineSharp.Data.Language.Versions.Language_1_18" }, - { "1.19", "MineSharp.Data.Language.Versions.Language_1_19" }, - { "1.19.2", "MineSharp.Data.Language.Versions.Language_1_19_2" }, - { "1.19.3", "MineSharp.Data.Language.Versions.Language_1_19_3" }, - { "1.19.4", "MineSharp.Data.Language.Versions.Language_1_19_4" }, - { "1.20", "MineSharp.Data.Language.Versions.Language_1_20" }, - { "1.20.1", "MineSharp.Data.Language.Versions.Language_1_20" }, - { "1.20.2", "MineSharp.Data.Language.Versions.Language_1_20_2" }, - { "1.20.3", "MineSharp.Data.Language.Versions.Language_1_20_3" }, - { "1.20.4", "MineSharp.Data.Language.Versions.Language_1_20_3" }, - }; - public static Dictionary Versions { get; } = new() - { - { "1.18", new MinecraftVersion("1.18", 757) }, - { "1.18.1", new MinecraftVersion("1.18.1", 757) }, - { "1.18.2", new MinecraftVersion("1.18.2", 758) }, - { "1.19", new MinecraftVersion("1.19", 759) }, - { "1.19.2", new MinecraftVersion("1.19.2", 760) }, - { "1.19.3", new MinecraftVersion("1.19.3", 761) }, - { "1.19.4", new MinecraftVersion("1.19.4", 762) }, - { "1.20", new MinecraftVersion("1.20", 763) }, - { "1.20.1", new MinecraftVersion("1.20.1", 763) }, - { "1.20.2", new MinecraftVersion("1.20.2", 764) }, - { "1.20.3", new MinecraftVersion("1.20.3", 765) }, - { "1.20.4", new MinecraftVersion("1.20.4", 765) }, - }; -} - -#pragma warning restore CS1591 diff --git a/Data/MineSharp.Data/Windows/Versions/WindowVersion1_16_1.cs b/Data/MineSharp.Data/Windows/Versions/WindowVersion1_16_1.cs index e69de29b..3eae3816 100644 --- a/Data/MineSharp.Data/Windows/Versions/WindowVersion1_16_1.cs +++ b/Data/MineSharp.Data/Windows/Versions/WindowVersion1_16_1.cs @@ -0,0 +1,38 @@ +using MineSharp.Data.Framework.Providers; + +namespace MineSharp.Data.Windows.Versions; + +internal class WindowVersion1_16_1 : IDataProvider +{ + private static readonly WindowInfo[] Windows = [ + new WindowInfo("minecraft:generic_9x1", "", 9), + new WindowInfo("minecraft:generic_9x2", "", 18), + new WindowInfo("minecraft:generic_9x3", "", 27), + new WindowInfo("minecraft:generic_9x4", "", 36), + new WindowInfo("minecraft:generic_9x5", "", 45), + new WindowInfo("minecraft:generic_9x6", "", 54), + new WindowInfo("minecraft:generic_3x3", "", 9), + new WindowInfo("minecraft:anvil", "Anvil", 3), + new WindowInfo("minecraft:beacon", "Beacon", 1), + new WindowInfo("minecraft:blast_furnace", "Blast Furnace", 3), + new WindowInfo("minecraft:brewing_stand", "Brewing stand", 5), + new WindowInfo("minecraft:crafting", "Crafting table", 10), + new WindowInfo("minecraft:enchantment", "Enchantment table", 2), + new WindowInfo("minecraft:furnace", "Furnace", 3), + new WindowInfo("minecraft:grindstone", "Grindstone", 3), + new WindowInfo("minecraft:hopper", "Hopper or minecart with hopper", 5), + new WindowInfo("minecraft:lectern", "Lectern", 1, true), + new WindowInfo("minecraft:loom", "Loom", 4), + new WindowInfo("minecraft:merchant", "Villager, Wandering Trader", 3), + new WindowInfo("minecraft:shulker_box", "Shulker box", 27), + new WindowInfo("minecraft:smithing", "Smithing Table", 3), + new WindowInfo("minecraft:smoker", "Smoker", 3), + new WindowInfo("minecraft:cartography", "Cartography Table", 3), + new WindowInfo("minecraft:stonecutter", "Stonecutter", 2), + ]; + + public WindowInfo[] GetData() + { + return Windows; + } +} \ No newline at end of file diff --git a/Data/MineSharp.Data/Windows/Versions/WindowVersion1_20_3.cs b/Data/MineSharp.Data/Windows/Versions/WindowVersion1_20_3.cs index e69de29b..391300db 100644 --- a/Data/MineSharp.Data/Windows/Versions/WindowVersion1_20_3.cs +++ b/Data/MineSharp.Data/Windows/Versions/WindowVersion1_20_3.cs @@ -0,0 +1,39 @@ +using MineSharp.Data.Framework.Providers; + +namespace MineSharp.Data.Windows.Versions; + +internal class WindowVersion1_20_3 : IDataProvider +{ + private static readonly WindowInfo[] Windows = [ + new WindowInfo("minecraft:generic_9x1", "", 9), + new WindowInfo("minecraft:generic_9x2", "", 18), + new WindowInfo("minecraft:generic_9x3", "", 27), + new WindowInfo("minecraft:generic_9x4", "", 36), + new WindowInfo("minecraft:generic_9x5", "", 45), + new WindowInfo("minecraft:generic_9x6", "", 54), + new WindowInfo("minecraft:generic_3x3", "", 9), + new WindowInfo("minecraft:crafter_3x3", "", 10), + new WindowInfo("minecraft:anvil", "Anvil", 3), + new WindowInfo("minecraft:beacon", "Beacon", 1), + new WindowInfo("minecraft:blast_furnace", "Blast Furnace", 3), + new WindowInfo("minecraft:brewing_stand", "Brewing stand", 5), + new WindowInfo("minecraft:crafting", "Crafting table", 10), + new WindowInfo("minecraft:enchantment", "Enchantment table", 2), + new WindowInfo("minecraft:furnace", "Furnace", 3), + new WindowInfo("minecraft:grindstone", "Grindstone", 3), + new WindowInfo("minecraft:hopper", "Hopper or minecart with hopper", 5), + new WindowInfo("minecraft:lectern", "Lectern", 1, true), + new WindowInfo("minecraft:loom", "Loom", 4), + new WindowInfo("minecraft:merchant", "Villager, Wandering Trader", 3), + new WindowInfo("minecraft:shulker_box", "Shulker box", 27), + new WindowInfo("minecraft:smithing", "Smithing Table", 3), + new WindowInfo("minecraft:smoker", "Smoker", 3), + new WindowInfo("minecraft:cartography", "Cartography Table", 3), + new WindowInfo("minecraft:stonecutter", "Stonecutter", 2), + ]; + + public WindowInfo[] GetData() + { + return Windows; + } +} \ No newline at end of file diff --git a/Data/MineSharp.Data/Windows/WindowProvider.cs b/Data/MineSharp.Data/Windows/WindowData.cs similarity index 60% rename from Data/MineSharp.Data/Windows/WindowProvider.cs rename to Data/MineSharp.Data/Windows/WindowData.cs index 1b390926..961b7c73 100644 --- a/Data/MineSharp.Data/Windows/WindowProvider.cs +++ b/Data/MineSharp.Data/Windows/WindowData.cs @@ -1,13 +1,13 @@ using MineSharp.Core.Common.Blocks; +using MineSharp.Data.Framework; +using MineSharp.Data.Framework.Providers; +using MineSharp.Data.Internal; namespace MineSharp.Data.Windows; -/// -/// Static Window data -/// -public class WindowProvider +internal class WindowData(IDataProvider provider) : IndexedData(provider), IWindowData { - private static IList _allowedBlocksToOpen = new List() { + private static readonly IList StaticAllowedBlocksToOpen = new List() { BlockType.Chest, BlockType.TrappedChest, BlockType.EnderChest, @@ -44,28 +44,36 @@ public class WindowProvider BlockType.Loom, BlockType.Stonecutter }; - private WindowVersion version; - private IDictionary windowMap; - internal WindowProvider(WindowVersion version) - { - this.version = version; - this.windowMap = this.Windows.ToDictionary(x => x.Name); - } + private Dictionary windowMap = new(); /// /// All blocks that can be opened /// - public IList AllowedBlocksToOpen => _allowedBlocksToOpen; - - /// - /// All available windows - /// - public WindowInfo[] Windows => this.version.Windows; - - /// - /// Map of window string id to WindowInfo - /// - public IDictionary WindowMap => windowMap; + public IList AllowedBlocksToOpen => StaticAllowedBlocksToOpen; + + private WindowInfo[]? Windows { get; set; } + + protected override void InitializeData(WindowInfo[] data) + { + this.Windows = data; + this.windowMap = this.Windows.ToDictionary(x => x.Name); + } + + public WindowInfo ById(int id) + { + if (!this.Loaded) + this.Load(); + + return this.Windows![id]; + } + + public WindowInfo ByName(string name) + { + if (!this.Loaded) + this.Load(); + + return this.windowMap[name]; + } } \ No newline at end of file diff --git a/Data/MineSharp.Data/Windows/WindowVersion.cs b/Data/MineSharp.Data/Windows/WindowVersion.cs deleted file mode 100644 index fe76d495..00000000 --- a/Data/MineSharp.Data/Windows/WindowVersion.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace MineSharp.Data.Windows; - -internal abstract class WindowVersion -{ - public abstract WindowInfo[] Windows { get; } -} diff --git a/Data/MineSharp.SourceGenerator/Code/DataVersionGenerator.cs b/Data/MineSharp.SourceGenerator/Code/DataVersionGenerator.cs deleted file mode 100644 index 3517d29d..00000000 --- a/Data/MineSharp.SourceGenerator/Code/DataVersionGenerator.cs +++ /dev/null @@ -1,45 +0,0 @@ -using Humanizer; -using Newtonsoft.Json.Linq; -using System.Text; - -namespace MineSharp.SourceGenerator.Code; - -public class DataVersionGenerator -{ - public required string Namespace { get; init; } - public required string ClassName { get; init; } - public required string EnumName { get; init; } - public required string InfoClass { get; init; } - public required string Outfile { get; init; } - public required Func Stringify { get; init; } - public required Func KeySelector { get; init; } - public required JToken[] Properties { get; init; } - public required string[] Usings { get; init; } - - public Task Write() - { - var writer = new CodeWriter(); - - writer.Disclaimer(); - - foreach (var @using in this.Usings) - { - writer.WriteLine($"using {@using};"); - } - - writer.WriteLine(); - writer.WriteLine($"namespace {this.Namespace};"); - writer.WriteLine(); - writer.Begin($"internal class {this.ClassName} : DataVersion<{this.EnumName}, {this.InfoClass}>"); - writer.Begin($"private static Dictionary<{this.EnumName}, {this.InfoClass}> Values {{ get; }} = new()"); - foreach (var token in this.Properties) - { - writer.WriteLine($"{{ {this.EnumName}.{this.KeySelector(token)}, {this.Stringify(token)} }},"); - } - writer.Finish(semicolon: true); - writer.WriteLine($"public override Dictionary<{this.EnumName}, {this.InfoClass}> Palette => Values;"); - writer.Finish(); - - return File.WriteAllTextAsync(this.Outfile, writer.ToString()); - } -} diff --git a/Data/MineSharp.SourceGenerator/Code/Str.cs b/Data/MineSharp.SourceGenerator/Code/Str.cs deleted file mode 100644 index 26b0496c..00000000 --- a/Data/MineSharp.SourceGenerator/Code/Str.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Globalization; - -namespace MineSharp.SourceGenerator.Code; - -public static class Str -{ - - private static NumberFormatInfo _nfi = new NumberFormatInfo() { - NumberDecimalSeparator = "." - }; - - public static string Float(float value) - => value.ToString(_nfi) + "f"; - - public static string Bool(bool value) - => value ? "true" : "false"; - - public static string String(string value) - => $"\"{value}\""; - - -} diff --git a/Data/MineSharp.SourceGenerator/Generators/BiomeGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/BiomeGenerator.cs index 516267e7..f80661ce 100644 --- a/Data/MineSharp.SourceGenerator/Generators/BiomeGenerator.cs +++ b/Data/MineSharp.SourceGenerator/Generators/BiomeGenerator.cs @@ -1,95 +1,32 @@ -using Humanizer; -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Generators.Core; using MineSharp.SourceGenerator.Utils; using Newtonsoft.Json.Linq; namespace MineSharp.SourceGenerator.Generators; -public class BiomeGenerator : CommonGenerator +public class BiomeGenerator { - protected override string Singular => "Biome"; - protected override string Namespace => "Biomes"; - protected override string DataKey => "biomes"; - protected override string[] ExtraUsings { get; } = { "MineSharp.Core.Common" }; + private readonly Generator typeGenerator = + new Generator("biomes", GetName, "BiomeType", "Biomes"); + private readonly Generator categoryGenerator = + new Generator("biomes", GetCategoryName, "BiomeCategory", "Biomes"); - private async Task GenerateEnum(MinecraftDataWrapper wrapper) + public Task Run(MinecraftDataWrapper wrapper) { - var outdir = DirectoryUtils.GetCoreSourceDirectory(Path.Join("Common", "Biomes")); - var biomes = await wrapper.GetBiomes(Config.LatestVersion); - var biomeCategories = new HashSet(); - - foreach (var biome in (JArray)biomes) - { - biomeCategories.Add(NameUtils.GetBiomeCategory((string)biome!)); - } - - await new EnumGenerator() { - Namespace = "MineSharp.Core.Common.Biomes", - ClassName = "BiomeCategory", - Outfile = Path.Join(outdir, "BiomeCategory.cs"), - Entries = biomeCategories - .Select((x, i) => (x, i)) - .ToDictionary(x => x.x, x => x.i) - }.Write(); - } - - protected override async Task WriteAdditionalItems(MinecraftDataWrapper wrapper) - { - var outdir = DirectoryUtils.GetCoreSourceDirectory(Path.Join("Common", "Biomes")); - var biomes = await wrapper.GetBiomes(Config.LatestVersion); - - var biomeCategories = new HashSet(); - - foreach (var biome in (JArray)biomes) - { - biomeCategories.Add(((string)biome.SelectToken("category")!).Pascalize()); - } - - await new EnumGenerator() { - Namespace = "MineSharp.Core.Common.Biomes", - ClassName = "BiomeCategory", - Outfile = Path.Join(outdir, "BiomeCategory.cs"), - Entries = biomeCategories - .Select((x, i) => (x, i)) - .ToDictionary(x => x.x, x => x.i) - }.Write(); + return Task.WhenAll( + typeGenerator.Generate(wrapper), + categoryGenerator.Generate(wrapper)); } - - protected override JToken[] GetProperties(JToken data) - => ((JArray)data).ToArray(); - protected override string GetName(JToken token) + private static string GetName(JToken token) { var name = (string)token.SelectToken("name")!; return NameUtils.GetBiomeName(name); } - protected override string Stringify(JToken token) + private static string GetCategoryName(JToken token) { - var id = (int)token.SelectToken("id")!; - var name = (string)token.SelectToken("name")!; - var displayName = (string)token.SelectToken("displayName")!; - var category = NameUtils.GetBiomeCategory((string)token.SelectToken("category")!); - var temperature = (float)token.SelectToken("temperature")!; - var dimension = (string)token.SelectToken("dimension")!; - var color = (int)token.SelectToken("color")!; - - - bool precipitation; - if (null == token.SelectToken("has_precipitation")) - precipitation = "none" == (string)token.SelectToken("precipitation")!; - else precipitation = (bool)token.SelectToken("has_precipitation")!; - - return $"new BiomeInfo({id}, " + - $"BiomeType.{name.Pascalize()}, " + - $"{Str.String(name)}, " + - $"{Str.String(displayName)}, " + - $"BiomeCategory.{category}, " + - $"{Str.Float(temperature)}, " + - $"{Str.Bool(precipitation)}, " + - $"Dimension.{dimension.Pascalize()}, " + - $"{color})"; + var name = (string)token.SelectToken("category")!; + return NameUtils.GetBiomeCategory(name); } -} +} \ No newline at end of file diff --git a/Data/MineSharp.SourceGenerator/Generators/BlockCollisionShapesGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/BlockCollisionShapesGenerator.cs deleted file mode 100644 index f1d3fc8f..00000000 --- a/Data/MineSharp.SourceGenerator/Generators/BlockCollisionShapesGenerator.cs +++ /dev/null @@ -1,84 +0,0 @@ -using Humanizer; -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Utils; -using Newtonsoft.Json.Linq; -using System.Text; - -namespace MineSharp.SourceGenerator.Generators; - -public class BlockCollisionShapesGenerator : IGenerator -{ - public string Name => "BlockCollisionShapes"; - - public async Task Run(MinecraftDataWrapper wrapper) - { - foreach (var version in Config.IncludedVersions) - { - await GenerateVersion(wrapper, version); - } - } - - private async Task GenerateVersion(MinecraftDataWrapper wrapper, string version) - { - var path = wrapper.GetPath(version, "blockCollisionShapes"); - if (VersionMapGenerator.GetInstance().IsRegistered("blockCollisionShapes", path)) - { - VersionMapGenerator.GetInstance().RegisterVersion("blockCollisionShapes", version, path); - return; - } - - VersionMapGenerator.GetInstance().RegisterVersion("blockCollisionShapes", version, path); - - var outdir = DirectoryUtils.GetDataSourceDirectory(Path.Join("BlockCollisionShapes", "Versions")); - var v = path.Replace("pc/", "").Replace(".", "_"); - var blockCollisionShapes = await wrapper.GetBlockCollisionShapes(version); - - var blocks = (JObject)blockCollisionShapes.SelectToken("blocks")!; - var shapes = (JObject)blockCollisionShapes.SelectToken("shapes")!; - - var writer = new CodeWriter(); - writer.Disclaimer(); - writer.WriteLine("using MineSharp.Core.Common;"); - writer.WriteLine("using MineSharp.Core.Common.Blocks;"); - writer.WriteLine(); - writer.WriteLine("namespace MineSharp.Data.BlockCollisionShapes.Versions;"); - writer.WriteLine(); - writer.Begin($"internal class BlockCollisionShapes_{v} : BlockCollisionShapesVersion"); - writer.Begin("public override Dictionary BlockToIndicesMap { get; } = new()"); - foreach (var prop in blocks.Properties()) - { - writer.WriteLine($"{{ BlockType.{prop.Name.Pascalize()}, {StringifyIndices(prop.Value)} }},"); - } - writer.Finish(semicolon: true); - writer.Begin("public override Dictionary BlockShapes { get; } = new()"); - foreach (var prop in shapes.Properties()) - { - writer.WriteLine($"{{ {prop.Name}, {StringifyShapes(prop.Value)} }},"); - } - writer.Finish(semicolon: true); - writer.Finish(); - - await File.WriteAllTextAsync( - Path.Join(outdir, $"BlockCollisionShapes_{v}.cs"), writer.ToString()); - } - - private string StringifyIndices(JToken value) - { - if (value.Type == JTokenType.Integer) - return $"new [] {{ {(int)value} }}"; - - var values = ((JArray)value).Select(x => (int)x).ToArray(); - return $"new [] {{ {string.Join(", ", values)} }}"; - } - - private string StringifyShapes(JToken value) - { - var values = ((JArray)value).Select(x => $"new AABB({string.Join(", ", ((JArray)x).Select(y => Str.Float((float)y)))})") - .ToArray(); - - if (values.Length == 0) - return "Array.Empty()"; - - return $"new [] {{ {string.Join(", ", values)} }}"; - } -} diff --git a/Data/MineSharp.SourceGenerator/Generators/BlockGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/BlockGenerator.cs index 95bb037f..85bd860d 100644 --- a/Data/MineSharp.SourceGenerator/Generators/BlockGenerator.cs +++ b/Data/MineSharp.SourceGenerator/Generators/BlockGenerator.cs @@ -1,167 +1,22 @@ -using Humanizer; -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Generators.Core; using MineSharp.SourceGenerator.Utils; using Newtonsoft.Json.Linq; namespace MineSharp.SourceGenerator.Generators; -public class BlockGenerator : CommonGenerator +public class BlockGenerator { - protected override string Singular => "Block"; - protected override string Namespace => "Blocks"; - protected override string DataKey => "blocks"; - protected override string[] ExtraUsings { get; } = - { "MineSharp.Core.Common.Blocks.Property", "MineSharp.Core.Common.Items" }; + private readonly Generator typeGenerator = + new Generator("blocks", GetName, "BlockType", "Blocks"); - private JToken? _currentVersionItems; - - protected override string GetName(JToken token) - => NameUtils.GetBlockName((string)token.SelectToken("name")!); - - protected override JToken[] GetProperties(JToken data) - => ((JArray)data).ToArray(); - - protected override async Task GenerateVersion(MinecraftDataWrapper wrapper, string version) - { - this._currentVersionItems = await wrapper.GetItems(version); - await base.GenerateVersion(wrapper, version); - } - - protected override async Task WriteAdditionalItems(MinecraftDataWrapper wrapper) + public Task Run(MinecraftDataWrapper wrapper) { - var outdir = DirectoryUtils.GetCoreSourceDirectory(Path.Join("Common", "Blocks")); - var blocks = await wrapper.GetBlocks(Config.LatestVersion); - - var materials = new HashSet(); - foreach (var block in (JArray)blocks) - { - var mats = (string)block.SelectToken("material")!; - foreach (var material in mats.Split(";")) - { - materials.Add(NameUtils.GetMaterial(material)); - } - } - - await new EnumGenerator() { - Namespace = "MineSharp.Core.Common.Blocks", - ClassName = "Material", - Outfile = Path.Join(outdir, "Material.cs"), - Entries = materials.Select((x, i) => (x, i)).ToDictionary(x => x.x, x => x.i) - }.Write(); - } - - protected override string Stringify(JToken token) - { - var id = (int)token.SelectToken("id")!; - var name = (string)token.SelectToken("name")!; - var displayName = (string)token.SelectToken("displayName")!; - var hardness = (float?)token.SelectToken("hardness")! ?? -1; - var resistance = (float)token.SelectToken("resistance")!; - var minId = (int)token.SelectToken("minStateId")!; - var maxId = (int)token.SelectToken("maxStateId")!; - var diggable = (bool)token.SelectToken("diggable")!; - var transparent = (bool)token.SelectToken("transparent")!; - var filterLight = (int)token.SelectToken("filterLight")!; - var emitLight = (int)token.SelectToken("emitLight")!; - var bbox = (string)token.SelectToken("boundingBox")!; - var stackSize = (int)token.SelectToken("stackSize")!; - var materials = GetMaterials(token.SelectToken("material")!); - var harvestTools = GetHarvestTools(token.SelectToken("harvestTools")); - var defaultState = (int)token.SelectToken("defaultState")!; - var states = GetBlockState(token.SelectToken("states")!); - - return $"new BlockInfo({id}, " + - $"BlockType.{name.Pascalize()}, " + - $"{Str.String(name)}, " + - $"{Str.String(displayName)}, " + - $"{Str.Float(hardness)}, " + - $"{Str.Float(resistance)}, " + - $"{minId}, " + - $"{maxId}, " + - $"{Str.Bool(diggable)}, " + - $"{Str.Bool(transparent)}, " + - $"{filterLight}, " + - $"{emitLight}, " + - $"{Str.String(bbox)}, " + - $"{stackSize}, " + - $"{materials}, " + - $"{harvestTools}, " + - $"{defaultState}, " + - $"{states})"; - } - - private string GetBlockState(JToken token) - { - var list = new List(); - foreach (var state in (JArray)token) - { - list.Add(StringifyState(state)); - } - return $"new BlockState({string.Join(", ", list)})"; - } - - private string StringifyState(JToken state) - { - var name = (string)state.SelectToken("name")!; - var type = (string)state.SelectToken("type")!; - var numValues = (int)state.SelectToken("num_values")!; - - switch (type) - { - case "bool": - return $"new BoolProperty({Str.String(name)})"; - case "int": - return $"new IntProperty({Str.String(name)}, {numValues})"; - case "enum": - var values = ((JArray)state.SelectToken("values")!) - .Select(x => Str.String((string)x!)) - .ToArray(); - return $"new EnumProperty({Str.String(name)}, new [] {{ {string.Join(", ", values)} }})"; - default: - throw new Exception("Not found: " + type); - } - } - - private string GetHarvestTools(JToken? token) - { - if (token == null) - return "null"; - - string FindNameFromItemId(string id) - { - foreach (var token in this._currentVersionItems!) - { - var itemId = (int)token.SelectToken("id")!; - if (itemId.ToString() == id) - return NameUtils.GetItemName((string)token.SelectToken("name")!); - } - throw new Exception($"Item not found: {id}"); - } - - - var arr = ((JObject)token).Properties() - .Select(x => x.Name) - .Select(FindNameFromItemId) - .Select(x => $"ItemType.{x}") - .ToArray(); - - if (arr.Length == 0) - return "null"; - - return $"new [] {{ {string.Join(", ", arr)} }}"; + return Task.WhenAll( + typeGenerator.Generate(wrapper)); } - private string GetMaterials(JToken token) + private static string GetName(JToken token) { - var str = (string)token!; - - var mats = str.Split(";") - .Select(NameUtils.GetMaterial) - .Select(x => $"Material.{x}") - .ToArray(); - return mats.Length == 0 - ? "Array.Empty()" - : $"new [] {{ {string.Join(", ", mats)} }}"; + var name = (string)token.SelectToken("name")!; + return NameUtils.GetBlockName(name); } } diff --git a/Data/MineSharp.SourceGenerator/Generators/Core/CommonGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/Core/CommonGenerator.cs deleted file mode 100644 index c7a852c6..00000000 --- a/Data/MineSharp.SourceGenerator/Generators/Core/CommonGenerator.cs +++ /dev/null @@ -1,89 +0,0 @@ -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Utils; -using Newtonsoft.Json.Linq; - -namespace MineSharp.SourceGenerator.Generators.Core; - -public abstract class CommonGenerator : IGenerator -{ - public string Name => this.Singular; - protected abstract string DataKey { get; } - protected abstract string Namespace { get; } - protected abstract string Singular { get; } - protected virtual string[] ExtraUsings { get; } = Array.Empty(); - - public async Task Run(MinecraftDataWrapper wrapper) - { - await this.GenerateTypeEnum(wrapper); - - foreach (var version in Config.IncludedVersions) - { - await GenerateVersion(wrapper, version); - } - - await this.WriteAdditionalItems(wrapper); - } - - protected virtual async Task GenerateVersion(MinecraftDataWrapper wrapper, string version) - { - var path = wrapper.GetPath(version, this.DataKey); - var versionMap = VersionMapGenerator.GetInstance(); - if (versionMap.IsRegistered(this.DataKey, path)) - { - versionMap.RegisterVersion(this.DataKey, version, path); - return; - } - versionMap.RegisterVersion(this.DataKey, version, path); - - var outdir = DirectoryUtils.GetDataSourceDirectory(Path.Join(this.Namespace, "Versions")); - var v = path.Replace("pc/", "").Replace(".", "_"); - var data = await wrapper.Parse(version, this.DataKey); - - await new DataVersionGenerator() { - Namespace = $"MineSharp.Data.{this.Namespace}.Versions", - ClassName = $"{this.Namespace}_{v}", - EnumName = $"{this.Singular}Type", - InfoClass = $"{this.Singular}Info", - Usings = new[] - { $"MineSharp.Core.Common.{this.Namespace}" } - .Concat(this.ExtraUsings) - .ToArray(), - Outfile = Path.Join(outdir, $"{this.Namespace}_{v}.cs"), - Properties = this.GetProperties(data), - Stringify = this.Stringify, - KeySelector = this.GetName - }.Write(); - } - - private async Task GenerateTypeEnum(MinecraftDataWrapper wrapper) - { - var outdir = DirectoryUtils.GetCoreSourceDirectory(Path.Join("Common", this.Namespace)); - var tokens = new List(); - var dict = new Dictionary(); - - foreach (var version in Config.IncludedVersions.Reverse()) - { - var data = await wrapper.Parse(version, this.DataKey); - foreach (var prop in this.GetProperties(data)) - { - if (dict.ContainsKey(this.GetName(prop))) - continue; - dict.Add(this.GetName(prop), dict.Count); - } - } - - await new EnumGenerator() { - Namespace = $"MineSharp.Core.Common.{Namespace}", - ClassName = $"{this.Singular}Type", - Outfile = Path.Join(outdir, $"{this.Singular}Type.cs"), - Entries = dict - }.Write(); - } - - protected virtual Task WriteAdditionalItems(MinecraftDataWrapper wrapper) - => Task.CompletedTask; - - protected abstract JToken[] GetProperties(JToken data); - protected abstract string GetName(JToken token); - protected abstract string Stringify(JToken token); -} diff --git a/Data/MineSharp.SourceGenerator/Generators/EffectGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/EffectGenerator.cs index 86b36f9a..803716be 100644 --- a/Data/MineSharp.SourceGenerator/Generators/EffectGenerator.cs +++ b/Data/MineSharp.SourceGenerator/Generators/EffectGenerator.cs @@ -1,34 +1,22 @@ -using Humanizer; -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Generators.Core; using MineSharp.SourceGenerator.Utils; using Newtonsoft.Json.Linq; namespace MineSharp.SourceGenerator.Generators; -public class EffectGenerator : CommonGenerator +public class EffectGenerator { - protected override string DataKey => "effects"; - protected override string Namespace => "Effects"; - protected override string Singular => "Effect"; + private readonly Generator typeGenerator = + new Generator("effects", GetName, "EffectType", "Effects"); - protected override JToken[] GetProperties(JToken data) - => ((JArray)data).ToArray(); - - protected override string GetName(JToken token) - => NameUtils.GetEffectName((string)token.SelectToken("name")!); + public Task Run(MinecraftDataWrapper wrapper) + { + return Task.WhenAll( + typeGenerator.Generate(wrapper)); + } - protected override string Stringify(JToken token) + private static string GetName(JToken token) { - var id = (int)token.SelectToken("id")!; var name = (string)token.SelectToken("name")!; - var displayName = (string)token.SelectToken("displayName")!; - var isGood = (string)token.SelectToken("type")! == "good"; - - return $"new EffectInfo({id}, " + - $"EffectType.{name.Pascalize()}, " + - $"{Str.String(name)}, " + - $"{Str.String(displayName)}, " + - $"{Str.Bool(isGood)})"; + return NameUtils.GetEffectName(name); } } diff --git a/Data/MineSharp.SourceGenerator/Generators/EnchantmentGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/EnchantmentGenerator.cs index 23ccfd37..8533d52a 100644 --- a/Data/MineSharp.SourceGenerator/Generators/EnchantmentGenerator.cs +++ b/Data/MineSharp.SourceGenerator/Generators/EnchantmentGenerator.cs @@ -1,95 +1,32 @@ -using Humanizer; -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Generators.Core; using MineSharp.SourceGenerator.Utils; using Newtonsoft.Json.Linq; namespace MineSharp.SourceGenerator.Generators; -public class EnchantmentGenerator : CommonGenerator +public class EnchantmentGenerator { - protected override string DataKey => "enchantments"; - protected override string Namespace => "Enchantments"; - protected override string Singular => "Enchantment"; - protected override string[] ExtraUsings { get; } = { "MineSharp.Core.Common" }; + private readonly Generator typeGenerator = + new Generator("enchantments", GetName, "EnchantmentType", "Enchantments"); - protected override async Task WriteAdditionalItems(MinecraftDataWrapper wrapper) - { - var outdir = DirectoryUtils.GetCoreSourceDirectory(Path.Join("Common", "Enchantments")); - var enchantments = await wrapper.GetEnchantments(Config.LatestVersion); - var enchantmentCategories = new HashSet(); - - foreach (var enchantment in (JArray)enchantments) - { - enchantmentCategories.Add(((string)enchantment.SelectToken("category")!).Pascalize()); - } + private readonly Generator categoryGenerator = + new Generator("enchantments", GetCategoryName, "EnchantmentCategory", "Enchantments"); - await new EnumGenerator() { - Namespace = "MineSharp.Core.Common.Enchantments", - ClassName = "EnchantmentCategory", - Outfile = Path.Join(outdir, "EnchantmentCategory.cs"), - Entries = enchantmentCategories - .Select((x, i) => (x, i)) - .ToDictionary(x => x.x, x => x.i) - }.Write(); + public Task Run(MinecraftDataWrapper wrapper) + { + return Task.WhenAll( + typeGenerator.Generate(wrapper), + categoryGenerator.Generate(wrapper)); } - - protected override JToken[] GetProperties(JToken data) - => ((JArray)data).ToArray(); - - protected override string GetName(JToken token) - => NameUtils.GetEnchantmentName((string)token.SelectToken("name")!); - protected override string Stringify(JToken token) + private static string GetName(JToken token) { - var id = (int)token.SelectToken("id")!; var name = (string)token.SelectToken("name")!; - var displayName = (string)token.SelectToken("displayName")!; - var maxLevel = (int)token.SelectToken("maxLevel")!; - var minCost = GetEnchantCost(token.SelectToken("minCost")!); - var maxCost = GetEnchantCost(token.SelectToken("maxCost")!); - var treasureOnly = (bool)token.SelectToken("treasureOnly")!; - var curse = (bool)token.SelectToken("curse")!; - var exclude = GetExclusions(token.SelectToken("exclude")!); - var category = (string)token.SelectToken("category")!; - var weight = (int)token.SelectToken("weight")!; - var tradeable = (bool)token.SelectToken("tradeable")!; - var discoverable = (bool)token.SelectToken("discoverable")!; - - return $"new EnchantmentInfo({id}, " + - $"EnchantmentType.{name.Pascalize()}, " + - $"{Str.String(name)}, " + - $"{Str.String(displayName)}, " + - $"{maxLevel}, " + - $"{minCost}, " + - $"{maxCost}, " + - $"{Str.Bool(treasureOnly)}, " + - $"{Str.Bool(curse)}, " + - $"{exclude}, " + - $"EnchantmentCategory.{category.Pascalize()}, " + - $"{weight}, " + - $"{Str.Bool(tradeable)}, " + - $"{Str.Bool(discoverable)})"; + return NameUtils.GetEnchantmentName(name); } - - private string GetEnchantCost(JToken token) - { - var a = (int)token.SelectToken("a")!; - var b = (int)token.SelectToken("b")!; - return $"new EnchantCost({a}, {b})"; - } - - private string GetExclusions(JToken token) + + private static string GetCategoryName(JToken token) { - var list = new List(); - foreach (var val in (JArray)token) - { - list.Add(((string)val!).Pascalize()); - } - - if (list.Count == 0) - return "Array.Empty()"; - - return $"new [] {{ {string.Join(", ", list.Select(x => $"EnchantmentType.{x}"))} }}"; + var name = (string)token.SelectToken("category")!; + return NameUtils.GetEnchantmentCategory(name); } } diff --git a/Data/MineSharp.SourceGenerator/Generators/EntityGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/EntityGenerator.cs index e3abf3cd..e34e38dd 100644 --- a/Data/MineSharp.SourceGenerator/Generators/EntityGenerator.cs +++ b/Data/MineSharp.SourceGenerator/Generators/EntityGenerator.cs @@ -1,83 +1,32 @@ -using Humanizer; -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Generators.Core; using MineSharp.SourceGenerator.Utils; using Newtonsoft.Json.Linq; namespace MineSharp.SourceGenerator.Generators; -public class EntityGenerator : CommonGenerator +public class EntityGenerator { - protected override string DataKey => "entities"; - protected override string Namespace => "Entities"; - protected override string Singular => "Entity"; - protected override string[] ExtraUsings { get; } = { "MineSharp.Core.Common" }; + private readonly Generator typeGenerator = + new Generator("entities", GetName, "EntityType", "Entities"); - protected override JToken[] GetProperties(JToken data) - => ((JArray)data).ToArray(); - - protected override string GetName(JToken token) - => NameUtils.GetEntityName((string)token.SelectToken("name")!); - - protected override string Stringify(JToken token) - { - var id = (int)token.SelectToken("id")!; - var name = (string)token.SelectToken("name")!; - var displayName = (string)token.SelectToken("displayName")!; - var width = (float)token.SelectToken("width")!; - var height = (float)token.SelectToken("height")!; - var type = (string)token.SelectToken("type")!; - var category = GetCategory(token.SelectToken("category")!); + private readonly Generator categoryGenerator = + new Generator("entities", GetCategoryName, "EntityCategory", "Entities"); - return $"new EntityInfo({id}, " + - $"EntityType.{name.Pascalize()}, " + - $"{Str.String(name)}, " + - $"{Str.String(displayName)}, " + - $"{Str.Float(width)}, " + - $"{Str.Float(height)}, " + - $"MobType.{type.Pascalize()}, " + - $"EntityCategory.{category})"; + public Task Run(MinecraftDataWrapper wrapper) + { + return Task.WhenAll( + typeGenerator.Generate(wrapper), + categoryGenerator.Generate(wrapper)); } - protected override async Task WriteAdditionalItems(MinecraftDataWrapper wrapper) + private static string GetName(JToken token) { - var outdir = DirectoryUtils.GetCoreSourceDirectory(Path.Join("Common", "Entities")); - var entities = await wrapper.GetEntities(Config.LatestVersion); - - var entityCategories = new HashSet(); - var entityTypes = new HashSet(); - - foreach (var entity in (JArray)entities) - { - var category = GetCategory(entity.SelectToken("category")!); - entityCategories.Add(category); - entityTypes.Add(((string)entity.SelectToken("type")!).Pascalize()); - } - - await new EnumGenerator() { - Namespace = "MineSharp.Core.Common.Entities", - ClassName = "EntityCategory", - Outfile = Path.Join(outdir, "EntityCategory.cs"), - Entries = entityCategories - .Select((x, i) => (x, i)) - .ToDictionary(x => x.x, x => x.i) - }.Write(); - - await new EnumGenerator() { - Namespace = "MineSharp.Core.Common.Entities", - ClassName = "MobType", - Outfile = Path.Join(outdir, "MobType.cs"), - Entries = entityTypes - .Select((x, i) => (x, i)) - .ToDictionary(x => x.x, x => x.i) - }.Write(); + var name = (string)token.SelectToken("name")!; + return NameUtils.GetEntityName(name); } - - private string GetCategory(JToken token) + + private static string GetCategoryName(JToken token) { - var val = (string)token!; - if (val == "UNKNOWN") - val = val.ToLower(); - return val.Pascalize(); + var name = (string)token.SelectToken("category")!; + return NameUtils.GetEntityCategory(name); } } diff --git a/Data/MineSharp.SourceGenerator/Generators/IGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/IGenerator.cs deleted file mode 100644 index bf940fa7..00000000 --- a/Data/MineSharp.SourceGenerator/Generators/IGenerator.cs +++ /dev/null @@ -1,9 +0,0 @@ -using MineSharp.SourceGenerator.Utils; - -namespace MineSharp.SourceGenerator.Generators; - -public interface IGenerator -{ - string Name { get; } - Task Run(MinecraftDataWrapper wrapper); -} diff --git a/Data/MineSharp.SourceGenerator/Generators/ItemGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/ItemGenerator.cs index 7149ea63..145f28d9 100644 --- a/Data/MineSharp.SourceGenerator/Generators/ItemGenerator.cs +++ b/Data/MineSharp.SourceGenerator/Generators/ItemGenerator.cs @@ -1,78 +1,22 @@ -using Humanizer; -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Generators.Core; using MineSharp.SourceGenerator.Utils; using Newtonsoft.Json.Linq; namespace MineSharp.SourceGenerator.Generators; -public class ItemGenerator : CommonGenerator +public class ItemGenerator { - protected override string DataKey => "items"; - protected override string Namespace => "Items"; - protected override string Singular => "Item"; - protected override string[] ExtraUsings { get; } = { "MineSharp.Core.Common.Enchantments" }; + private readonly Generator typeGenerator = + new Generator("items", GetName, "ItemType", "Items"); - protected override JToken[] GetProperties(JToken data) - => ((JArray)data).ToArray(); - - protected override string GetName(JToken token) + public Task Run(MinecraftDataWrapper wrapper) { - var name = (string)token.SelectToken("name")!; - return NameUtils.GetItemName(name); + return Task.WhenAll( + typeGenerator.Generate(wrapper)); } - protected override string Stringify(JToken token) + private static string GetName(JToken token) { - var id = (int)token.SelectToken("id")!; var name = (string)token.SelectToken("name")!; - var displayName = (string)token.SelectToken("displayName")!; - var stackSize = (int)token.SelectToken("stackSize")!; - var maxDurability = ((int?)token.SelectToken("maxDurability"))?.ToString() ?? "null"; - var enchantCategories = this.GetEnchantmentCategories(token.SelectToken("enchantCategories")); - var repairWith = GetRepairWith(token.SelectToken("repairWith")); - - return $"new ItemInfo({id}, " + - $"ItemType.{NameUtils.GetItemName(name)}, " + - $"{Str.String(name)}, " + - $"{Str.String(displayName)}, " + - $"{stackSize}, " + - $"{maxDurability}, " + - $"{enchantCategories}, " + - $"{repairWith})"; - } - - private string GetEnchantmentCategories(JToken? token) - { - if (null == token) - return "null"; - - var list = new List(); - foreach (var item in (JArray)token) - { - list.Add(((string)item!).Pascalize()); - } - - if (list.Count == 0) - return "Array.Empty()"; - - return $"new [] {{ {string.Join(", ", list.Select(x => $"EnchantmentCategory.{x}"))} }}"; - } - - private string GetRepairWith(JToken? token) - { - if (null == token) - return "null"; - - var list = new List(); - foreach (var item in (JArray)token) - { - list.Add(((string)item!).Pascalize()); - } - - if (list.Count == 0) - return $"Array.Empty()"; - - return $"new [] {{ {string.Join(", ", list.Select(x => $"ItemType.{x}"))} }}"; + return NameUtils.GetItemName(name); } } diff --git a/Data/MineSharp.SourceGenerator/Generators/LanguageGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/LanguageGenerator.cs deleted file mode 100644 index 6d24332f..00000000 --- a/Data/MineSharp.SourceGenerator/Generators/LanguageGenerator.cs +++ /dev/null @@ -1,60 +0,0 @@ -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Utils; -using Newtonsoft.Json.Linq; - -namespace MineSharp.SourceGenerator.Generators; - -public class LanguageGenerator : IGenerator -{ - public string Name => "Language"; - - public async Task Run(MinecraftDataWrapper wrapper) - { - foreach (var version in Config.IncludedVersions) - { - await GenerateVersion(wrapper, version); - } - } - - private async Task GenerateVersion(MinecraftDataWrapper wrapper, string version) - { - var path = wrapper.GetPath(version, "language"); - if (VersionMapGenerator.GetInstance().IsRegistered("language", path)) - { - VersionMapGenerator.GetInstance().RegisterVersion("language", version, path); - return; - } - - VersionMapGenerator.GetInstance().RegisterVersion("language", version, path); - - var outdir = DirectoryUtils.GetDataSourceDirectory(Path.Join("Language", "Versions")); - var v = path.Replace("pc/", "").Replace(".", "_"); - var language = await wrapper.Parse(version, "language"); - - var writer = new CodeWriter(); - writer.WriteLine(); - writer.WriteLine("using MineSharp.Data.Language;"); - writer.WriteLine(); - writer.WriteLine("namespace MineSharp.Data.Language.Versions;"); - writer.WriteLine(); - writer.Begin($"internal class Language_{v} : LanguageVersion"); - writer.Begin("public override Dictionary Translations { get; } = new()"); - foreach (var prop in ((JObject)language).Properties()) - { - writer.WriteLine($"{{ {Str.String(prop.Name)}, {Str.String(Sanitize((string)prop.Value!))} }},"); - } - - writer.Finish(semicolon: true); - writer.Finish(); - - await File.WriteAllTextAsync( - Path.Join(outdir, $"Language_{v}.cs"), writer.ToString()); - } - - private static string Sanitize(string msg) - { - return msg.Replace("\\", "\\\\") - .Replace("\n", "\\n") - .Replace("\"", "\\\""); - } -} \ No newline at end of file diff --git a/Data/MineSharp.SourceGenerator/Generators/MaterialGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/MaterialGenerator.cs deleted file mode 100644 index dfe28c8a..00000000 --- a/Data/MineSharp.SourceGenerator/Generators/MaterialGenerator.cs +++ /dev/null @@ -1,77 +0,0 @@ -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Utils; -using Newtonsoft.Json.Linq; -using System.Text; - -namespace MineSharp.SourceGenerator.Generators; - -public class MaterialGenerator : IGenerator -{ - public string Name => "Materials"; - - public async Task Run(MinecraftDataWrapper wrapper) - { - foreach (var version in Config.IncludedVersions) - { - await GenerateVersion(version, wrapper); - } - } - - private async Task GenerateVersion(string version, MinecraftDataWrapper wrapper) - { - var path = wrapper.GetPath(version, "materials"); - if (VersionMapGenerator.GetInstance().IsRegistered("materials", path)) - { - VersionMapGenerator.GetInstance().RegisterVersion("materials", version, path); - return; - } - - VersionMapGenerator.GetInstance().RegisterVersion("materials", version, path); - - var outdir = DirectoryUtils.GetDataSourceDirectory(Path.Join("Materials", "Versions")); - var materials = await wrapper.GetMaterials(version); - var items = (JArray)await wrapper.GetItems(version)!; - - string FindNameFromItemId(string id) - { - foreach (var token in items) - { - var itemId = (int)token.SelectToken("id")!; - if (itemId.ToString() == id) - return NameUtils.GetItemName((string)token.SelectToken("name")!); - } - throw new Exception($"Item not found: {id}"); - } - - var v = version.Replace(".", "_"); - - var writer = new CodeWriter(); - writer.Disclaimer(); - writer.WriteLine("using MineSharp.Core.Common.Blocks;"); - writer.WriteLine("using MineSharp.Core.Common.Items;"); - writer.WriteLine(); - writer.WriteLine("namespace MineSharp.Data.Materials.Versions;"); - writer.WriteLine(); - writer.Begin($"internal class Materials_{v} : MaterialVersion"); - writer.Begin("public override Dictionary> Palette { get; } = new()"); - foreach (var prop in ((JObject)materials).Properties()) - { - if (prop.Name.Contains(';')) - continue; - - writer.Begin(""); - writer.WriteLine($"Material.{NameUtils.GetMaterial(prop.Name)},"); - writer.Begin($"new Dictionary()"); - foreach (var kvp in ((JObject)prop.Value).Properties()) - { - writer.WriteLine($"{{ ItemType.{FindNameFromItemId(kvp.Name)}, {Str.Float((float)kvp.Value)} }},"); - } - writer.Finish(); - writer.Finish(colon: true); - } - writer.Finish(semicolon: true); - writer.Finish(); - - await File.WriteAllTextAsync(Path.Join(outdir, $"Materials_{v}.cs"), writer.ToString()); - } -} diff --git a/Data/MineSharp.SourceGenerator/Generators/ProtocolGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/ProtocolGenerator.cs index 746fd307..4cee6d4c 100644 --- a/Data/MineSharp.SourceGenerator/Generators/ProtocolGenerator.cs +++ b/Data/MineSharp.SourceGenerator/Generators/ProtocolGenerator.cs @@ -1,127 +1,47 @@ -using Humanizer; -using MineSharp.SourceGenerator.Code; using MineSharp.SourceGenerator.Utils; using Newtonsoft.Json.Linq; -using System.Text; namespace MineSharp.SourceGenerator.Generators; -public class ProtocolGenerator : IGenerator +public class ProtocolGenerator { - public string Name => "Protocol"; - public async Task Run(MinecraftDataWrapper wrapper) { - var packets = new Dictionary(); + var set = new HashSet(); foreach (var version in Config.IncludedVersions) { - var protocol = await wrapper.GetProtocol(version); - - foreach (var ns in ((JObject)protocol).Properties().Select(x => x.Name)) - { - if (ns == "types") - continue; - - var state = Enum.Parse(ns.Pascalize()); - foreach (var val in CollectPackets(protocol, ns, "toClient")) - packets.TryAdd(val, GetPacketValue(packets.Count, state, PacketFlow.Clientbound)); - - foreach (var val in CollectPackets(protocol, ns, "toServer")) - packets.TryAdd(val, GetPacketValue(packets.Count, state, PacketFlow.Serverbound)); - } - - await GenerateVersion(wrapper, version); + var obj = (JObject)await wrapper.GetProtocol(version); + AddPackets(obj, ref set); } - - await new EnumGenerator() { - ClassName = "PacketType", - Namespace = "MineSharp.Data.Protocol", - Outfile = Path.Join(DirectoryUtils.GetDataSourceDirectory("Protocol"), "PacketType.cs"), - Entries = packets - }.Write(); } - private int GetPacketValue(int id, GameState state, PacketFlow flow) + private void AddPackets(JObject protocol, ref HashSet set) { - return id & 0xFF | (byte)((sbyte)state & 0xFF) << 8 | (byte)flow << 16; - } - - public async Task GenerateVersion(MinecraftDataWrapper wrapper, string version) - { - var path = wrapper.GetPath(version, "protocol"); - if (VersionMapGenerator.GetInstance().IsRegistered("protocol", path)) - { - VersionMapGenerator.GetInstance().RegisterVersion("protocol", version, path); - return; - } - - VersionMapGenerator.GetInstance().RegisterVersion("protocol", version, path); - - var v = version.Replace(".", "_"); - var outdir = DirectoryUtils.GetDataSourceDirectory(Path.Join("Protocol", "Versions")); - var protocol = await wrapper.GetProtocol(version); - - var writer = new CodeWriter(); - writer.Disclaimer(); - writer.WriteLine("namespace MineSharp.Data.Protocol.Versions;"); - writer.WriteLine(); - writer.Begin($"internal class Protocol_{v} : ProtocolVersion"); - writer.Begin("public override Dictionary PacketIds { get; } = new()"); - foreach (var ns in ((JObject)protocol).Properties().Select(x => x.Name)) + foreach (var ns in protocol.Properties()) { - if (ns == "types") + if (ns.Name == "types") continue; - - var cbIdMapping = ((JObject)protocol.SelectToken($"{ns}.toClient.types.packet[1][0].type[1].mappings")!) - .Properties() - .ToDictionary(x => NameUtils.GetPacketName((string)x.Value!, "toClient", ns), x => x.Name); - - var sbIdMapping = ((JObject)protocol.SelectToken($"{ns}.toServer.types.packet[1][0].type[1].mappings")!) - .Properties() - .ToDictionary(x => NameUtils.GetPacketName((string)x.Value!, "toServer", ns), x => x.Name); - - foreach (var kvp in cbIdMapping) + + foreach (var packet in CollectPackets(protocol, ns.Name, "toClient")) { - var packetName = kvp.Key; - writer.WriteLine($"{{ PacketType.{packetName}, {kvp.Value} }},"); + set.Add(packet); } - foreach (var kvp in sbIdMapping) + foreach (var packet in CollectPackets(protocol, ns.Name, "toServer")) { - var packetName = kvp.Key; - writer.WriteLine($"{{ PacketType.{packetName}, {kvp.Value} }},"); + set.Add(packet); } } - writer.Finish(semicolon: true); - writer.Finish(); - - await File.WriteAllTextAsync(Path.Join(outdir, $"Protocol_{v}.cs"), writer.ToString()); } - private string[] CollectPackets(JToken token, string @namespace, string direction) + private IEnumerable CollectPackets(JObject protocol, string ns, string direction) { - var obj = (JObject)token.SelectToken($"{@namespace}.{direction}.types.packet[1][0].type[1].mappings")!; + var obj = (JObject)protocol.SelectToken($"{ns}.{direction}.types.packet[1][0].type[1].mappings")!; - return obj.Properties() - .Select(x => (string)x.Value!) - .Select(x => NameUtils.GetPacketName(x, direction, @namespace)) - .ToArray(); + foreach (var prop in obj.Properties()) + { + yield return NameUtils.GetPacketName((string)prop.Value!, direction, ns); + } } -} - -public enum GameState -{ - Handshaking = 0, - Status = 1, - Login = 2, - Play = 3, - Configuration = 4, -} - - -enum PacketFlow -{ - Clientbound, - Serverbound } \ No newline at end of file diff --git a/Data/MineSharp.SourceGenerator/Generators/RecipeGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/RecipeGenerator.cs deleted file mode 100644 index 2023f0e3..00000000 --- a/Data/MineSharp.SourceGenerator/Generators/RecipeGenerator.cs +++ /dev/null @@ -1,215 +0,0 @@ -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Utils; -using Newtonsoft.Json.Linq; - -namespace MineSharp.SourceGenerator.Generators; - -public class RecipeGenerator : IGenerator -{ - public string Name => "Recipe"; - - public async Task Run(MinecraftDataWrapper wrapper) - { - foreach (var version in Config.IncludedVersions) - { - await GenerateVersion(wrapper, version); - } - } - - private async Task GenerateVersion(MinecraftDataWrapper wrapper, string version) - { - var path = wrapper.GetPath(version, "recipes"); - if (VersionMapGenerator.GetInstance().IsRegistered("recipes", path)) - { - VersionMapGenerator.GetInstance().RegisterVersion("recipes", version, path); - return; - } - - VersionMapGenerator.GetInstance().RegisterVersion("recipes", version, path); - - var outdir = DirectoryUtils.GetDataSourceDirectory(Path.Join("Recipes", "Versions")); - - var data = await wrapper.Parse(version, "recipes"); - var items = await wrapper.Parse(version, "items"); - var v = version.Replace(".", "_"); - - var writer = new CodeWriter(); - writer.Disclaimer(); - writer.WriteLine("using MineSharp.Core.Common.Recipes;"); - writer.WriteLine("using MineSharp.Core.Common.Items;"); - writer.WriteLine(); - writer.WriteLine("namespace MineSharp.Data.Recipes.Versions;"); - writer.WriteLine(); - writer.Begin($"internal class Recipes_{v} : RecipeData"); - writer.Begin("private static Dictionary _recipes = new()"); - - foreach (var recipe in ((JObject)data).Properties()) - { - writer.Begin(); - writer.WriteLine($"{FindItem(items, recipe.Name)},"); - writer.WriteLine($"{GetRecipes(recipe.Value, items)}"); - writer.Finish(colon: true); - } - - writer.Finish(semicolon: true); - writer.WriteLine("public override Dictionary Recipes => _recipes;"); - writer.Finish(); - - await File.WriteAllTextAsync(Path.Join(outdir, $"Recipes_{v}.cs"), writer.ToString()); - } - - string FindItem(JToken items, string id) - { - foreach (var token in items) - { - var itemId = (int)token.SelectToken("id")!; - if (itemId.ToString() == id) - return "ItemType." + NameUtils.GetItemName((string)token.SelectToken("name")!); - } - throw new Exception($"Item not found: {id}"); - } - - string GetRecipes(JToken token, JToken items) - { - var list = new List(); - foreach (var element in (JArray)token) - { - list.Add(StringifyRecipe(element, items)); - } - - return $"new [] {{ {string.Join(", ", list) }}}"; - } - - string StringifyRecipe(JToken token, JToken items) - { - int?[] ingredients; - var requiresTable = false; - - if (token.SelectToken("ingredients") != null) - { - (ingredients, requiresTable) = this.FromIngredientRecipe(token); - } - else - { - (ingredients, requiresTable) = this.FromInShapeRecipe(token); - } - - - int?[]? outShape = null; - - if (token.SelectToken("outShape") != null) - { - outShape = Flatten(ConvertShape(token.SelectToken("outShape")!)); - } - - var resultId = (int)token.SelectToken("result.id")!; - var resultCount = (int)token.SelectToken("result.count")!; - - return $"new Recipe({StringifyItemsArray(ingredients, items)}, " + - $"{StringifyItemsArray(outShape, items)}, " + - $"{requiresTable.ToString().ToLower()}, " + - $"{FindItem(items, resultId.ToString())}, " + - $"{resultCount})"; - } - - string StringifyItemsArray(int?[]? itemIds, JToken items) - { - if (itemIds == null) - return "null"; - - var list = new List(); - foreach (int? id in itemIds) - { - if (id == null) - { - list.Add("null"); - continue; - } - - list.Add(FindItem(items, id.Value.ToString())); - } - - return $"new ItemType?[] {{ {string.Join(", ", list)} }}"; - } - - (int?[], bool) FromIngredientRecipe(JToken token) - { - var ingredients = (JArray)token.SelectToken("ingredients")!; - var itemIngredients = ingredients - .Select(x => (int?)x) - .ToArray(); - - var requiresTable = itemIngredients.Length > 4; - return (itemIngredients, requiresTable); - } - - (int?[], bool) FromInShapeRecipe(JToken token) - { - var shape = ConvertShape(token.SelectToken("inShape")!); - var ingredients = Flatten(shape); - ingredients = RemoveTrailingNulls(ingredients); - var requiresTable = shape.Length > 2 || shape.Any(x => x.Length > 2); - if (!requiresTable) - { - if (ingredients.Length > 3) - { - if (ingredients[2] != null) - { - throw new Exception(); - } - - var ing = ingredients.ToList(); - ing.RemoveAt(2); - ingredients = ing.ToArray(); - } - - if (ingredients.Length > 4) - { - throw new Exception(); - } - } - - return (ingredients, requiresTable); - } - - int?[][] ConvertShape(JToken token) - { - return ((JArray)token) - .Select(arr => ((JArray)arr).Select(x => (int?)x).ToArray()) - .ToArray(); - } - - int?[] Flatten(int?[][] twoD) - { - var flattened = new int?[9]; - for (int x = 0; x < twoD.Length; x++) - for (int y = 0; y < twoD[x].Length; y++) - flattened[x * 3 + y] = twoD[x][y]; - - return flattened; - } - - int?[] RemoveTrailingNulls(int?[] arr) - { - int nullIndex = -1; - - for (int i = 0; i < arr.Length; i++) - { - if (arr[i] != null) - { - nullIndex = -1; - continue; - } - - if (nullIndex > 0) - { - continue; - } - - nullIndex = i; - } - - return nullIndex == -1 ? arr : arr.Take(nullIndex).ToArray(); - - } -} diff --git a/Data/MineSharp.SourceGenerator/Generators/VersionMapGenerator.cs b/Data/MineSharp.SourceGenerator/Generators/VersionMapGenerator.cs deleted file mode 100644 index 6bd77d2a..00000000 --- a/Data/MineSharp.SourceGenerator/Generators/VersionMapGenerator.cs +++ /dev/null @@ -1,98 +0,0 @@ -using Humanizer; -using MineSharp.SourceGenerator.Code; -using MineSharp.SourceGenerator.Utils; -using System.Text; - -namespace MineSharp.SourceGenerator.Generators; - -public class VersionMapGenerator : IGenerator -{ - private static VersionMapGenerator? _instance; - - public static VersionMapGenerator GetInstance() - { - if (_instance == null) - _instance = new VersionMapGenerator(); - - return _instance; - } - - public string Name => "VersionMap"; - - private Dictionary> _registered; - - private VersionMapGenerator() - { - this._registered = new Dictionary>(); - } - - - public async Task Run(MinecraftDataWrapper wrapper) - { - var writer = new CodeWriter(); - writer.Disclaimer(); - writer.WriteLine("namespace MineSharp.Data;"); - writer.WriteLine(); - writer.Begin("internal static class VersionMap"); - - foreach (var key in this._registered.Keys) - { - var versionMap = this._registered[key]; - - writer.Begin($"public static Dictionary {key.Pascalize()} {{ get; }} = new()"); - - foreach (var version in versionMap.Keys) - { - var className = this.GetClassName(key, versionMap[version]); - writer.WriteLine($"{{ {Str.String(version)}, {Str.String(className)} }},"); - } - - writer.Finish(semicolon: true); - } - writer.Begin("public static Dictionary Versions { get; } = new()"); - foreach (var version in Config.IncludedVersions) - { - writer.WriteLine($"{{ {Str.String(version)}, {await StringifyVersion(version, wrapper)} }},"); - } - writer.Finish(semicolon: true); - writer.Finish(); - - await File.WriteAllTextAsync( - Path.Join(DirectoryUtils.GetDataSourceDirectory(), "VersionMap.cs"), writer.ToString()); - } - - public void RegisterVersion(string key, string version, string path) - { - path = TrimPath(path); - if (!this._registered.ContainsKey(key)) - this._registered.Add(key, new Dictionary()); - - var map = this._registered[key]; - map.Add(version, path); - } - - public bool IsRegistered(string key, string path) - { - path = TrimPath(path); - if (!this._registered.ContainsKey(key)) - return false; - - var map = this._registered[key]; - return map.ContainsValue(path); - } - - private string TrimPath(string path) - => path.Substring("pc/".Length); - - private string GetClassName(string key, string version) - => $"MineSharp.Data.{key.Pascalize()}.Versions.{key.Pascalize()}_{version.Replace(".", "_")}"; - - private async Task StringifyVersion(string version, MinecraftDataWrapper wrapper) - { - var v = await wrapper.GetVersion(version); - var protocol = (int)v.SelectToken("version")!; - var mcVersion = (string)v.SelectToken("minecraftVersion")!; - - return $"new MinecraftVersion({Str.String(mcVersion)}, {protocol})"; - } -} diff --git a/Data/MineSharp.SourceGenerator/Generators/_Generator.cs b/Data/MineSharp.SourceGenerator/Generators/_Generator.cs new file mode 100644 index 00000000..ff19b0df --- /dev/null +++ b/Data/MineSharp.SourceGenerator/Generators/_Generator.cs @@ -0,0 +1,32 @@ +using MineSharp.SourceGenerator.Code; +using MineSharp.SourceGenerator.Utils; +using Newtonsoft.Json.Linq; + +namespace MineSharp.SourceGenerator.Generators; + +public class Generator(string dataKey, Func selector, string className, string ns) +{ + public async Task Generate(MinecraftDataWrapper wrapper) + { + var set = new HashSet(); + + foreach (var version in Config.IncludedVersions) + { + var array = (JArray)await wrapper.Parse(version, dataKey); + foreach (var token in array) + { + set.Add(selector(token)); + } + } + + var outDir = DirectoryUtils.GetSourceDirectory(Path.Join("Common", ns)); + var counter = 0; + await new EnumGenerator() + { + ClassName = className, + Namespace = $"MineSharp.Core.Common.{ns}", + Outfile = Path.Join(outDir, className + ".cs"), + Entries = set.ToDictionary(x => x, _ => counter++) + }.Write(); + } +} \ No newline at end of file diff --git a/Data/MineSharp.SourceGenerator/Program.cs b/Data/MineSharp.SourceGenerator/Program.cs index eed9b81b..e34d8058 100644 --- a/Data/MineSharp.SourceGenerator/Program.cs +++ b/Data/MineSharp.SourceGenerator/Program.cs @@ -6,37 +6,21 @@ var data = new MinecraftDataWrapper(DirectoryUtils.GetMinecraftDataDirectory()); -var generators = new IGenerator[] { - new BiomeGenerator(), - new BlockGenerator(), - new BlockCollisionShapesGenerator(), - new EffectGenerator(), - new EnchantmentGenerator(), - new EntityGenerator(), - new ItemGenerator(), - new ProtocolGenerator(), - new MaterialGenerator(), - new RecipeGenerator(), - new LanguageGenerator(), - - VersionMapGenerator.GetInstance() +var generators = new [] { + new BiomeGenerator().Run(data), + new BlockGenerator().Run(data), + new EffectGenerator().Run(data), + new EnchantmentGenerator().Run(data), + new EntityGenerator().Run(data), + new ItemGenerator().Run(data), + new ProtocolGenerator().Run(data) }; -if (Directory.Exists(DirectoryUtils.GetDataSourceDirectory())) - Directory.Delete(DirectoryUtils.GetDataSourceDirectory(), true); +if (Directory.Exists(DirectoryUtils.GetSourceDirectory())) + Directory.Delete(DirectoryUtils.GetSourceDirectory(), true); -if (Directory.Exists(DirectoryUtils.GetCoreSourceDirectory())) - Directory.Delete(DirectoryUtils.GetCoreSourceDirectory(), true); +await Task.WhenAll(generators); -foreach (var generator in generators) -{ - await AnsiConsole.Status() - .StartAsync($" Generating {generator.Name}...", async ctx => - { - await generator.Run(data); - AnsiConsole.MarkupLine($" ✅ Generated {generator.Name}"); - }); -} void RecursiveCopy(string source, string target) { @@ -51,5 +35,4 @@ void RecursiveCopy(string source, string target) } } -RecursiveCopy(DirectoryUtils.GetDataSourceDirectory(), DirectoryUtils.GetMineSharpDataProjectDirectory()); -RecursiveCopy(DirectoryUtils.GetCoreSourceDirectory(), DirectoryUtils.GetMineSharpCoreProjectDirectory()); \ No newline at end of file +RecursiveCopy(DirectoryUtils.GetSourceDirectory(), DirectoryUtils.GetMineSharpCoreProjectDirectory()); \ No newline at end of file diff --git a/Data/MineSharp.SourceGenerator/Utils/DirectoryUtils.cs b/Data/MineSharp.SourceGenerator/Utils/DirectoryUtils.cs index c375ef23..2cad73d7 100644 --- a/Data/MineSharp.SourceGenerator/Utils/DirectoryUtils.cs +++ b/Data/MineSharp.SourceGenerator/Utils/DirectoryUtils.cs @@ -12,7 +12,7 @@ public static string GetMinecraftDataDirectory() return Path.Join(GetProjectDirectory(), "minecraft-data"); } - public static string GetCoreSourceDirectory() + public static string GetSourceDirectory() { var current = Environment.CurrentDirectory; var source = Path.Join(current, "CoreSource"); @@ -22,32 +22,10 @@ public static string GetCoreSourceDirectory() return source; } - - public static string GetDataSourceDirectory() - { - var current = Environment.CurrentDirectory; - var source = Path.Join(current, "DataSource"); - - if (!Directory.Exists(source)) - Directory.CreateDirectory(source); - - return source; - } - - public static string GetDataSourceDirectory(string subdirectory) - { - var source = GetDataSourceDirectory(); - - var path = Path.Join(source, subdirectory); - if (!Directory.Exists(path)) - Directory.CreateDirectory(path); - - return path; - } - public static string GetCoreSourceDirectory(string subdirectory) + public static string GetSourceDirectory(string subdirectory) { - var source = GetCoreSourceDirectory(); + var source = GetSourceDirectory(); var path = Path.Join(source, subdirectory); if (!Directory.Exists(path)) @@ -55,12 +33,6 @@ public static string GetCoreSourceDirectory(string subdirectory) return path; } - - public static string GetMineSharpDataProjectDirectory() - { - var project = GetProjectDirectory(); - return Path.Join(project, "..", "MineSharp.Data"); - } public static string GetMineSharpCoreProjectDirectory() { diff --git a/Data/MineSharp.SourceGenerator/Utils/NameUtils.cs b/Data/MineSharp.SourceGenerator/Utils/NameUtils.cs index 3deeab2b..c6e9bd71 100644 --- a/Data/MineSharp.SourceGenerator/Utils/NameUtils.cs +++ b/Data/MineSharp.SourceGenerator/Utils/NameUtils.cs @@ -49,10 +49,20 @@ public static string GetEffectName(string name) public static string GetEnchantmentName(string name) => CommonGetName(name); + + public static string GetEnchantmentCategory(string name) + => CommonGetName(name); public static string GetEntityName(string name) => CommonGetName(name); + public static string GetEntityCategory(string name) + { + if (name == "UNKNOWN") + name = name.ToLower(); + return CommonGetName(name); + } + public static string GetDimensionName(string name) => CommonGetName(name); diff --git a/MineSharp.Bot/BotBuilder.cs b/MineSharp.Bot/BotBuilder.cs index b74d20af..078302f8 100644 --- a/MineSharp.Bot/BotBuilder.cs +++ b/MineSharp.Bot/BotBuilder.cs @@ -216,7 +216,7 @@ public async Task CreateAsync() if (this.data is not null) data = this.data; else if (this.versionStr is not null) - data = MinecraftData.FromVersion(this.versionStr); + data = await MinecraftData.FromVersion(this.versionStr); else if (this.autoDetect) data = await TryAutoDetectVersion(this.proxyProvider, this.hostname, this.port); else throw new ArgumentNullException(nameof(this.data), "No data provided. Set either Data() or AutoDetectVersion(true)"); @@ -274,6 +274,6 @@ private static async Task TryAutoDetectVersion(ProxyFactory facto Logger.Warn($"MineSharp was not tested on server brand '{status.Brand}'"); } - return MinecraftData.FromVersion(status.Version); + return await MinecraftData.FromVersion(status.Version); } } diff --git a/MineSharp.Bot/Plugins/CraftingPlugin.cs b/MineSharp.Bot/Plugins/CraftingPlugin.cs index a79b11e9..ac1b1c5a 100644 --- a/MineSharp.Bot/Plugins/CraftingPlugin.cs +++ b/MineSharp.Bot/Plugins/CraftingPlugin.cs @@ -31,7 +31,7 @@ protected override async Task Init() /// public IEnumerable FindRecipes(ItemType type) { - return this.Bot.Data.Recipes.GetRecipesForItem(type) + return this.Bot.Data.Recipes.ByItem(type)! .Where(recipe => recipe.IngredientsCount.All( kvp => this.windowPlugin!.Inventory!.CountItems(kvp.Key) > kvp.Value)); @@ -84,11 +84,11 @@ public async Task Craft(Recipe recipe, Block? craftingTable = null, int amount = } else craftingWindow = this.windowPlugin!.Inventory!; - var resultType = this.Bot.Data.Items.GetByType(recipe.Result); + var resultType = this.Bot.Data.Items.ByType(recipe.Result)!; var perIteration = resultType.StackSize / recipe.ResultCount; perIteration = recipe.IngredientsCount.Keys - .Select(x => this.Bot.Data.Items.GetByType(x)) + .Select(x => this.Bot.Data.Items.ByType(x)!) .Select(x => x.StackSize) .Prepend(perIteration) .Min(); diff --git a/MineSharp.Bot/Plugins/EntityPlugin.cs b/MineSharp.Bot/Plugins/EntityPlugin.cs index 11da2bf2..338a9cb5 100644 --- a/MineSharp.Bot/Plugins/EntityPlugin.cs +++ b/MineSharp.Bot/Plugins/EntityPlugin.cs @@ -77,7 +77,7 @@ private Task HandleSpawnLivingEntityPacket(SpawnLivingEntityPacket packet) if (!this.IsEnabled) return Task.CompletedTask; - var entityInfo = this.Bot.Data.Entities.GetById(packet.EntityType); + var entityInfo = this.Bot.Data.Entities.ById(packet.EntityType)!; var newEntity = new Entity( entityInfo, packet.EntityId, new Vector3(packet.X, packet.Y, packet.Z), @@ -99,7 +99,7 @@ private Task HandleSpawnEntityPacket(SpawnEntityPacket packet) if (!this.IsEnabled) return Task.CompletedTask; - var entityInfo = this.Bot.Data.Entities.GetById(packet.EntityType); + var entityInfo = this.Bot.Data.Entities.ById(packet.EntityType)!; var newEntity = new Entity( entityInfo, packet.EntityId, new Vector3(packet.X, packet.Y, packet.Z), diff --git a/MineSharp.Bot/Plugins/PlayerPlugin.cs b/MineSharp.Bot/Plugins/PlayerPlugin.cs index d9d6b1e2..61972271 100644 --- a/MineSharp.Bot/Plugins/PlayerPlugin.cs +++ b/MineSharp.Bot/Plugins/PlayerPlugin.cs @@ -148,14 +148,14 @@ protected override async Task Init() this._entities = this.Bot.GetPlugin(); var loginPacketTask = this.Bot.Client.WaitForPacket(); var positionPacketTask = this.Bot.Client.WaitForPacket(); - + await Task.WhenAll(loginPacketTask, positionPacketTask); - + var loginPacket = await loginPacketTask; var positionPacket = await positionPacketTask; var entity = new Entity( - this.Bot.Data.Entities.GetByType(EntityType.Player), + this.Bot.Data.Entities.ByType(EntityType.Player)!, loginPacket.EntityId, new Vector3(positionPacket.X, positionPacket.Y, positionPacket.Z), positionPacket.Pitch, @@ -286,7 +286,7 @@ private Task HandleSpawnPlayer(SpawnPlayerPacket packet) } var entity = new Entity( - this.Bot.Data.Entities.GetByName("player"), + this.Bot.Data.Entities.ByType(EntityType.Player)!, packet.EntityId, new Vector3( packet.X, diff --git a/MineSharp.Bot/Plugins/WindowPlugin.cs b/MineSharp.Bot/Plugins/WindowPlugin.cs index 6dbe89c7..2370b870 100644 --- a/MineSharp.Bot/Plugins/WindowPlugin.cs +++ b/MineSharp.Bot/Plugins/WindowPlugin.cs @@ -139,7 +139,7 @@ public async Task OpenContainer(Block block, int timeoutMs = 10 * 1000) var result = await receive; - var windowInfo = this.Bot.Data.Windows.Windows[result.InventoryType]; + var windowInfo = this.Bot.Data.Windows.ById(result.InventoryType); var window = this.OpenWindow(result.WindowId, windowInfo); this.CurrentlyOpenedWindow = window; diff --git a/MineSharp.Bot/Plugins/WorldPlugin.cs b/MineSharp.Bot/Plugins/WorldPlugin.cs index c57aa52f..c28a5e2e 100644 --- a/MineSharp.Bot/Plugins/WorldPlugin.cs +++ b/MineSharp.Bot/Plugins/WorldPlugin.cs @@ -110,7 +110,7 @@ public async Task MineBlock(Block block, BlockFace? face = null await this.WaitForChunks(); - if (!block.Info.Diggable) + if (block.Info.Unbreakable) return MineBlockStatus.NotDiggable; if (6.0 < this._playerPlugin.Entity!.Position.DistanceTo(block.Position)) @@ -233,7 +233,7 @@ private int CalculateBreakingTime(Block block) if (heldItem != null) { toolMultiplier = block.Info.Materials - .Select(x => this.Bot.Data.Materials.GetToolMultiplier(x, heldItem.Info.Type)) + .Select(x => this.Bot.Data.Materials.GetMultiplier(x, heldItem.Info.Type)) .Max(); } @@ -286,7 +286,7 @@ private Task HandleBlockUpdatePacket(BlockUpdatePacket packet) if (!this.IsEnabled) return Task.CompletedTask; - var blockInfo = this.Bot.Data.Blocks.GetByState(packet.StateId); + var blockInfo = this.Bot.Data.Blocks.ByState(packet.StateId)!; var block = new Block(blockInfo, packet.StateId, packet.Location); this.World!.SetBlock(block); diff --git a/MineSharp.Core/Common/Biomes/BiomeCategory.cs b/MineSharp.Core/Common/Biomes/BiomeCategory.cs index f827f264..5d2c8a18 100644 --- a/MineSharp.Core/Common/Biomes/BiomeCategory.cs +++ b/MineSharp.Core/Common/Biomes/BiomeCategory.cs @@ -8,25 +8,25 @@ namespace MineSharp.Core.Common.Biomes; public enum BiomeCategory { - Mesa = 0, - Jungle = 1, - Nether = 2, - Beach = 3, - Forest = 4, - Ocean = 5, - Underground = 6, - Desert = 7, - TheEnd = 8, - Ice = 9, - Mountain = 10, - Mushroom = 11, - Taiga = 12, - Plains = 13, - River = 14, - Savanna = 15, - Swamp = 16, - None = 17, - ExtremeHills = 18, + None = 0, + Plains = 1, + Ice = 2, + Desert = 3, + Swamp = 4, + Forest = 5, + Taiga = 6, + Savanna = 7, + ExtremeHills = 8, + Jungle = 9, + Mesa = 10, + Mountain = 11, + River = 12, + Beach = 13, + Ocean = 14, + Mushroom = 15, + Underground = 16, + Nether = 17, + TheEnd = 18, } #pragma warning restore CS1591 diff --git a/MineSharp.Core/Common/Biomes/BiomeType.cs b/MineSharp.Core/Common/Biomes/BiomeType.cs index 290d209d..68ea8bf4 100644 --- a/MineSharp.Core/Common/Biomes/BiomeType.cs +++ b/MineSharp.Core/Common/Biomes/BiomeType.cs @@ -8,70 +8,70 @@ namespace MineSharp.Core.Common.Biomes; public enum BiomeType { - Badlands = 0, - BambooJungle = 1, - BasaltDeltas = 2, - Beach = 3, - BirchForest = 4, - CherryGrove = 5, - ColdOcean = 6, - CrimsonForest = 7, - DarkForest = 8, - DeepColdOcean = 9, - DeepDark = 10, - DeepFrozenOcean = 11, - DeepLukewarmOcean = 12, - DeepOcean = 13, - Desert = 14, - DripstoneCaves = 15, - EndBarrens = 16, - EndHighlands = 17, - EndMidlands = 18, - ErodedBadlands = 19, - FlowerForest = 20, - Forest = 21, - FrozenOcean = 22, - FrozenPeaks = 23, - FrozenRiver = 24, - Grove = 25, - IceSpikes = 26, - JaggedPeaks = 27, - Jungle = 28, - LukewarmOcean = 29, - LushCaves = 30, - MangroveSwamp = 31, - Meadow = 32, - MushroomFields = 33, - NetherWastes = 34, - Ocean = 35, - OldGrowthBirchForest = 36, - OldGrowthPineTaiga = 37, - OldGrowthSpruceTaiga = 38, - Plains = 39, - River = 40, - Savanna = 41, - SavannaPlateau = 42, - SmallEndIslands = 43, - SnowyBeach = 44, - SnowyPlains = 45, - SnowySlopes = 46, - SnowyTaiga = 47, - SoulSandValley = 48, - SparseJungle = 49, - StonyPeaks = 50, - StonyShore = 51, - SunflowerPlains = 52, - Swamp = 53, - Taiga = 54, - TheEnd = 55, - TheVoid = 56, - WarmOcean = 57, - WarpedForest = 58, - WindsweptForest = 59, - WindsweptGravellyHills = 60, - WindsweptHills = 61, - WindsweptSavanna = 62, - WoodedBadlands = 63, + TheVoid = 0, + Plains = 1, + SunflowerPlains = 2, + SnowyPlains = 3, + IceSpikes = 4, + Desert = 5, + Swamp = 6, + Forest = 7, + FlowerForest = 8, + BirchForest = 9, + DarkForest = 10, + OldGrowthBirchForest = 11, + OldGrowthPineTaiga = 12, + OldGrowthSpruceTaiga = 13, + Taiga = 14, + SnowyTaiga = 15, + Savanna = 16, + SavannaPlateau = 17, + WindsweptHills = 18, + WindsweptGravellyHills = 19, + WindsweptForest = 20, + WindsweptSavanna = 21, + Jungle = 22, + SparseJungle = 23, + BambooJungle = 24, + Badlands = 25, + ErodedBadlands = 26, + WoodedBadlands = 27, + Meadow = 28, + Grove = 29, + SnowySlopes = 30, + FrozenPeaks = 31, + JaggedPeaks = 32, + StonyPeaks = 33, + River = 34, + FrozenRiver = 35, + Beach = 36, + SnowyBeach = 37, + StonyShore = 38, + WarmOcean = 39, + LukewarmOcean = 40, + DeepLukewarmOcean = 41, + Ocean = 42, + DeepOcean = 43, + ColdOcean = 44, + DeepColdOcean = 45, + FrozenOcean = 46, + DeepFrozenOcean = 47, + MushroomFields = 48, + DripstoneCaves = 49, + LushCaves = 50, + NetherWastes = 51, + WarpedForest = 52, + CrimsonForest = 53, + SoulSandValley = 54, + BasaltDeltas = 55, + TheEnd = 56, + EndHighlands = 57, + EndMidlands = 58, + SmallEndIslands = 59, + EndBarrens = 60, + MangroveSwamp = 61, + DeepDark = 62, + CherryGrove = 63, } #pragma warning restore CS1591 diff --git a/MineSharp.Core/Common/Blocks/BlockType.cs b/MineSharp.Core/Common/Blocks/BlockType.cs index fd656aff..3b962dd7 100644 --- a/MineSharp.Core/Common/Blocks/BlockType.cs +++ b/MineSharp.Core/Common/Blocks/BlockType.cs @@ -26,1047 +26,1047 @@ public enum BlockType BirchPlanks = 15, JunglePlanks = 16, AcaciaPlanks = 17, - CherryPlanks = 18, - DarkOakPlanks = 19, - MangrovePlanks = 20, - BambooPlanks = 21, - BambooMosaic = 22, - OakSapling = 23, - SpruceSapling = 24, - BirchSapling = 25, - JungleSapling = 26, - AcaciaSapling = 27, - CherrySapling = 28, - DarkOakSapling = 29, - MangrovePropagule = 30, - Bedrock = 31, - Water = 32, - Lava = 33, - Sand = 34, - SuspiciousSand = 35, - RedSand = 36, - Gravel = 37, - SuspiciousGravel = 38, - GoldOre = 39, - DeepslateGoldOre = 40, - IronOre = 41, - DeepslateIronOre = 42, - CoalOre = 43, - DeepslateCoalOre = 44, - NetherGoldOre = 45, - OakLog = 46, - SpruceLog = 47, - BirchLog = 48, - JungleLog = 49, - AcaciaLog = 50, - CherryLog = 51, - DarkOakLog = 52, - MangroveLog = 53, - MangroveRoots = 54, - MuddyMangroveRoots = 55, - BambooBlock = 56, - StrippedSpruceLog = 57, - StrippedBirchLog = 58, - StrippedJungleLog = 59, - StrippedAcaciaLog = 60, - StrippedCherryLog = 61, - StrippedDarkOakLog = 62, - StrippedOakLog = 63, - StrippedMangroveLog = 64, - StrippedBambooBlock = 65, - OakWood = 66, - SpruceWood = 67, - BirchWood = 68, - JungleWood = 69, - AcaciaWood = 70, - CherryWood = 71, - DarkOakWood = 72, - MangroveWood = 73, - StrippedOakWood = 74, - StrippedSpruceWood = 75, - StrippedBirchWood = 76, - StrippedJungleWood = 77, - StrippedAcaciaWood = 78, - StrippedCherryWood = 79, - StrippedDarkOakWood = 80, - StrippedMangroveWood = 81, - OakLeaves = 82, - SpruceLeaves = 83, - BirchLeaves = 84, - JungleLeaves = 85, - AcaciaLeaves = 86, - CherryLeaves = 87, - DarkOakLeaves = 88, - MangroveLeaves = 89, - AzaleaLeaves = 90, - FloweringAzaleaLeaves = 91, - Sponge = 92, - WetSponge = 93, - Glass = 94, - LapisOre = 95, - DeepslateLapisOre = 96, - LapisBlock = 97, - Dispenser = 98, - Sandstone = 99, - ChiseledSandstone = 100, - CutSandstone = 101, - NoteBlock = 102, - WhiteBed = 103, - OrangeBed = 104, - MagentaBed = 105, - LightBlueBed = 106, - YellowBed = 107, - LimeBed = 108, - PinkBed = 109, - GrayBed = 110, - LightGrayBed = 111, - CyanBed = 112, - PurpleBed = 113, - BlueBed = 114, - BrownBed = 115, - GreenBed = 116, - RedBed = 117, - BlackBed = 118, - PoweredRail = 119, - DetectorRail = 120, - StickyPiston = 121, - Cobweb = 122, - ShortGrass = 123, - Fern = 124, - DeadBush = 125, - Seagrass = 126, - TallSeagrass = 127, - Piston = 128, - PistonHead = 129, - WhiteWool = 130, - OrangeWool = 131, - MagentaWool = 132, - LightBlueWool = 133, - YellowWool = 134, - LimeWool = 135, - PinkWool = 136, - GrayWool = 137, - LightGrayWool = 138, - CyanWool = 139, - PurpleWool = 140, - BlueWool = 141, - BrownWool = 142, - GreenWool = 143, - RedWool = 144, - BlackWool = 145, - MovingPiston = 146, - Dandelion = 147, - Torchflower = 148, - Poppy = 149, - BlueOrchid = 150, - Allium = 151, - AzureBluet = 152, - RedTulip = 153, - OrangeTulip = 154, - WhiteTulip = 155, - PinkTulip = 156, - OxeyeDaisy = 157, - Cornflower = 158, - WitherRose = 159, - LilyOfTheValley = 160, - BrownMushroom = 161, - RedMushroom = 162, - GoldBlock = 163, - IronBlock = 164, - Bricks = 165, - Tnt = 166, - Bookshelf = 167, - ChiseledBookshelf = 168, - MossyCobblestone = 169, - Obsidian = 170, - Torch = 171, - WallTorch = 172, - Fire = 173, - SoulFire = 174, - Spawner = 175, - OakStairs = 176, - Chest = 177, - RedstoneWire = 178, - DiamondOre = 179, - DeepslateDiamondOre = 180, - DiamondBlock = 181, - CraftingTable = 182, - Wheat = 183, - Farmland = 184, - Furnace = 185, - OakSign = 186, - SpruceSign = 187, - BirchSign = 188, - AcaciaSign = 189, - CherrySign = 190, - JungleSign = 191, - DarkOakSign = 192, - MangroveSign = 193, - BambooSign = 194, - OakDoor = 195, - Ladder = 196, - Rail = 197, - CobblestoneStairs = 198, - OakWallSign = 199, - SpruceWallSign = 200, - BirchWallSign = 201, - AcaciaWallSign = 202, - CherryWallSign = 203, - JungleWallSign = 204, - DarkOakWallSign = 205, - MangroveWallSign = 206, - BambooWallSign = 207, - OakHangingSign = 208, - SpruceHangingSign = 209, - BirchHangingSign = 210, - AcaciaHangingSign = 211, - CherryHangingSign = 212, - JungleHangingSign = 213, - DarkOakHangingSign = 214, - CrimsonHangingSign = 215, - WarpedHangingSign = 216, - MangroveHangingSign = 217, - BambooHangingSign = 218, - OakWallHangingSign = 219, - SpruceWallHangingSign = 220, - BirchWallHangingSign = 221, - AcaciaWallHangingSign = 222, - CherryWallHangingSign = 223, - JungleWallHangingSign = 224, - DarkOakWallHangingSign = 225, - MangroveWallHangingSign = 226, - CrimsonWallHangingSign = 227, - WarpedWallHangingSign = 228, - BambooWallHangingSign = 229, - Lever = 230, - StonePressurePlate = 231, - IronDoor = 232, - OakPressurePlate = 233, - SprucePressurePlate = 234, - BirchPressurePlate = 235, - JunglePressurePlate = 236, - AcaciaPressurePlate = 237, - CherryPressurePlate = 238, - DarkOakPressurePlate = 239, - MangrovePressurePlate = 240, - BambooPressurePlate = 241, - RedstoneOre = 242, - DeepslateRedstoneOre = 243, - RedstoneTorch = 244, - RedstoneWallTorch = 245, - StoneButton = 246, - Snow = 247, - Ice = 248, - SnowBlock = 249, - Cactus = 250, - Clay = 251, - SugarCane = 252, - Jukebox = 253, - OakFence = 254, - Netherrack = 255, - SoulSand = 256, - SoulSoil = 257, - Basalt = 258, - PolishedBasalt = 259, - SoulTorch = 260, - SoulWallTorch = 261, - Glowstone = 262, - NetherPortal = 263, - CarvedPumpkin = 264, - JackOLantern = 265, - Cake = 266, - Repeater = 267, - WhiteStainedGlass = 268, - OrangeStainedGlass = 269, - MagentaStainedGlass = 270, - LightBlueStainedGlass = 271, - YellowStainedGlass = 272, - LimeStainedGlass = 273, - PinkStainedGlass = 274, - GrayStainedGlass = 275, - LightGrayStainedGlass = 276, - CyanStainedGlass = 277, - PurpleStainedGlass = 278, - BlueStainedGlass = 279, - BrownStainedGlass = 280, - GreenStainedGlass = 281, - RedStainedGlass = 282, - BlackStainedGlass = 283, - OakTrapdoor = 284, - SpruceTrapdoor = 285, - BirchTrapdoor = 286, - JungleTrapdoor = 287, - AcaciaTrapdoor = 288, - CherryTrapdoor = 289, - DarkOakTrapdoor = 290, - MangroveTrapdoor = 291, - BambooTrapdoor = 292, - StoneBricks = 293, - MossyStoneBricks = 294, - CrackedStoneBricks = 295, - ChiseledStoneBricks = 296, - PackedMud = 297, - MudBricks = 298, - InfestedStone = 299, - InfestedCobblestone = 300, - InfestedStoneBricks = 301, - InfestedMossyStoneBricks = 302, - InfestedCrackedStoneBricks = 303, - InfestedChiseledStoneBricks = 304, - BrownMushroomBlock = 305, - RedMushroomBlock = 306, - MushroomStem = 307, - IronBars = 308, - Chain = 309, - GlassPane = 310, - Pumpkin = 311, - Melon = 312, - AttachedPumpkinStem = 313, - AttachedMelonStem = 314, - PumpkinStem = 315, - MelonStem = 316, - Vine = 317, - GlowLichen = 318, - OakFenceGate = 319, - BrickStairs = 320, - StoneBrickStairs = 321, - MudBrickStairs = 322, - Mycelium = 323, - LilyPad = 324, - NetherBricks = 325, - NetherBrickFence = 326, - NetherBrickStairs = 327, - NetherWart = 328, - EnchantingTable = 329, - BrewingStand = 330, - Cauldron = 331, - WaterCauldron = 332, - LavaCauldron = 333, - PowderSnowCauldron = 334, - EndPortal = 335, - EndPortalFrame = 336, - EndStone = 337, - DragonEgg = 338, - RedstoneLamp = 339, - Cocoa = 340, - SandstoneStairs = 341, - EmeraldOre = 342, - DeepslateEmeraldOre = 343, - EnderChest = 344, - TripwireHook = 345, - Tripwire = 346, - EmeraldBlock = 347, - SpruceStairs = 348, - BirchStairs = 349, - JungleStairs = 350, - CommandBlock = 351, - Beacon = 352, - CobblestoneWall = 353, - MossyCobblestoneWall = 354, - FlowerPot = 355, - PottedTorchflower = 356, - PottedOakSapling = 357, - PottedSpruceSapling = 358, - PottedBirchSapling = 359, - PottedJungleSapling = 360, - PottedAcaciaSapling = 361, - PottedCherrySapling = 362, - PottedDarkOakSapling = 363, - PottedMangrovePropagule = 364, - PottedFern = 365, - PottedDandelion = 366, - PottedPoppy = 367, - PottedBlueOrchid = 368, - PottedAllium = 369, - PottedAzureBluet = 370, - PottedRedTulip = 371, - PottedOrangeTulip = 372, - PottedWhiteTulip = 373, - PottedPinkTulip = 374, - PottedOxeyeDaisy = 375, - PottedCornflower = 376, - PottedLilyOfTheValley = 377, - PottedWitherRose = 378, - PottedRedMushroom = 379, - PottedBrownMushroom = 380, - PottedDeadBush = 381, - PottedCactus = 382, - Carrots = 383, - Potatoes = 384, - OakButton = 385, - SpruceButton = 386, - BirchButton = 387, - JungleButton = 388, - AcaciaButton = 389, - CherryButton = 390, - DarkOakButton = 391, - MangroveButton = 392, - BambooButton = 393, - SkeletonSkull = 394, - SkeletonWallSkull = 395, - WitherSkeletonSkull = 396, - WitherSkeletonWallSkull = 397, - ZombieHead = 398, - ZombieWallHead = 399, - PlayerHead = 400, - PlayerWallHead = 401, - CreeperHead = 402, - CreeperWallHead = 403, - DragonHead = 404, - DragonWallHead = 405, - PiglinHead = 406, - PiglinWallHead = 407, - Anvil = 408, - ChippedAnvil = 409, - DamagedAnvil = 410, - TrappedChest = 411, - LightWeightedPressurePlate = 412, - HeavyWeightedPressurePlate = 413, - Comparator = 414, - DaylightDetector = 415, - RedstoneBlock = 416, - NetherQuartzOre = 417, - Hopper = 418, - QuartzBlock = 419, - ChiseledQuartzBlock = 420, - QuartzPillar = 421, - QuartzStairs = 422, - ActivatorRail = 423, - Dropper = 424, - WhiteTerracotta = 425, - OrangeTerracotta = 426, - MagentaTerracotta = 427, - LightBlueTerracotta = 428, - YellowTerracotta = 429, - LimeTerracotta = 430, - PinkTerracotta = 431, - GrayTerracotta = 432, - LightGrayTerracotta = 433, - CyanTerracotta = 434, - PurpleTerracotta = 435, - BlueTerracotta = 436, - BrownTerracotta = 437, - GreenTerracotta = 438, - RedTerracotta = 439, - BlackTerracotta = 440, - WhiteStainedGlassPane = 441, - OrangeStainedGlassPane = 442, - MagentaStainedGlassPane = 443, - LightBlueStainedGlassPane = 444, - YellowStainedGlassPane = 445, - LimeStainedGlassPane = 446, - PinkStainedGlassPane = 447, - GrayStainedGlassPane = 448, - LightGrayStainedGlassPane = 449, - CyanStainedGlassPane = 450, - PurpleStainedGlassPane = 451, - BlueStainedGlassPane = 452, - BrownStainedGlassPane = 453, - GreenStainedGlassPane = 454, - RedStainedGlassPane = 455, - BlackStainedGlassPane = 456, - AcaciaStairs = 457, - CherryStairs = 458, - DarkOakStairs = 459, - MangroveStairs = 460, - BambooStairs = 461, - BambooMosaicStairs = 462, - SlimeBlock = 463, - Barrier = 464, - Light = 465, - IronTrapdoor = 466, - Prismarine = 467, - PrismarineBricks = 468, - DarkPrismarine = 469, - PrismarineStairs = 470, - PrismarineBrickStairs = 471, - DarkPrismarineStairs = 472, - PrismarineSlab = 473, - PrismarineBrickSlab = 474, - DarkPrismarineSlab = 475, - SeaLantern = 476, - HayBlock = 477, - WhiteCarpet = 478, - OrangeCarpet = 479, - MagentaCarpet = 480, - LightBlueCarpet = 481, - YellowCarpet = 482, - LimeCarpet = 483, - PinkCarpet = 484, - GrayCarpet = 485, - LightGrayCarpet = 486, - CyanCarpet = 487, - PurpleCarpet = 488, - BlueCarpet = 489, - BrownCarpet = 490, - GreenCarpet = 491, - RedCarpet = 492, - BlackCarpet = 493, - Terracotta = 494, - CoalBlock = 495, - PackedIce = 496, - Sunflower = 497, - Lilac = 498, - RoseBush = 499, - Peony = 500, - TallGrass = 501, - LargeFern = 502, - WhiteBanner = 503, - OrangeBanner = 504, - MagentaBanner = 505, - LightBlueBanner = 506, - YellowBanner = 507, - LimeBanner = 508, - PinkBanner = 509, - GrayBanner = 510, - LightGrayBanner = 511, - CyanBanner = 512, - PurpleBanner = 513, - BlueBanner = 514, - BrownBanner = 515, - GreenBanner = 516, - RedBanner = 517, - BlackBanner = 518, - WhiteWallBanner = 519, - OrangeWallBanner = 520, - MagentaWallBanner = 521, - LightBlueWallBanner = 522, - YellowWallBanner = 523, - LimeWallBanner = 524, - PinkWallBanner = 525, - GrayWallBanner = 526, - LightGrayWallBanner = 527, - CyanWallBanner = 528, - PurpleWallBanner = 529, - BlueWallBanner = 530, - BrownWallBanner = 531, - GreenWallBanner = 532, - RedWallBanner = 533, - BlackWallBanner = 534, - RedSandstone = 535, - ChiseledRedSandstone = 536, - CutRedSandstone = 537, - RedSandstoneStairs = 538, - OakSlab = 539, - SpruceSlab = 540, - BirchSlab = 541, - JungleSlab = 542, - AcaciaSlab = 543, - CherrySlab = 544, - DarkOakSlab = 545, - MangroveSlab = 546, - BambooSlab = 547, - BambooMosaicSlab = 548, - StoneSlab = 549, - SmoothStoneSlab = 550, - SandstoneSlab = 551, - CutSandstoneSlab = 552, - PetrifiedOakSlab = 553, - CobblestoneSlab = 554, - BrickSlab = 555, - StoneBrickSlab = 556, - MudBrickSlab = 557, - NetherBrickSlab = 558, - QuartzSlab = 559, - RedSandstoneSlab = 560, - CutRedSandstoneSlab = 561, - PurpurSlab = 562, - SmoothStone = 563, - SmoothSandstone = 564, - SmoothQuartz = 565, - SmoothRedSandstone = 566, - SpruceFenceGate = 567, - BirchFenceGate = 568, - JungleFenceGate = 569, - AcaciaFenceGate = 570, - CherryFenceGate = 571, - DarkOakFenceGate = 572, - MangroveFenceGate = 573, - BambooFenceGate = 574, - SpruceFence = 575, - BirchFence = 576, - JungleFence = 577, - AcaciaFence = 578, - CherryFence = 579, - DarkOakFence = 580, - MangroveFence = 581, - BambooFence = 582, - SpruceDoor = 583, - BirchDoor = 584, - JungleDoor = 585, - AcaciaDoor = 586, - CherryDoor = 587, - DarkOakDoor = 588, - MangroveDoor = 589, - BambooDoor = 590, - EndRod = 591, - ChorusPlant = 592, - ChorusFlower = 593, - PurpurBlock = 594, - PurpurPillar = 595, - PurpurStairs = 596, - EndStoneBricks = 597, - TorchflowerCrop = 598, - PitcherCrop = 599, - PitcherPlant = 600, - Beetroots = 601, - DirtPath = 602, - EndGateway = 603, - RepeatingCommandBlock = 604, - ChainCommandBlock = 605, - FrostedIce = 606, - MagmaBlock = 607, - NetherWartBlock = 608, - RedNetherBricks = 609, - BoneBlock = 610, - StructureVoid = 611, - Observer = 612, - ShulkerBox = 613, - WhiteShulkerBox = 614, - OrangeShulkerBox = 615, - MagentaShulkerBox = 616, - LightBlueShulkerBox = 617, - YellowShulkerBox = 618, - LimeShulkerBox = 619, - PinkShulkerBox = 620, - GrayShulkerBox = 621, - LightGrayShulkerBox = 622, - CyanShulkerBox = 623, - PurpleShulkerBox = 624, - BlueShulkerBox = 625, - BrownShulkerBox = 626, - GreenShulkerBox = 627, - RedShulkerBox = 628, - BlackShulkerBox = 629, - WhiteGlazedTerracotta = 630, - OrangeGlazedTerracotta = 631, - MagentaGlazedTerracotta = 632, - LightBlueGlazedTerracotta = 633, - YellowGlazedTerracotta = 634, - LimeGlazedTerracotta = 635, - PinkGlazedTerracotta = 636, - GrayGlazedTerracotta = 637, - LightGrayGlazedTerracotta = 638, - CyanGlazedTerracotta = 639, - PurpleGlazedTerracotta = 640, - BlueGlazedTerracotta = 641, - BrownGlazedTerracotta = 642, - GreenGlazedTerracotta = 643, - RedGlazedTerracotta = 644, - BlackGlazedTerracotta = 645, - WhiteConcrete = 646, - OrangeConcrete = 647, - MagentaConcrete = 648, - LightBlueConcrete = 649, - YellowConcrete = 650, - LimeConcrete = 651, - PinkConcrete = 652, - GrayConcrete = 653, - LightGrayConcrete = 654, - CyanConcrete = 655, - PurpleConcrete = 656, - BlueConcrete = 657, - BrownConcrete = 658, - GreenConcrete = 659, - RedConcrete = 660, - BlackConcrete = 661, - WhiteConcretePowder = 662, - OrangeConcretePowder = 663, - MagentaConcretePowder = 664, - LightBlueConcretePowder = 665, - YellowConcretePowder = 666, - LimeConcretePowder = 667, - PinkConcretePowder = 668, - GrayConcretePowder = 669, - LightGrayConcretePowder = 670, - CyanConcretePowder = 671, - PurpleConcretePowder = 672, - BlueConcretePowder = 673, - BrownConcretePowder = 674, - GreenConcretePowder = 675, - RedConcretePowder = 676, - BlackConcretePowder = 677, - Kelp = 678, - KelpPlant = 679, - DriedKelpBlock = 680, - TurtleEgg = 681, - SnifferEgg = 682, - DeadTubeCoralBlock = 683, - DeadBrainCoralBlock = 684, - DeadBubbleCoralBlock = 685, - DeadFireCoralBlock = 686, - DeadHornCoralBlock = 687, - TubeCoralBlock = 688, - BrainCoralBlock = 689, - BubbleCoralBlock = 690, - FireCoralBlock = 691, - HornCoralBlock = 692, - DeadTubeCoral = 693, - DeadBrainCoral = 694, - DeadBubbleCoral = 695, - DeadFireCoral = 696, - DeadHornCoral = 697, - TubeCoral = 698, - BrainCoral = 699, - BubbleCoral = 700, - FireCoral = 701, - HornCoral = 702, - DeadTubeCoralFan = 703, - DeadBrainCoralFan = 704, - DeadBubbleCoralFan = 705, - DeadFireCoralFan = 706, - DeadHornCoralFan = 707, - TubeCoralFan = 708, - BrainCoralFan = 709, - BubbleCoralFan = 710, - FireCoralFan = 711, - HornCoralFan = 712, - DeadTubeCoralWallFan = 713, - DeadBrainCoralWallFan = 714, - DeadBubbleCoralWallFan = 715, - DeadFireCoralWallFan = 716, - DeadHornCoralWallFan = 717, - TubeCoralWallFan = 718, - BrainCoralWallFan = 719, - BubbleCoralWallFan = 720, - FireCoralWallFan = 721, - HornCoralWallFan = 722, - SeaPickle = 723, - BlueIce = 724, - Conduit = 725, - BambooSapling = 726, - Bamboo = 727, - PottedBamboo = 728, - VoidAir = 729, - CaveAir = 730, - BubbleColumn = 731, - PolishedGraniteStairs = 732, - SmoothRedSandstoneStairs = 733, - MossyStoneBrickStairs = 734, - PolishedDioriteStairs = 735, - MossyCobblestoneStairs = 736, - EndStoneBrickStairs = 737, - StoneStairs = 738, - SmoothSandstoneStairs = 739, - SmoothQuartzStairs = 740, - GraniteStairs = 741, - AndesiteStairs = 742, - RedNetherBrickStairs = 743, - PolishedAndesiteStairs = 744, - DioriteStairs = 745, - PolishedGraniteSlab = 746, - SmoothRedSandstoneSlab = 747, - MossyStoneBrickSlab = 748, - PolishedDioriteSlab = 749, - MossyCobblestoneSlab = 750, - EndStoneBrickSlab = 751, - SmoothSandstoneSlab = 752, - SmoothQuartzSlab = 753, - GraniteSlab = 754, - AndesiteSlab = 755, - RedNetherBrickSlab = 756, - PolishedAndesiteSlab = 757, - DioriteSlab = 758, - BrickWall = 759, - PrismarineWall = 760, - RedSandstoneWall = 761, - MossyStoneBrickWall = 762, - GraniteWall = 763, - StoneBrickWall = 764, - MudBrickWall = 765, - NetherBrickWall = 766, - AndesiteWall = 767, - RedNetherBrickWall = 768, - SandstoneWall = 769, - EndStoneBrickWall = 770, - DioriteWall = 771, - Scaffolding = 772, - Loom = 773, - Barrel = 774, - Smoker = 775, - BlastFurnace = 776, - CartographyTable = 777, - FletchingTable = 778, - Grindstone = 779, - Lectern = 780, - SmithingTable = 781, - Stonecutter = 782, - Bell = 783, - Lantern = 784, - SoulLantern = 785, - Campfire = 786, - SoulCampfire = 787, - SweetBerryBush = 788, - WarpedStem = 789, - StrippedWarpedStem = 790, - WarpedHyphae = 791, - StrippedWarpedHyphae = 792, - WarpedNylium = 793, - WarpedFungus = 794, - WarpedWartBlock = 795, - WarpedRoots = 796, - NetherSprouts = 797, - CrimsonStem = 798, - StrippedCrimsonStem = 799, - CrimsonHyphae = 800, - StrippedCrimsonHyphae = 801, - CrimsonNylium = 802, - CrimsonFungus = 803, - Shroomlight = 804, - WeepingVines = 805, - WeepingVinesPlant = 806, - TwistingVines = 807, - TwistingVinesPlant = 808, - CrimsonRoots = 809, - CrimsonPlanks = 810, - WarpedPlanks = 811, - CrimsonSlab = 812, - WarpedSlab = 813, - CrimsonPressurePlate = 814, - WarpedPressurePlate = 815, - CrimsonFence = 816, - WarpedFence = 817, - CrimsonTrapdoor = 818, - WarpedTrapdoor = 819, - CrimsonFenceGate = 820, - WarpedFenceGate = 821, - CrimsonStairs = 822, - WarpedStairs = 823, - CrimsonButton = 824, - WarpedButton = 825, - CrimsonDoor = 826, - WarpedDoor = 827, - CrimsonSign = 828, - WarpedSign = 829, - CrimsonWallSign = 830, - WarpedWallSign = 831, - StructureBlock = 832, - Jigsaw = 833, - Composter = 834, - Target = 835, - BeeNest = 836, - Beehive = 837, - HoneyBlock = 838, - HoneycombBlock = 839, - NetheriteBlock = 840, - AncientDebris = 841, - CryingObsidian = 842, - RespawnAnchor = 843, - PottedCrimsonFungus = 844, - PottedWarpedFungus = 845, - PottedCrimsonRoots = 846, - PottedWarpedRoots = 847, - Lodestone = 848, - Blackstone = 849, - BlackstoneStairs = 850, - BlackstoneWall = 851, - BlackstoneSlab = 852, - PolishedBlackstone = 853, - PolishedBlackstoneBricks = 854, - CrackedPolishedBlackstoneBricks = 855, - ChiseledPolishedBlackstone = 856, - PolishedBlackstoneBrickSlab = 857, - PolishedBlackstoneBrickStairs = 858, - PolishedBlackstoneBrickWall = 859, - GildedBlackstone = 860, - PolishedBlackstoneStairs = 861, - PolishedBlackstoneSlab = 862, - PolishedBlackstonePressurePlate = 863, - PolishedBlackstoneButton = 864, - PolishedBlackstoneWall = 865, - ChiseledNetherBricks = 866, - CrackedNetherBricks = 867, - QuartzBricks = 868, - Candle = 869, - WhiteCandle = 870, - OrangeCandle = 871, - MagentaCandle = 872, - LightBlueCandle = 873, - YellowCandle = 874, - LimeCandle = 875, - PinkCandle = 876, - GrayCandle = 877, - LightGrayCandle = 878, - CyanCandle = 879, - PurpleCandle = 880, - BlueCandle = 881, - BrownCandle = 882, - GreenCandle = 883, - RedCandle = 884, - BlackCandle = 885, - CandleCake = 886, - WhiteCandleCake = 887, - OrangeCandleCake = 888, - MagentaCandleCake = 889, - LightBlueCandleCake = 890, - YellowCandleCake = 891, - LimeCandleCake = 892, - PinkCandleCake = 893, - GrayCandleCake = 894, - LightGrayCandleCake = 895, - CyanCandleCake = 896, - PurpleCandleCake = 897, - BlueCandleCake = 898, - BrownCandleCake = 899, - GreenCandleCake = 900, - RedCandleCake = 901, - BlackCandleCake = 902, - AmethystBlock = 903, - BuddingAmethyst = 904, - AmethystCluster = 905, - LargeAmethystBud = 906, - MediumAmethystBud = 907, - SmallAmethystBud = 908, - Tuff = 909, - TuffSlab = 910, - TuffStairs = 911, - TuffWall = 912, - PolishedTuff = 913, - PolishedTuffSlab = 914, - PolishedTuffStairs = 915, - PolishedTuffWall = 916, - ChiseledTuff = 917, - TuffBricks = 918, - TuffBrickSlab = 919, - TuffBrickStairs = 920, - TuffBrickWall = 921, - ChiseledTuffBricks = 922, - Calcite = 923, - TintedGlass = 924, - PowderSnow = 925, - SculkSensor = 926, - CalibratedSculkSensor = 927, - Sculk = 928, - SculkVein = 929, - SculkCatalyst = 930, - SculkShrieker = 931, - CopperBlock = 932, - ExposedCopper = 933, - WeatheredCopper = 934, - OxidizedCopper = 935, - CopperOre = 936, - DeepslateCopperOre = 937, - OxidizedCutCopper = 938, - WeatheredCutCopper = 939, - ExposedCutCopper = 940, - CutCopper = 941, - OxidizedChiseledCopper = 942, - WeatheredChiseledCopper = 943, - ExposedChiseledCopper = 944, - ChiseledCopper = 945, - WaxedOxidizedChiseledCopper = 946, - WaxedWeatheredChiseledCopper = 947, - WaxedExposedChiseledCopper = 948, - WaxedChiseledCopper = 949, - OxidizedCutCopperStairs = 950, - WeatheredCutCopperStairs = 951, - ExposedCutCopperStairs = 952, - CutCopperStairs = 953, - OxidizedCutCopperSlab = 954, - WeatheredCutCopperSlab = 955, - ExposedCutCopperSlab = 956, - CutCopperSlab = 957, - WaxedCopperBlock = 958, - WaxedWeatheredCopper = 959, - WaxedExposedCopper = 960, - WaxedOxidizedCopper = 961, - WaxedOxidizedCutCopper = 962, - WaxedWeatheredCutCopper = 963, - WaxedExposedCutCopper = 964, - WaxedCutCopper = 965, - WaxedOxidizedCutCopperStairs = 966, - WaxedWeatheredCutCopperStairs = 967, - WaxedExposedCutCopperStairs = 968, - WaxedCutCopperStairs = 969, - WaxedOxidizedCutCopperSlab = 970, - WaxedWeatheredCutCopperSlab = 971, - WaxedExposedCutCopperSlab = 972, - WaxedCutCopperSlab = 973, - CopperDoor = 974, - ExposedCopperDoor = 975, - OxidizedCopperDoor = 976, - WeatheredCopperDoor = 977, - WaxedCopperDoor = 978, - WaxedExposedCopperDoor = 979, - WaxedOxidizedCopperDoor = 980, - WaxedWeatheredCopperDoor = 981, - CopperTrapdoor = 982, - ExposedCopperTrapdoor = 983, - OxidizedCopperTrapdoor = 984, - WeatheredCopperTrapdoor = 985, - WaxedCopperTrapdoor = 986, - WaxedExposedCopperTrapdoor = 987, - WaxedOxidizedCopperTrapdoor = 988, - WaxedWeatheredCopperTrapdoor = 989, - CopperGrate = 990, - ExposedCopperGrate = 991, - WeatheredCopperGrate = 992, - OxidizedCopperGrate = 993, - WaxedCopperGrate = 994, - WaxedExposedCopperGrate = 995, - WaxedWeatheredCopperGrate = 996, - WaxedOxidizedCopperGrate = 997, - CopperBulb = 998, - ExposedCopperBulb = 999, - WeatheredCopperBulb = 1000, - OxidizedCopperBulb = 1001, - WaxedCopperBulb = 1002, - WaxedExposedCopperBulb = 1003, - WaxedWeatheredCopperBulb = 1004, - WaxedOxidizedCopperBulb = 1005, - LightningRod = 1006, - PointedDripstone = 1007, - DripstoneBlock = 1008, - CaveVines = 1009, - CaveVinesPlant = 1010, - SporeBlossom = 1011, - Azalea = 1012, - FloweringAzalea = 1013, - MossCarpet = 1014, - PinkPetals = 1015, - MossBlock = 1016, - BigDripleaf = 1017, - BigDripleafStem = 1018, - SmallDripleaf = 1019, - HangingRoots = 1020, - RootedDirt = 1021, - Mud = 1022, - Deepslate = 1023, - CobbledDeepslate = 1024, - CobbledDeepslateStairs = 1025, - CobbledDeepslateSlab = 1026, - CobbledDeepslateWall = 1027, - PolishedDeepslate = 1028, - PolishedDeepslateStairs = 1029, - PolishedDeepslateSlab = 1030, - PolishedDeepslateWall = 1031, - DeepslateTiles = 1032, - DeepslateTileStairs = 1033, - DeepslateTileSlab = 1034, - DeepslateTileWall = 1035, - DeepslateBricks = 1036, - DeepslateBrickStairs = 1037, - DeepslateBrickSlab = 1038, - DeepslateBrickWall = 1039, - ChiseledDeepslate = 1040, - CrackedDeepslateBricks = 1041, - CrackedDeepslateTiles = 1042, - InfestedDeepslate = 1043, - SmoothBasalt = 1044, - RawIronBlock = 1045, - RawCopperBlock = 1046, - RawGoldBlock = 1047, - PottedAzaleaBush = 1048, - PottedFloweringAzaleaBush = 1049, - OchreFroglight = 1050, - VerdantFroglight = 1051, - PearlescentFroglight = 1052, - Frogspawn = 1053, - ReinforcedDeepslate = 1054, - DecoratedPot = 1055, - Crafter = 1056, - TrialSpawner = 1057, - Grass = 1058, + DarkOakPlanks = 18, + OakSapling = 19, + SpruceSapling = 20, + BirchSapling = 21, + JungleSapling = 22, + AcaciaSapling = 23, + DarkOakSapling = 24, + Bedrock = 25, + Water = 26, + Lava = 27, + Sand = 28, + RedSand = 29, + Gravel = 30, + GoldOre = 31, + DeepslateGoldOre = 32, + IronOre = 33, + DeepslateIronOre = 34, + CoalOre = 35, + DeepslateCoalOre = 36, + NetherGoldOre = 37, + OakLog = 38, + SpruceLog = 39, + BirchLog = 40, + JungleLog = 41, + AcaciaLog = 42, + DarkOakLog = 43, + StrippedSpruceLog = 44, + StrippedBirchLog = 45, + StrippedJungleLog = 46, + StrippedAcaciaLog = 47, + StrippedDarkOakLog = 48, + StrippedOakLog = 49, + OakWood = 50, + SpruceWood = 51, + BirchWood = 52, + JungleWood = 53, + AcaciaWood = 54, + DarkOakWood = 55, + StrippedOakWood = 56, + StrippedSpruceWood = 57, + StrippedBirchWood = 58, + StrippedJungleWood = 59, + StrippedAcaciaWood = 60, + StrippedDarkOakWood = 61, + OakLeaves = 62, + SpruceLeaves = 63, + BirchLeaves = 64, + JungleLeaves = 65, + AcaciaLeaves = 66, + DarkOakLeaves = 67, + AzaleaLeaves = 68, + FloweringAzaleaLeaves = 69, + Sponge = 70, + WetSponge = 71, + Glass = 72, + LapisOre = 73, + DeepslateLapisOre = 74, + LapisBlock = 75, + Dispenser = 76, + Sandstone = 77, + ChiseledSandstone = 78, + CutSandstone = 79, + NoteBlock = 80, + WhiteBed = 81, + OrangeBed = 82, + MagentaBed = 83, + LightBlueBed = 84, + YellowBed = 85, + LimeBed = 86, + PinkBed = 87, + GrayBed = 88, + LightGrayBed = 89, + CyanBed = 90, + PurpleBed = 91, + BlueBed = 92, + BrownBed = 93, + GreenBed = 94, + RedBed = 95, + BlackBed = 96, + PoweredRail = 97, + DetectorRail = 98, + StickyPiston = 99, + Cobweb = 100, + Grass = 101, + Fern = 102, + DeadBush = 103, + Seagrass = 104, + TallSeagrass = 105, + Piston = 106, + PistonHead = 107, + WhiteWool = 108, + OrangeWool = 109, + MagentaWool = 110, + LightBlueWool = 111, + YellowWool = 112, + LimeWool = 113, + PinkWool = 114, + GrayWool = 115, + LightGrayWool = 116, + CyanWool = 117, + PurpleWool = 118, + BlueWool = 119, + BrownWool = 120, + GreenWool = 121, + RedWool = 122, + BlackWool = 123, + MovingPiston = 124, + Dandelion = 125, + Poppy = 126, + BlueOrchid = 127, + Allium = 128, + AzureBluet = 129, + RedTulip = 130, + OrangeTulip = 131, + WhiteTulip = 132, + PinkTulip = 133, + OxeyeDaisy = 134, + Cornflower = 135, + WitherRose = 136, + LilyOfTheValley = 137, + BrownMushroom = 138, + RedMushroom = 139, + GoldBlock = 140, + IronBlock = 141, + Bricks = 142, + Tnt = 143, + Bookshelf = 144, + MossyCobblestone = 145, + Obsidian = 146, + Torch = 147, + WallTorch = 148, + Fire = 149, + SoulFire = 150, + Spawner = 151, + OakStairs = 152, + Chest = 153, + RedstoneWire = 154, + DiamondOre = 155, + DeepslateDiamondOre = 156, + DiamondBlock = 157, + CraftingTable = 158, + Wheat = 159, + Farmland = 160, + Furnace = 161, + OakSign = 162, + SpruceSign = 163, + BirchSign = 164, + AcaciaSign = 165, + JungleSign = 166, + DarkOakSign = 167, + OakDoor = 168, + Ladder = 169, + Rail = 170, + CobblestoneStairs = 171, + OakWallSign = 172, + SpruceWallSign = 173, + BirchWallSign = 174, + AcaciaWallSign = 175, + JungleWallSign = 176, + DarkOakWallSign = 177, + Lever = 178, + StonePressurePlate = 179, + IronDoor = 180, + OakPressurePlate = 181, + SprucePressurePlate = 182, + BirchPressurePlate = 183, + JunglePressurePlate = 184, + AcaciaPressurePlate = 185, + DarkOakPressurePlate = 186, + RedstoneOre = 187, + DeepslateRedstoneOre = 188, + RedstoneTorch = 189, + RedstoneWallTorch = 190, + StoneButton = 191, + Snow = 192, + Ice = 193, + SnowBlock = 194, + Cactus = 195, + Clay = 196, + SugarCane = 197, + Jukebox = 198, + OakFence = 199, + Pumpkin = 200, + Netherrack = 201, + SoulSand = 202, + SoulSoil = 203, + Basalt = 204, + PolishedBasalt = 205, + SoulTorch = 206, + SoulWallTorch = 207, + Glowstone = 208, + NetherPortal = 209, + CarvedPumpkin = 210, + JackOLantern = 211, + Cake = 212, + Repeater = 213, + WhiteStainedGlass = 214, + OrangeStainedGlass = 215, + MagentaStainedGlass = 216, + LightBlueStainedGlass = 217, + YellowStainedGlass = 218, + LimeStainedGlass = 219, + PinkStainedGlass = 220, + GrayStainedGlass = 221, + LightGrayStainedGlass = 222, + CyanStainedGlass = 223, + PurpleStainedGlass = 224, + BlueStainedGlass = 225, + BrownStainedGlass = 226, + GreenStainedGlass = 227, + RedStainedGlass = 228, + BlackStainedGlass = 229, + OakTrapdoor = 230, + SpruceTrapdoor = 231, + BirchTrapdoor = 232, + JungleTrapdoor = 233, + AcaciaTrapdoor = 234, + DarkOakTrapdoor = 235, + StoneBricks = 236, + MossyStoneBricks = 237, + CrackedStoneBricks = 238, + ChiseledStoneBricks = 239, + InfestedStone = 240, + InfestedCobblestone = 241, + InfestedStoneBricks = 242, + InfestedMossyStoneBricks = 243, + InfestedCrackedStoneBricks = 244, + InfestedChiseledStoneBricks = 245, + BrownMushroomBlock = 246, + RedMushroomBlock = 247, + MushroomStem = 248, + IronBars = 249, + Chain = 250, + GlassPane = 251, + Melon = 252, + AttachedPumpkinStem = 253, + AttachedMelonStem = 254, + PumpkinStem = 255, + MelonStem = 256, + Vine = 257, + GlowLichen = 258, + OakFenceGate = 259, + BrickStairs = 260, + StoneBrickStairs = 261, + Mycelium = 262, + LilyPad = 263, + NetherBricks = 264, + NetherBrickFence = 265, + NetherBrickStairs = 266, + NetherWart = 267, + EnchantingTable = 268, + BrewingStand = 269, + Cauldron = 270, + WaterCauldron = 271, + LavaCauldron = 272, + PowderSnowCauldron = 273, + EndPortal = 274, + EndPortalFrame = 275, + EndStone = 276, + DragonEgg = 277, + RedstoneLamp = 278, + Cocoa = 279, + SandstoneStairs = 280, + EmeraldOre = 281, + DeepslateEmeraldOre = 282, + EnderChest = 283, + TripwireHook = 284, + Tripwire = 285, + EmeraldBlock = 286, + SpruceStairs = 287, + BirchStairs = 288, + JungleStairs = 289, + CommandBlock = 290, + Beacon = 291, + CobblestoneWall = 292, + MossyCobblestoneWall = 293, + FlowerPot = 294, + PottedOakSapling = 295, + PottedSpruceSapling = 296, + PottedBirchSapling = 297, + PottedJungleSapling = 298, + PottedAcaciaSapling = 299, + PottedDarkOakSapling = 300, + PottedFern = 301, + PottedDandelion = 302, + PottedPoppy = 303, + PottedBlueOrchid = 304, + PottedAllium = 305, + PottedAzureBluet = 306, + PottedRedTulip = 307, + PottedOrangeTulip = 308, + PottedWhiteTulip = 309, + PottedPinkTulip = 310, + PottedOxeyeDaisy = 311, + PottedCornflower = 312, + PottedLilyOfTheValley = 313, + PottedWitherRose = 314, + PottedRedMushroom = 315, + PottedBrownMushroom = 316, + PottedDeadBush = 317, + PottedCactus = 318, + Carrots = 319, + Potatoes = 320, + OakButton = 321, + SpruceButton = 322, + BirchButton = 323, + JungleButton = 324, + AcaciaButton = 325, + DarkOakButton = 326, + SkeletonSkull = 327, + SkeletonWallSkull = 328, + WitherSkeletonSkull = 329, + WitherSkeletonWallSkull = 330, + ZombieHead = 331, + ZombieWallHead = 332, + PlayerHead = 333, + PlayerWallHead = 334, + CreeperHead = 335, + CreeperWallHead = 336, + DragonHead = 337, + DragonWallHead = 338, + Anvil = 339, + ChippedAnvil = 340, + DamagedAnvil = 341, + TrappedChest = 342, + LightWeightedPressurePlate = 343, + HeavyWeightedPressurePlate = 344, + Comparator = 345, + DaylightDetector = 346, + RedstoneBlock = 347, + NetherQuartzOre = 348, + Hopper = 349, + QuartzBlock = 350, + ChiseledQuartzBlock = 351, + QuartzPillar = 352, + QuartzStairs = 353, + ActivatorRail = 354, + Dropper = 355, + WhiteTerracotta = 356, + OrangeTerracotta = 357, + MagentaTerracotta = 358, + LightBlueTerracotta = 359, + YellowTerracotta = 360, + LimeTerracotta = 361, + PinkTerracotta = 362, + GrayTerracotta = 363, + LightGrayTerracotta = 364, + CyanTerracotta = 365, + PurpleTerracotta = 366, + BlueTerracotta = 367, + BrownTerracotta = 368, + GreenTerracotta = 369, + RedTerracotta = 370, + BlackTerracotta = 371, + WhiteStainedGlassPane = 372, + OrangeStainedGlassPane = 373, + MagentaStainedGlassPane = 374, + LightBlueStainedGlassPane = 375, + YellowStainedGlassPane = 376, + LimeStainedGlassPane = 377, + PinkStainedGlassPane = 378, + GrayStainedGlassPane = 379, + LightGrayStainedGlassPane = 380, + CyanStainedGlassPane = 381, + PurpleStainedGlassPane = 382, + BlueStainedGlassPane = 383, + BrownStainedGlassPane = 384, + GreenStainedGlassPane = 385, + RedStainedGlassPane = 386, + BlackStainedGlassPane = 387, + AcaciaStairs = 388, + DarkOakStairs = 389, + SlimeBlock = 390, + Barrier = 391, + Light = 392, + IronTrapdoor = 393, + Prismarine = 394, + PrismarineBricks = 395, + DarkPrismarine = 396, + PrismarineStairs = 397, + PrismarineBrickStairs = 398, + DarkPrismarineStairs = 399, + PrismarineSlab = 400, + PrismarineBrickSlab = 401, + DarkPrismarineSlab = 402, + SeaLantern = 403, + HayBlock = 404, + WhiteCarpet = 405, + OrangeCarpet = 406, + MagentaCarpet = 407, + LightBlueCarpet = 408, + YellowCarpet = 409, + LimeCarpet = 410, + PinkCarpet = 411, + GrayCarpet = 412, + LightGrayCarpet = 413, + CyanCarpet = 414, + PurpleCarpet = 415, + BlueCarpet = 416, + BrownCarpet = 417, + GreenCarpet = 418, + RedCarpet = 419, + BlackCarpet = 420, + Terracotta = 421, + CoalBlock = 422, + PackedIce = 423, + Sunflower = 424, + Lilac = 425, + RoseBush = 426, + Peony = 427, + TallGrass = 428, + LargeFern = 429, + WhiteBanner = 430, + OrangeBanner = 431, + MagentaBanner = 432, + LightBlueBanner = 433, + YellowBanner = 434, + LimeBanner = 435, + PinkBanner = 436, + GrayBanner = 437, + LightGrayBanner = 438, + CyanBanner = 439, + PurpleBanner = 440, + BlueBanner = 441, + BrownBanner = 442, + GreenBanner = 443, + RedBanner = 444, + BlackBanner = 445, + WhiteWallBanner = 446, + OrangeWallBanner = 447, + MagentaWallBanner = 448, + LightBlueWallBanner = 449, + YellowWallBanner = 450, + LimeWallBanner = 451, + PinkWallBanner = 452, + GrayWallBanner = 453, + LightGrayWallBanner = 454, + CyanWallBanner = 455, + PurpleWallBanner = 456, + BlueWallBanner = 457, + BrownWallBanner = 458, + GreenWallBanner = 459, + RedWallBanner = 460, + BlackWallBanner = 461, + RedSandstone = 462, + ChiseledRedSandstone = 463, + CutRedSandstone = 464, + RedSandstoneStairs = 465, + OakSlab = 466, + SpruceSlab = 467, + BirchSlab = 468, + JungleSlab = 469, + AcaciaSlab = 470, + DarkOakSlab = 471, + StoneSlab = 472, + SmoothStoneSlab = 473, + SandstoneSlab = 474, + CutSandstoneSlab = 475, + PetrifiedOakSlab = 476, + CobblestoneSlab = 477, + BrickSlab = 478, + StoneBrickSlab = 479, + NetherBrickSlab = 480, + QuartzSlab = 481, + RedSandstoneSlab = 482, + CutRedSandstoneSlab = 483, + PurpurSlab = 484, + SmoothStone = 485, + SmoothSandstone = 486, + SmoothQuartz = 487, + SmoothRedSandstone = 488, + SpruceFenceGate = 489, + BirchFenceGate = 490, + JungleFenceGate = 491, + AcaciaFenceGate = 492, + DarkOakFenceGate = 493, + SpruceFence = 494, + BirchFence = 495, + JungleFence = 496, + AcaciaFence = 497, + DarkOakFence = 498, + SpruceDoor = 499, + BirchDoor = 500, + JungleDoor = 501, + AcaciaDoor = 502, + DarkOakDoor = 503, + EndRod = 504, + ChorusPlant = 505, + ChorusFlower = 506, + PurpurBlock = 507, + PurpurPillar = 508, + PurpurStairs = 509, + EndStoneBricks = 510, + Beetroots = 511, + DirtPath = 512, + EndGateway = 513, + RepeatingCommandBlock = 514, + ChainCommandBlock = 515, + FrostedIce = 516, + MagmaBlock = 517, + NetherWartBlock = 518, + RedNetherBricks = 519, + BoneBlock = 520, + StructureVoid = 521, + Observer = 522, + ShulkerBox = 523, + WhiteShulkerBox = 524, + OrangeShulkerBox = 525, + MagentaShulkerBox = 526, + LightBlueShulkerBox = 527, + YellowShulkerBox = 528, + LimeShulkerBox = 529, + PinkShulkerBox = 530, + GrayShulkerBox = 531, + LightGrayShulkerBox = 532, + CyanShulkerBox = 533, + PurpleShulkerBox = 534, + BlueShulkerBox = 535, + BrownShulkerBox = 536, + GreenShulkerBox = 537, + RedShulkerBox = 538, + BlackShulkerBox = 539, + WhiteGlazedTerracotta = 540, + OrangeGlazedTerracotta = 541, + MagentaGlazedTerracotta = 542, + LightBlueGlazedTerracotta = 543, + YellowGlazedTerracotta = 544, + LimeGlazedTerracotta = 545, + PinkGlazedTerracotta = 546, + GrayGlazedTerracotta = 547, + LightGrayGlazedTerracotta = 548, + CyanGlazedTerracotta = 549, + PurpleGlazedTerracotta = 550, + BlueGlazedTerracotta = 551, + BrownGlazedTerracotta = 552, + GreenGlazedTerracotta = 553, + RedGlazedTerracotta = 554, + BlackGlazedTerracotta = 555, + WhiteConcrete = 556, + OrangeConcrete = 557, + MagentaConcrete = 558, + LightBlueConcrete = 559, + YellowConcrete = 560, + LimeConcrete = 561, + PinkConcrete = 562, + GrayConcrete = 563, + LightGrayConcrete = 564, + CyanConcrete = 565, + PurpleConcrete = 566, + BlueConcrete = 567, + BrownConcrete = 568, + GreenConcrete = 569, + RedConcrete = 570, + BlackConcrete = 571, + WhiteConcretePowder = 572, + OrangeConcretePowder = 573, + MagentaConcretePowder = 574, + LightBlueConcretePowder = 575, + YellowConcretePowder = 576, + LimeConcretePowder = 577, + PinkConcretePowder = 578, + GrayConcretePowder = 579, + LightGrayConcretePowder = 580, + CyanConcretePowder = 581, + PurpleConcretePowder = 582, + BlueConcretePowder = 583, + BrownConcretePowder = 584, + GreenConcretePowder = 585, + RedConcretePowder = 586, + BlackConcretePowder = 587, + Kelp = 588, + KelpPlant = 589, + DriedKelpBlock = 590, + TurtleEgg = 591, + DeadTubeCoralBlock = 592, + DeadBrainCoralBlock = 593, + DeadBubbleCoralBlock = 594, + DeadFireCoralBlock = 595, + DeadHornCoralBlock = 596, + TubeCoralBlock = 597, + BrainCoralBlock = 598, + BubbleCoralBlock = 599, + FireCoralBlock = 600, + HornCoralBlock = 601, + DeadTubeCoral = 602, + DeadBrainCoral = 603, + DeadBubbleCoral = 604, + DeadFireCoral = 605, + DeadHornCoral = 606, + TubeCoral = 607, + BrainCoral = 608, + BubbleCoral = 609, + FireCoral = 610, + HornCoral = 611, + DeadTubeCoralFan = 612, + DeadBrainCoralFan = 613, + DeadBubbleCoralFan = 614, + DeadFireCoralFan = 615, + DeadHornCoralFan = 616, + TubeCoralFan = 617, + BrainCoralFan = 618, + BubbleCoralFan = 619, + FireCoralFan = 620, + HornCoralFan = 621, + DeadTubeCoralWallFan = 622, + DeadBrainCoralWallFan = 623, + DeadBubbleCoralWallFan = 624, + DeadFireCoralWallFan = 625, + DeadHornCoralWallFan = 626, + TubeCoralWallFan = 627, + BrainCoralWallFan = 628, + BubbleCoralWallFan = 629, + FireCoralWallFan = 630, + HornCoralWallFan = 631, + SeaPickle = 632, + BlueIce = 633, + Conduit = 634, + BambooSapling = 635, + Bamboo = 636, + PottedBamboo = 637, + VoidAir = 638, + CaveAir = 639, + BubbleColumn = 640, + PolishedGraniteStairs = 641, + SmoothRedSandstoneStairs = 642, + MossyStoneBrickStairs = 643, + PolishedDioriteStairs = 644, + MossyCobblestoneStairs = 645, + EndStoneBrickStairs = 646, + StoneStairs = 647, + SmoothSandstoneStairs = 648, + SmoothQuartzStairs = 649, + GraniteStairs = 650, + AndesiteStairs = 651, + RedNetherBrickStairs = 652, + PolishedAndesiteStairs = 653, + DioriteStairs = 654, + PolishedGraniteSlab = 655, + SmoothRedSandstoneSlab = 656, + MossyStoneBrickSlab = 657, + PolishedDioriteSlab = 658, + MossyCobblestoneSlab = 659, + EndStoneBrickSlab = 660, + SmoothSandstoneSlab = 661, + SmoothQuartzSlab = 662, + GraniteSlab = 663, + AndesiteSlab = 664, + RedNetherBrickSlab = 665, + PolishedAndesiteSlab = 666, + DioriteSlab = 667, + BrickWall = 668, + PrismarineWall = 669, + RedSandstoneWall = 670, + MossyStoneBrickWall = 671, + GraniteWall = 672, + StoneBrickWall = 673, + NetherBrickWall = 674, + AndesiteWall = 675, + RedNetherBrickWall = 676, + SandstoneWall = 677, + EndStoneBrickWall = 678, + DioriteWall = 679, + Scaffolding = 680, + Loom = 681, + Barrel = 682, + Smoker = 683, + BlastFurnace = 684, + CartographyTable = 685, + FletchingTable = 686, + Grindstone = 687, + Lectern = 688, + SmithingTable = 689, + Stonecutter = 690, + Bell = 691, + Lantern = 692, + SoulLantern = 693, + Campfire = 694, + SoulCampfire = 695, + SweetBerryBush = 696, + WarpedStem = 697, + StrippedWarpedStem = 698, + WarpedHyphae = 699, + StrippedWarpedHyphae = 700, + WarpedNylium = 701, + WarpedFungus = 702, + WarpedWartBlock = 703, + WarpedRoots = 704, + NetherSprouts = 705, + CrimsonStem = 706, + StrippedCrimsonStem = 707, + CrimsonHyphae = 708, + StrippedCrimsonHyphae = 709, + CrimsonNylium = 710, + CrimsonFungus = 711, + Shroomlight = 712, + WeepingVines = 713, + WeepingVinesPlant = 714, + TwistingVines = 715, + TwistingVinesPlant = 716, + CrimsonRoots = 717, + CrimsonPlanks = 718, + WarpedPlanks = 719, + CrimsonSlab = 720, + WarpedSlab = 721, + CrimsonPressurePlate = 722, + WarpedPressurePlate = 723, + CrimsonFence = 724, + WarpedFence = 725, + CrimsonTrapdoor = 726, + WarpedTrapdoor = 727, + CrimsonFenceGate = 728, + WarpedFenceGate = 729, + CrimsonStairs = 730, + WarpedStairs = 731, + CrimsonButton = 732, + WarpedButton = 733, + CrimsonDoor = 734, + WarpedDoor = 735, + CrimsonSign = 736, + WarpedSign = 737, + CrimsonWallSign = 738, + WarpedWallSign = 739, + StructureBlock = 740, + Jigsaw = 741, + Composter = 742, + Target = 743, + BeeNest = 744, + Beehive = 745, + HoneyBlock = 746, + HoneycombBlock = 747, + NetheriteBlock = 748, + AncientDebris = 749, + CryingObsidian = 750, + RespawnAnchor = 751, + PottedCrimsonFungus = 752, + PottedWarpedFungus = 753, + PottedCrimsonRoots = 754, + PottedWarpedRoots = 755, + Lodestone = 756, + Blackstone = 757, + BlackstoneStairs = 758, + BlackstoneWall = 759, + BlackstoneSlab = 760, + PolishedBlackstone = 761, + PolishedBlackstoneBricks = 762, + CrackedPolishedBlackstoneBricks = 763, + ChiseledPolishedBlackstone = 764, + PolishedBlackstoneBrickSlab = 765, + PolishedBlackstoneBrickStairs = 766, + PolishedBlackstoneBrickWall = 767, + GildedBlackstone = 768, + PolishedBlackstoneStairs = 769, + PolishedBlackstoneSlab = 770, + PolishedBlackstonePressurePlate = 771, + PolishedBlackstoneButton = 772, + PolishedBlackstoneWall = 773, + ChiseledNetherBricks = 774, + CrackedNetherBricks = 775, + QuartzBricks = 776, + Candle = 777, + WhiteCandle = 778, + OrangeCandle = 779, + MagentaCandle = 780, + LightBlueCandle = 781, + YellowCandle = 782, + LimeCandle = 783, + PinkCandle = 784, + GrayCandle = 785, + LightGrayCandle = 786, + CyanCandle = 787, + PurpleCandle = 788, + BlueCandle = 789, + BrownCandle = 790, + GreenCandle = 791, + RedCandle = 792, + BlackCandle = 793, + CandleCake = 794, + WhiteCandleCake = 795, + OrangeCandleCake = 796, + MagentaCandleCake = 797, + LightBlueCandleCake = 798, + YellowCandleCake = 799, + LimeCandleCake = 800, + PinkCandleCake = 801, + GrayCandleCake = 802, + LightGrayCandleCake = 803, + CyanCandleCake = 804, + PurpleCandleCake = 805, + BlueCandleCake = 806, + BrownCandleCake = 807, + GreenCandleCake = 808, + RedCandleCake = 809, + BlackCandleCake = 810, + AmethystBlock = 811, + BuddingAmethyst = 812, + AmethystCluster = 813, + LargeAmethystBud = 814, + MediumAmethystBud = 815, + SmallAmethystBud = 816, + Tuff = 817, + Calcite = 818, + TintedGlass = 819, + PowderSnow = 820, + SculkSensor = 821, + OxidizedCopper = 822, + WeatheredCopper = 823, + ExposedCopper = 824, + CopperBlock = 825, + CopperOre = 826, + DeepslateCopperOre = 827, + OxidizedCutCopper = 828, + WeatheredCutCopper = 829, + ExposedCutCopper = 830, + CutCopper = 831, + OxidizedCutCopperStairs = 832, + WeatheredCutCopperStairs = 833, + ExposedCutCopperStairs = 834, + CutCopperStairs = 835, + OxidizedCutCopperSlab = 836, + WeatheredCutCopperSlab = 837, + ExposedCutCopperSlab = 838, + CutCopperSlab = 839, + WaxedCopperBlock = 840, + WaxedWeatheredCopper = 841, + WaxedExposedCopper = 842, + WaxedOxidizedCopper = 843, + WaxedOxidizedCutCopper = 844, + WaxedWeatheredCutCopper = 845, + WaxedExposedCutCopper = 846, + WaxedCutCopper = 847, + WaxedOxidizedCutCopperStairs = 848, + WaxedWeatheredCutCopperStairs = 849, + WaxedExposedCutCopperStairs = 850, + WaxedCutCopperStairs = 851, + WaxedOxidizedCutCopperSlab = 852, + WaxedWeatheredCutCopperSlab = 853, + WaxedExposedCutCopperSlab = 854, + WaxedCutCopperSlab = 855, + LightningRod = 856, + PointedDripstone = 857, + DripstoneBlock = 858, + CaveVines = 859, + CaveVinesPlant = 860, + SporeBlossom = 861, + Azalea = 862, + FloweringAzalea = 863, + MossCarpet = 864, + MossBlock = 865, + BigDripleaf = 866, + BigDripleafStem = 867, + SmallDripleaf = 868, + HangingRoots = 869, + RootedDirt = 870, + Deepslate = 871, + CobbledDeepslate = 872, + CobbledDeepslateStairs = 873, + CobbledDeepslateSlab = 874, + CobbledDeepslateWall = 875, + PolishedDeepslate = 876, + PolishedDeepslateStairs = 877, + PolishedDeepslateSlab = 878, + PolishedDeepslateWall = 879, + DeepslateTiles = 880, + DeepslateTileStairs = 881, + DeepslateTileSlab = 882, + DeepslateTileWall = 883, + DeepslateBricks = 884, + DeepslateBrickStairs = 885, + DeepslateBrickSlab = 886, + DeepslateBrickWall = 887, + ChiseledDeepslate = 888, + CrackedDeepslateBricks = 889, + CrackedDeepslateTiles = 890, + InfestedDeepslate = 891, + SmoothBasalt = 892, + RawIronBlock = 893, + RawCopperBlock = 894, + RawGoldBlock = 895, + PottedAzaleaBush = 896, + PottedFloweringAzaleaBush = 897, + MangrovePlanks = 898, + MangrovePropagule = 899, + MangroveLog = 900, + MangroveRoots = 901, + MuddyMangroveRoots = 902, + StrippedMangroveLog = 903, + MangroveWood = 904, + StrippedMangroveWood = 905, + MangroveLeaves = 906, + MangroveSign = 907, + MangroveWallSign = 908, + MangrovePressurePlate = 909, + MangroveTrapdoor = 910, + PackedMud = 911, + MudBricks = 912, + MudBrickStairs = 913, + PottedMangrovePropagule = 914, + MangroveButton = 915, + MangroveStairs = 916, + MangroveSlab = 917, + MudBrickSlab = 918, + MangroveFenceGate = 919, + MangroveFence = 920, + MangroveDoor = 921, + MudBrickWall = 922, + Sculk = 923, + SculkVein = 924, + SculkCatalyst = 925, + SculkShrieker = 926, + Mud = 927, + OchreFroglight = 928, + VerdantFroglight = 929, + PearlescentFroglight = 930, + Frogspawn = 931, + ReinforcedDeepslate = 932, + BambooPlanks = 933, + BambooMosaic = 934, + BambooBlock = 935, + StrippedBambooBlock = 936, + ChiseledBookshelf = 937, + BambooSign = 938, + BambooWallSign = 939, + OakHangingSign = 940, + SpruceHangingSign = 941, + BirchHangingSign = 942, + AcaciaHangingSign = 943, + JungleHangingSign = 944, + DarkOakHangingSign = 945, + CrimsonHangingSign = 946, + WarpedHangingSign = 947, + MangroveHangingSign = 948, + BambooHangingSign = 949, + OakWallHangingSign = 950, + SpruceWallHangingSign = 951, + BirchWallHangingSign = 952, + AcaciaWallHangingSign = 953, + JungleWallHangingSign = 954, + DarkOakWallHangingSign = 955, + MangroveWallHangingSign = 956, + CrimsonWallHangingSign = 957, + WarpedWallHangingSign = 958, + BambooWallHangingSign = 959, + BambooPressurePlate = 960, + BambooTrapdoor = 961, + BambooButton = 962, + PiglinHead = 963, + PiglinWallHead = 964, + BambooStairs = 965, + BambooMosaicStairs = 966, + BambooSlab = 967, + BambooMosaicSlab = 968, + BambooFenceGate = 969, + BambooFence = 970, + BambooDoor = 971, + CherryPlanks = 972, + CherrySapling = 973, + SuspiciousSand = 974, + CherryLog = 975, + StrippedCherryLog = 976, + CherryWood = 977, + StrippedCherryWood = 978, + CherryLeaves = 979, + Torchflower = 980, + CherrySign = 981, + CherryWallSign = 982, + CherryHangingSign = 983, + CherryWallHangingSign = 984, + CherryPressurePlate = 985, + CherryTrapdoor = 986, + PottedTorchflower = 987, + PottedCherrySapling = 988, + CherryButton = 989, + CherryStairs = 990, + CherrySlab = 991, + CherryFenceGate = 992, + CherryFence = 993, + CherryDoor = 994, + TorchflowerCrop = 995, + PinkPetals = 996, + DecoratedPot = 997, + SuspiciousGravel = 998, + PitcherCrop = 999, + PitcherPlant = 1000, + SnifferEgg = 1001, + CalibratedSculkSensor = 1002, + ShortGrass = 1003, + TuffSlab = 1004, + TuffStairs = 1005, + TuffWall = 1006, + PolishedTuff = 1007, + PolishedTuffSlab = 1008, + PolishedTuffStairs = 1009, + PolishedTuffWall = 1010, + ChiseledTuff = 1011, + TuffBricks = 1012, + TuffBrickSlab = 1013, + TuffBrickStairs = 1014, + TuffBrickWall = 1015, + ChiseledTuffBricks = 1016, + OxidizedChiseledCopper = 1017, + WeatheredChiseledCopper = 1018, + ExposedChiseledCopper = 1019, + ChiseledCopper = 1020, + WaxedOxidizedChiseledCopper = 1021, + WaxedWeatheredChiseledCopper = 1022, + WaxedExposedChiseledCopper = 1023, + WaxedChiseledCopper = 1024, + CopperDoor = 1025, + ExposedCopperDoor = 1026, + OxidizedCopperDoor = 1027, + WeatheredCopperDoor = 1028, + WaxedCopperDoor = 1029, + WaxedExposedCopperDoor = 1030, + WaxedOxidizedCopperDoor = 1031, + WaxedWeatheredCopperDoor = 1032, + CopperTrapdoor = 1033, + ExposedCopperTrapdoor = 1034, + OxidizedCopperTrapdoor = 1035, + WeatheredCopperTrapdoor = 1036, + WaxedCopperTrapdoor = 1037, + WaxedExposedCopperTrapdoor = 1038, + WaxedOxidizedCopperTrapdoor = 1039, + WaxedWeatheredCopperTrapdoor = 1040, + CopperGrate = 1041, + ExposedCopperGrate = 1042, + WeatheredCopperGrate = 1043, + OxidizedCopperGrate = 1044, + WaxedCopperGrate = 1045, + WaxedExposedCopperGrate = 1046, + WaxedWeatheredCopperGrate = 1047, + WaxedOxidizedCopperGrate = 1048, + CopperBulb = 1049, + ExposedCopperBulb = 1050, + WeatheredCopperBulb = 1051, + OxidizedCopperBulb = 1052, + WaxedCopperBulb = 1053, + WaxedExposedCopperBulb = 1054, + WaxedWeatheredCopperBulb = 1055, + WaxedOxidizedCopperBulb = 1056, + Crafter = 1057, + TrialSpawner = 1058, } #pragma warning restore CS1591 diff --git a/MineSharp.Core/Common/Enchantments/EnchantmentCategory.cs b/MineSharp.Core/Common/Enchantments/EnchantmentCategory.cs index 0d304294..6ca8343c 100644 --- a/MineSharp.Core/Common/Enchantments/EnchantmentCategory.cs +++ b/MineSharp.Core/Common/Enchantments/EnchantmentCategory.cs @@ -13,15 +13,15 @@ public enum EnchantmentCategory ArmorHead = 2, ArmorChest = 3, Wearable = 4, - ArmorLegs = 5, - Weapon = 6, - Digger = 7, - Breakable = 8, - Bow = 9, - FishingRod = 10, - Trident = 11, - Crossbow = 12, - Vanishable = 13, + Weapon = 5, + Digger = 6, + Breakable = 7, + Bow = 8, + FishingRod = 9, + Trident = 10, + Crossbow = 11, + Vanishable = 12, + ArmorLegs = 13, } #pragma warning restore CS1591 diff --git a/MineSharp.Core/Common/Enchantments/EnchantmentType.cs b/MineSharp.Core/Common/Enchantments/EnchantmentType.cs index 38c24449..38876288 100644 --- a/MineSharp.Core/Common/Enchantments/EnchantmentType.cs +++ b/MineSharp.Core/Common/Enchantments/EnchantmentType.cs @@ -20,33 +20,33 @@ public enum EnchantmentType FrostWalker = 9, BindingCurse = 10, SoulSpeed = 11, - SwiftSneak = 12, - Sharpness = 13, - Smite = 14, - BaneOfArthropods = 15, - Knockback = 16, - FireAspect = 17, - Looting = 18, - Sweeping = 19, - Efficiency = 20, - SilkTouch = 21, - Unbreaking = 22, - Fortune = 23, - Power = 24, - Punch = 25, - Flame = 26, - Infinity = 27, - LuckOfTheSea = 28, - Lure = 29, - Loyalty = 30, - Impaling = 31, - Riptide = 32, - Channeling = 33, - Multishot = 34, - QuickCharge = 35, - Piercing = 36, - Mending = 37, - VanishingCurse = 38, + Sharpness = 12, + Smite = 13, + BaneOfArthropods = 14, + Knockback = 15, + FireAspect = 16, + Looting = 17, + Sweeping = 18, + Efficiency = 19, + SilkTouch = 20, + Unbreaking = 21, + Fortune = 22, + Power = 23, + Punch = 24, + Flame = 25, + Infinity = 26, + LuckOfTheSea = 27, + Lure = 28, + Loyalty = 29, + Impaling = 30, + Riptide = 31, + Channeling = 32, + Multishot = 33, + QuickCharge = 34, + Piercing = 35, + Mending = 36, + VanishingCurse = 37, + SwiftSneak = 38, } #pragma warning restore CS1591 diff --git a/MineSharp.Core/Common/Entities/EntityCategory.cs b/MineSharp.Core/Common/Entities/EntityCategory.cs index 094dbb1b..be461614 100644 --- a/MineSharp.Core/Common/Entities/EntityCategory.cs +++ b/MineSharp.Core/Common/Entities/EntityCategory.cs @@ -8,8 +8,8 @@ namespace MineSharp.Core.Common.Entities; public enum EntityCategory { - PassiveMobs = 0, - Unknown = 1, + Unknown = 0, + PassiveMobs = 1, Immobile = 2, Projectiles = 3, HostileMobs = 4, diff --git a/MineSharp.Core/Common/Entities/EntityType.cs b/MineSharp.Core/Common/Entities/EntityType.cs index 26ff07c3..d5c07721 100644 --- a/MineSharp.Core/Common/Entities/EntityType.cs +++ b/MineSharp.Core/Common/Entities/EntityType.cs @@ -8,132 +8,132 @@ namespace MineSharp.Core.Common.Entities; public enum EntityType { - Allay = 0, - AreaEffectCloud = 1, - ArmorStand = 2, - Arrow = 3, - Axolotl = 4, - Bat = 5, - Bee = 6, - Blaze = 7, - BlockDisplay = 8, - Boat = 9, - Breeze = 10, - Camel = 11, - Cat = 12, - CaveSpider = 13, - ChestBoat = 14, - ChestMinecart = 15, - Chicken = 16, - Cod = 17, - CommandBlockMinecart = 18, - Cow = 19, - Creeper = 20, - Dolphin = 21, - Donkey = 22, - DragonFireball = 23, - Drowned = 24, - Egg = 25, - ElderGuardian = 26, - EndCrystal = 27, - EnderDragon = 28, - EnderPearl = 29, - Enderman = 30, - Endermite = 31, - Evoker = 32, - EvokerFangs = 33, - ExperienceBottle = 34, - ExperienceOrb = 35, - EyeOfEnder = 36, - FallingBlock = 37, - FireworkRocket = 38, - Fox = 39, - Frog = 40, - FurnaceMinecart = 41, - Ghast = 42, - Giant = 43, - GlowItemFrame = 44, - GlowSquid = 45, - Goat = 46, - Guardian = 47, - Hoglin = 48, - HopperMinecart = 49, - Horse = 50, - Husk = 51, - Illusioner = 52, - Interaction = 53, - IronGolem = 54, - Item = 55, - ItemDisplay = 56, - ItemFrame = 57, - Fireball = 58, - LeashKnot = 59, - LightningBolt = 60, - Llama = 61, - LlamaSpit = 62, - MagmaCube = 63, - Marker = 64, - Minecart = 65, - Mooshroom = 66, - Mule = 67, - Ocelot = 68, - Painting = 69, - Panda = 70, - Parrot = 71, - Phantom = 72, - Pig = 73, - Piglin = 74, - PiglinBrute = 75, - Pillager = 76, - PolarBear = 77, - Potion = 78, - Pufferfish = 79, - Rabbit = 80, - Ravager = 81, - Salmon = 82, - Sheep = 83, - Shulker = 84, - ShulkerBullet = 85, - Silverfish = 86, - Skeleton = 87, - SkeletonHorse = 88, - Slime = 89, - SmallFireball = 90, - Sniffer = 91, - SnowGolem = 92, - Snowball = 93, - SpawnerMinecart = 94, - SpectralArrow = 95, - Spider = 96, - Squid = 97, - Stray = 98, - Strider = 99, - Tadpole = 100, - TextDisplay = 101, - Tnt = 102, - TntMinecart = 103, - TraderLlama = 104, - Trident = 105, - TropicalFish = 106, - Turtle = 107, - Vex = 108, - Villager = 109, - Vindicator = 110, - WanderingTrader = 111, - Warden = 112, - WindCharge = 113, - Witch = 114, - Wither = 115, - WitherSkeleton = 116, - WitherSkull = 117, - Wolf = 118, - Zoglin = 119, - Zombie = 120, - ZombieHorse = 121, - ZombieVillager = 122, - ZombifiedPiglin = 123, - Player = 124, - FishingBobber = 125, + AreaEffectCloud = 0, + ArmorStand = 1, + Arrow = 2, + Axolotl = 3, + Bat = 4, + Bee = 5, + Blaze = 6, + Boat = 7, + Cat = 8, + CaveSpider = 9, + Chicken = 10, + Cod = 11, + Cow = 12, + Creeper = 13, + Dolphin = 14, + Donkey = 15, + DragonFireball = 16, + Drowned = 17, + ElderGuardian = 18, + EndCrystal = 19, + EnderDragon = 20, + Enderman = 21, + Endermite = 22, + Evoker = 23, + EvokerFangs = 24, + ExperienceOrb = 25, + EyeOfEnder = 26, + FallingBlock = 27, + FireworkRocket = 28, + Fox = 29, + Ghast = 30, + Giant = 31, + GlowItemFrame = 32, + GlowSquid = 33, + Goat = 34, + Guardian = 35, + Hoglin = 36, + Horse = 37, + Husk = 38, + Illusioner = 39, + IronGolem = 40, + Item = 41, + ItemFrame = 42, + Fireball = 43, + LeashKnot = 44, + LightningBolt = 45, + Llama = 46, + LlamaSpit = 47, + MagmaCube = 48, + Marker = 49, + Minecart = 50, + ChestMinecart = 51, + CommandBlockMinecart = 52, + FurnaceMinecart = 53, + HopperMinecart = 54, + SpawnerMinecart = 55, + TntMinecart = 56, + Mule = 57, + Mooshroom = 58, + Ocelot = 59, + Painting = 60, + Panda = 61, + Parrot = 62, + Phantom = 63, + Pig = 64, + Piglin = 65, + PiglinBrute = 66, + Pillager = 67, + PolarBear = 68, + Tnt = 69, + Pufferfish = 70, + Rabbit = 71, + Ravager = 72, + Salmon = 73, + Sheep = 74, + Shulker = 75, + ShulkerBullet = 76, + Silverfish = 77, + Skeleton = 78, + SkeletonHorse = 79, + Slime = 80, + SmallFireball = 81, + SnowGolem = 82, + Snowball = 83, + SpectralArrow = 84, + Spider = 85, + Squid = 86, + Stray = 87, + Strider = 88, + Egg = 89, + EnderPearl = 90, + ExperienceBottle = 91, + Potion = 92, + Trident = 93, + TraderLlama = 94, + TropicalFish = 95, + Turtle = 96, + Vex = 97, + Villager = 98, + Vindicator = 99, + WanderingTrader = 100, + Witch = 101, + Wither = 102, + WitherSkeleton = 103, + WitherSkull = 104, + Wolf = 105, + Zoglin = 106, + Zombie = 107, + ZombieHorse = 108, + ZombieVillager = 109, + ZombifiedPiglin = 110, + Player = 111, + FishingBobber = 112, + Allay = 113, + ChestBoat = 114, + Frog = 115, + Tadpole = 116, + Warden = 117, + Camel = 118, + BlockDisplay = 119, + Interaction = 120, + ItemDisplay = 121, + Sniffer = 122, + TextDisplay = 123, + Breeze = 124, + WindCharge = 125, } #pragma warning restore CS1591 diff --git a/MineSharp.Core/Common/Items/ItemType.cs b/MineSharp.Core/Common/Items/ItemType.cs index b1c5142e..d1fb3533 100644 --- a/MineSharp.Core/Common/Items/ItemType.cs +++ b/MineSharp.Core/Common/Items/ItemType.cs @@ -8,1319 +8,1319 @@ namespace MineSharp.Core.Common.Items; public enum ItemType { - Air = 0, - Stone = 1, - Granite = 2, - PolishedGranite = 3, - Diorite = 4, - PolishedDiorite = 5, - Andesite = 6, - PolishedAndesite = 7, - Deepslate = 8, - CobbledDeepslate = 9, - PolishedDeepslate = 10, - Calcite = 11, - Tuff = 12, - TuffSlab = 13, - TuffStairs = 14, - TuffWall = 15, - ChiseledTuff = 16, - PolishedTuff = 17, - PolishedTuffSlab = 18, - PolishedTuffStairs = 19, - PolishedTuffWall = 20, - TuffBricks = 21, - TuffBrickSlab = 22, - TuffBrickStairs = 23, - TuffBrickWall = 24, - ChiseledTuffBricks = 25, - DripstoneBlock = 26, - GrassBlock = 27, - Dirt = 28, - CoarseDirt = 29, - Podzol = 30, - RootedDirt = 31, - Mud = 32, - CrimsonNylium = 33, - WarpedNylium = 34, - Cobblestone = 35, - OakPlanks = 36, - SprucePlanks = 37, - BirchPlanks = 38, - JunglePlanks = 39, - AcaciaPlanks = 40, - CherryPlanks = 41, - DarkOakPlanks = 42, - MangrovePlanks = 43, - BambooPlanks = 44, - CrimsonPlanks = 45, - WarpedPlanks = 46, - BambooMosaic = 47, - OakSapling = 48, - SpruceSapling = 49, - BirchSapling = 50, - JungleSapling = 51, - AcaciaSapling = 52, - CherrySapling = 53, - DarkOakSapling = 54, - MangrovePropagule = 55, - Bedrock = 56, - Sand = 57, - SuspiciousSand = 58, - SuspiciousGravel = 59, - RedSand = 60, - Gravel = 61, - CoalOre = 62, - DeepslateCoalOre = 63, - IronOre = 64, - DeepslateIronOre = 65, - CopperOre = 66, - DeepslateCopperOre = 67, - GoldOre = 68, - DeepslateGoldOre = 69, - RedstoneOre = 70, - DeepslateRedstoneOre = 71, - EmeraldOre = 72, - DeepslateEmeraldOre = 73, - LapisOre = 74, - DeepslateLapisOre = 75, - DiamondOre = 76, - DeepslateDiamondOre = 77, - NetherGoldOre = 78, - NetherQuartzOre = 79, - AncientDebris = 80, - CoalBlock = 81, - RawIronBlock = 82, - RawCopperBlock = 83, - RawGoldBlock = 84, - AmethystBlock = 85, - BuddingAmethyst = 86, - IronBlock = 87, - CopperBlock = 88, - GoldBlock = 89, - DiamondBlock = 90, - NetheriteBlock = 91, - ExposedCopper = 92, - WeatheredCopper = 93, - OxidizedCopper = 94, - ChiseledCopper = 95, - ExposedChiseledCopper = 96, - WeatheredChiseledCopper = 97, - OxidizedChiseledCopper = 98, - CutCopper = 99, - ExposedCutCopper = 100, - WeatheredCutCopper = 101, - OxidizedCutCopper = 102, - CutCopperStairs = 103, - ExposedCutCopperStairs = 104, - WeatheredCutCopperStairs = 105, - OxidizedCutCopperStairs = 106, - CutCopperSlab = 107, - ExposedCutCopperSlab = 108, - WeatheredCutCopperSlab = 109, - OxidizedCutCopperSlab = 110, - WaxedCopperBlock = 111, - WaxedExposedCopper = 112, - WaxedWeatheredCopper = 113, - WaxedOxidizedCopper = 114, - WaxedChiseledCopper = 115, - WaxedExposedChiseledCopper = 116, - WaxedWeatheredChiseledCopper = 117, - WaxedOxidizedChiseledCopper = 118, - WaxedCutCopper = 119, - WaxedExposedCutCopper = 120, - WaxedWeatheredCutCopper = 121, - WaxedOxidizedCutCopper = 122, - WaxedCutCopperStairs = 123, - WaxedExposedCutCopperStairs = 124, - WaxedWeatheredCutCopperStairs = 125, - WaxedOxidizedCutCopperStairs = 126, - WaxedCutCopperSlab = 127, - WaxedExposedCutCopperSlab = 128, - WaxedWeatheredCutCopperSlab = 129, - WaxedOxidizedCutCopperSlab = 130, - OakLog = 131, - SpruceLog = 132, - BirchLog = 133, - JungleLog = 134, - AcaciaLog = 135, - CherryLog = 136, - DarkOakLog = 137, - MangroveLog = 138, - MangroveRoots = 139, - MuddyMangroveRoots = 140, - CrimsonStem = 141, - WarpedStem = 142, - BambooBlock = 143, - StrippedOakLog = 144, - StrippedSpruceLog = 145, - StrippedBirchLog = 146, - StrippedJungleLog = 147, - StrippedAcaciaLog = 148, - StrippedCherryLog = 149, - StrippedDarkOakLog = 150, - StrippedMangroveLog = 151, - StrippedCrimsonStem = 152, - StrippedWarpedStem = 153, - StrippedOakWood = 154, - StrippedSpruceWood = 155, - StrippedBirchWood = 156, - StrippedJungleWood = 157, - StrippedAcaciaWood = 158, - StrippedCherryWood = 159, - StrippedDarkOakWood = 160, - StrippedMangroveWood = 161, - StrippedCrimsonHyphae = 162, - StrippedWarpedHyphae = 163, - StrippedBambooBlock = 164, - OakWood = 165, - SpruceWood = 166, - BirchWood = 167, - JungleWood = 168, - AcaciaWood = 169, - CherryWood = 170, - DarkOakWood = 171, - MangroveWood = 172, - CrimsonHyphae = 173, - WarpedHyphae = 174, - OakLeaves = 175, - SpruceLeaves = 176, - BirchLeaves = 177, - JungleLeaves = 178, - AcaciaLeaves = 179, - CherryLeaves = 180, - DarkOakLeaves = 181, - MangroveLeaves = 182, - AzaleaLeaves = 183, - FloweringAzaleaLeaves = 184, - Sponge = 185, - WetSponge = 186, - Glass = 187, - TintedGlass = 188, - LapisBlock = 189, - Sandstone = 190, - ChiseledSandstone = 191, - CutSandstone = 192, - Cobweb = 193, - ShortGrass = 194, - Fern = 195, - Azalea = 196, - FloweringAzalea = 197, - DeadBush = 198, - Seagrass = 199, - SeaPickle = 200, - WhiteWool = 201, - OrangeWool = 202, - MagentaWool = 203, - LightBlueWool = 204, - YellowWool = 205, - LimeWool = 206, - PinkWool = 207, - GrayWool = 208, - LightGrayWool = 209, - CyanWool = 210, - PurpleWool = 211, - BlueWool = 212, - BrownWool = 213, - GreenWool = 214, - RedWool = 215, - BlackWool = 216, - Dandelion = 217, - Poppy = 218, - BlueOrchid = 219, - Allium = 220, - AzureBluet = 221, - RedTulip = 222, - OrangeTulip = 223, - WhiteTulip = 224, - PinkTulip = 225, - OxeyeDaisy = 226, - Cornflower = 227, - LilyOfTheValley = 228, - WitherRose = 229, - Torchflower = 230, - PitcherPlant = 231, - SporeBlossom = 232, - BrownMushroom = 233, - RedMushroom = 234, - CrimsonFungus = 235, - WarpedFungus = 236, - CrimsonRoots = 237, - WarpedRoots = 238, - NetherSprouts = 239, - WeepingVines = 240, - TwistingVines = 241, - SugarCane = 242, - Kelp = 243, - MossCarpet = 244, - PinkPetals = 245, - MossBlock = 246, - HangingRoots = 247, - BigDripleaf = 248, - SmallDripleaf = 249, - Bamboo = 250, - OakSlab = 251, - SpruceSlab = 252, - BirchSlab = 253, - JungleSlab = 254, - AcaciaSlab = 255, - CherrySlab = 256, - DarkOakSlab = 257, - MangroveSlab = 258, - BambooSlab = 259, - BambooMosaicSlab = 260, - CrimsonSlab = 261, - WarpedSlab = 262, - StoneSlab = 263, - SmoothStoneSlab = 264, - SandstoneSlab = 265, - CutSandstoneSlab = 266, - PetrifiedOakSlab = 267, - CobblestoneSlab = 268, - BrickSlab = 269, - StoneBrickSlab = 270, - MudBrickSlab = 271, - NetherBrickSlab = 272, - QuartzSlab = 273, - RedSandstoneSlab = 274, - CutRedSandstoneSlab = 275, - PurpurSlab = 276, - PrismarineSlab = 277, - PrismarineBrickSlab = 278, - DarkPrismarineSlab = 279, - SmoothQuartz = 280, - SmoothRedSandstone = 281, - SmoothSandstone = 282, - SmoothStone = 283, - Bricks = 284, - Bookshelf = 285, - ChiseledBookshelf = 286, - DecoratedPot = 287, - MossyCobblestone = 288, - Obsidian = 289, - Torch = 290, - EndRod = 291, - ChorusPlant = 292, - ChorusFlower = 293, - PurpurBlock = 294, - PurpurPillar = 295, - PurpurStairs = 296, - Spawner = 297, - Chest = 298, - CraftingTable = 299, - Farmland = 300, - Furnace = 301, - Ladder = 302, - CobblestoneStairs = 303, - Snow = 304, - Ice = 305, - SnowBlock = 306, - Cactus = 307, - Clay = 308, - Jukebox = 309, - OakFence = 310, - SpruceFence = 311, - BirchFence = 312, - JungleFence = 313, - AcaciaFence = 314, - CherryFence = 315, - DarkOakFence = 316, - MangroveFence = 317, - BambooFence = 318, - CrimsonFence = 319, - WarpedFence = 320, - Pumpkin = 321, - CarvedPumpkin = 322, - JackOLantern = 323, - Netherrack = 324, - SoulSand = 325, - SoulSoil = 326, - Basalt = 327, - PolishedBasalt = 328, - SmoothBasalt = 329, - SoulTorch = 330, - Glowstone = 331, - InfestedStone = 332, - InfestedCobblestone = 333, - InfestedStoneBricks = 334, - InfestedMossyStoneBricks = 335, - InfestedCrackedStoneBricks = 336, - InfestedChiseledStoneBricks = 337, - InfestedDeepslate = 338, - StoneBricks = 339, - MossyStoneBricks = 340, - CrackedStoneBricks = 341, - ChiseledStoneBricks = 342, - PackedMud = 343, - MudBricks = 344, - DeepslateBricks = 345, - CrackedDeepslateBricks = 346, - DeepslateTiles = 347, - CrackedDeepslateTiles = 348, - ChiseledDeepslate = 349, - ReinforcedDeepslate = 350, - BrownMushroomBlock = 351, - RedMushroomBlock = 352, - MushroomStem = 353, - IronBars = 354, - Chain = 355, - GlassPane = 356, - Melon = 357, - Vine = 358, - GlowLichen = 359, - BrickStairs = 360, - StoneBrickStairs = 361, - MudBrickStairs = 362, - Mycelium = 363, - LilyPad = 364, - NetherBricks = 365, - CrackedNetherBricks = 366, - ChiseledNetherBricks = 367, - NetherBrickFence = 368, - NetherBrickStairs = 369, - Sculk = 370, - SculkVein = 371, - SculkCatalyst = 372, - SculkShrieker = 373, - EnchantingTable = 374, - EndPortalFrame = 375, - EndStone = 376, - EndStoneBricks = 377, - DragonEgg = 378, - SandstoneStairs = 379, - EnderChest = 380, - EmeraldBlock = 381, - OakStairs = 382, - SpruceStairs = 383, - BirchStairs = 384, - JungleStairs = 385, - AcaciaStairs = 386, - CherryStairs = 387, - DarkOakStairs = 388, - MangroveStairs = 389, - BambooStairs = 390, - BambooMosaicStairs = 391, - CrimsonStairs = 392, - WarpedStairs = 393, - CommandBlock = 394, - Beacon = 395, - CobblestoneWall = 396, - MossyCobblestoneWall = 397, - BrickWall = 398, - PrismarineWall = 399, - RedSandstoneWall = 400, - MossyStoneBrickWall = 401, - GraniteWall = 402, - StoneBrickWall = 403, - MudBrickWall = 404, - NetherBrickWall = 405, - AndesiteWall = 406, - RedNetherBrickWall = 407, - SandstoneWall = 408, - EndStoneBrickWall = 409, - DioriteWall = 410, - BlackstoneWall = 411, - PolishedBlackstoneWall = 412, - PolishedBlackstoneBrickWall = 413, - CobbledDeepslateWall = 414, - PolishedDeepslateWall = 415, - DeepslateBrickWall = 416, - DeepslateTileWall = 417, - Anvil = 418, - ChippedAnvil = 419, - DamagedAnvil = 420, - ChiseledQuartzBlock = 421, - QuartzBlock = 422, - QuartzBricks = 423, - QuartzPillar = 424, - QuartzStairs = 425, - WhiteTerracotta = 426, - OrangeTerracotta = 427, - MagentaTerracotta = 428, - LightBlueTerracotta = 429, - YellowTerracotta = 430, - LimeTerracotta = 431, - PinkTerracotta = 432, - GrayTerracotta = 433, - LightGrayTerracotta = 434, - CyanTerracotta = 435, - PurpleTerracotta = 436, - BlueTerracotta = 437, - BrownTerracotta = 438, - GreenTerracotta = 439, - RedTerracotta = 440, - BlackTerracotta = 441, - Barrier = 442, - Light = 443, - HayBlock = 444, - WhiteCarpet = 445, - OrangeCarpet = 446, - MagentaCarpet = 447, - LightBlueCarpet = 448, - YellowCarpet = 449, - LimeCarpet = 450, - PinkCarpet = 451, - GrayCarpet = 452, - LightGrayCarpet = 453, - CyanCarpet = 454, - PurpleCarpet = 455, - BlueCarpet = 456, - BrownCarpet = 457, - GreenCarpet = 458, - RedCarpet = 459, - BlackCarpet = 460, - Terracotta = 461, - PackedIce = 462, - DirtPath = 463, - Sunflower = 464, - Lilac = 465, - RoseBush = 466, - Peony = 467, - TallGrass = 468, - LargeFern = 469, - WhiteStainedGlass = 470, - OrangeStainedGlass = 471, - MagentaStainedGlass = 472, - LightBlueStainedGlass = 473, - YellowStainedGlass = 474, - LimeStainedGlass = 475, - PinkStainedGlass = 476, - GrayStainedGlass = 477, - LightGrayStainedGlass = 478, - CyanStainedGlass = 479, - PurpleStainedGlass = 480, - BlueStainedGlass = 481, - BrownStainedGlass = 482, - GreenStainedGlass = 483, - RedStainedGlass = 484, - BlackStainedGlass = 485, - WhiteStainedGlassPane = 486, - OrangeStainedGlassPane = 487, - MagentaStainedGlassPane = 488, - LightBlueStainedGlassPane = 489, - YellowStainedGlassPane = 490, - LimeStainedGlassPane = 491, - PinkStainedGlassPane = 492, - GrayStainedGlassPane = 493, - LightGrayStainedGlassPane = 494, - CyanStainedGlassPane = 495, - PurpleStainedGlassPane = 496, - BlueStainedGlassPane = 497, - BrownStainedGlassPane = 498, - GreenStainedGlassPane = 499, - RedStainedGlassPane = 500, - BlackStainedGlassPane = 501, - Prismarine = 502, - PrismarineBricks = 503, - DarkPrismarine = 504, - PrismarineStairs = 505, - PrismarineBrickStairs = 506, - DarkPrismarineStairs = 507, - SeaLantern = 508, - RedSandstone = 509, - ChiseledRedSandstone = 510, - CutRedSandstone = 511, - RedSandstoneStairs = 512, - RepeatingCommandBlock = 513, - ChainCommandBlock = 514, - MagmaBlock = 515, - NetherWartBlock = 516, - WarpedWartBlock = 517, - RedNetherBricks = 518, - BoneBlock = 519, - StructureVoid = 520, - ShulkerBox = 521, - WhiteShulkerBox = 522, - OrangeShulkerBox = 523, - MagentaShulkerBox = 524, - LightBlueShulkerBox = 525, - YellowShulkerBox = 526, - LimeShulkerBox = 527, - PinkShulkerBox = 528, - GrayShulkerBox = 529, - LightGrayShulkerBox = 530, - CyanShulkerBox = 531, - PurpleShulkerBox = 532, - BlueShulkerBox = 533, - BrownShulkerBox = 534, - GreenShulkerBox = 535, - RedShulkerBox = 536, - BlackShulkerBox = 537, - WhiteGlazedTerracotta = 538, - OrangeGlazedTerracotta = 539, - MagentaGlazedTerracotta = 540, - LightBlueGlazedTerracotta = 541, - YellowGlazedTerracotta = 542, - LimeGlazedTerracotta = 543, - PinkGlazedTerracotta = 544, - GrayGlazedTerracotta = 545, - LightGrayGlazedTerracotta = 546, - CyanGlazedTerracotta = 547, - PurpleGlazedTerracotta = 548, - BlueGlazedTerracotta = 549, - BrownGlazedTerracotta = 550, - GreenGlazedTerracotta = 551, - RedGlazedTerracotta = 552, - BlackGlazedTerracotta = 553, - WhiteConcrete = 554, - OrangeConcrete = 555, - MagentaConcrete = 556, - LightBlueConcrete = 557, - YellowConcrete = 558, - LimeConcrete = 559, - PinkConcrete = 560, - GrayConcrete = 561, - LightGrayConcrete = 562, - CyanConcrete = 563, - PurpleConcrete = 564, - BlueConcrete = 565, - BrownConcrete = 566, - GreenConcrete = 567, - RedConcrete = 568, - BlackConcrete = 569, - WhiteConcretePowder = 570, - OrangeConcretePowder = 571, - MagentaConcretePowder = 572, - LightBlueConcretePowder = 573, - YellowConcretePowder = 574, - LimeConcretePowder = 575, - PinkConcretePowder = 576, - GrayConcretePowder = 577, - LightGrayConcretePowder = 578, - CyanConcretePowder = 579, - PurpleConcretePowder = 580, - BlueConcretePowder = 581, - BrownConcretePowder = 582, - GreenConcretePowder = 583, - RedConcretePowder = 584, - BlackConcretePowder = 585, - TurtleEgg = 586, - SnifferEgg = 587, - DeadTubeCoralBlock = 588, - DeadBrainCoralBlock = 589, - DeadBubbleCoralBlock = 590, - DeadFireCoralBlock = 591, - DeadHornCoralBlock = 592, - TubeCoralBlock = 593, - BrainCoralBlock = 594, - BubbleCoralBlock = 595, - FireCoralBlock = 596, - HornCoralBlock = 597, - TubeCoral = 598, - BrainCoral = 599, - BubbleCoral = 600, - FireCoral = 601, - HornCoral = 602, - DeadBrainCoral = 603, - DeadBubbleCoral = 604, - DeadFireCoral = 605, - DeadHornCoral = 606, - DeadTubeCoral = 607, - TubeCoralFan = 608, - BrainCoralFan = 609, - BubbleCoralFan = 610, - FireCoralFan = 611, - HornCoralFan = 612, - DeadTubeCoralFan = 613, - DeadBrainCoralFan = 614, - DeadBubbleCoralFan = 615, - DeadFireCoralFan = 616, - DeadHornCoralFan = 617, - BlueIce = 618, - Conduit = 619, - PolishedGraniteStairs = 620, - SmoothRedSandstoneStairs = 621, - MossyStoneBrickStairs = 622, - PolishedDioriteStairs = 623, - MossyCobblestoneStairs = 624, - EndStoneBrickStairs = 625, - StoneStairs = 626, - SmoothSandstoneStairs = 627, - SmoothQuartzStairs = 628, - GraniteStairs = 629, - AndesiteStairs = 630, - RedNetherBrickStairs = 631, - PolishedAndesiteStairs = 632, - DioriteStairs = 633, - CobbledDeepslateStairs = 634, - PolishedDeepslateStairs = 635, - DeepslateBrickStairs = 636, - DeepslateTileStairs = 637, - PolishedGraniteSlab = 638, - SmoothRedSandstoneSlab = 639, - MossyStoneBrickSlab = 640, - PolishedDioriteSlab = 641, - MossyCobblestoneSlab = 642, - EndStoneBrickSlab = 643, - SmoothSandstoneSlab = 644, - SmoothQuartzSlab = 645, - GraniteSlab = 646, - AndesiteSlab = 647, - RedNetherBrickSlab = 648, - PolishedAndesiteSlab = 649, - DioriteSlab = 650, - CobbledDeepslateSlab = 651, - PolishedDeepslateSlab = 652, - DeepslateBrickSlab = 653, - DeepslateTileSlab = 654, - Scaffolding = 655, - Redstone = 656, - RedstoneTorch = 657, - RedstoneBlock = 658, - Repeater = 659, - Comparator = 660, - Piston = 661, - StickyPiston = 662, - SlimeBlock = 663, - HoneyBlock = 664, - Observer = 665, - Hopper = 666, - Dispenser = 667, - Dropper = 668, - Lectern = 669, - Target = 670, - Lever = 671, - LightningRod = 672, - DaylightDetector = 673, - SculkSensor = 674, - CalibratedSculkSensor = 675, - TripwireHook = 676, - TrappedChest = 677, - Tnt = 678, - RedstoneLamp = 679, - NoteBlock = 680, - StoneButton = 681, - PolishedBlackstoneButton = 682, - OakButton = 683, - SpruceButton = 684, - BirchButton = 685, - JungleButton = 686, - AcaciaButton = 687, - CherryButton = 688, - DarkOakButton = 689, - MangroveButton = 690, - BambooButton = 691, - CrimsonButton = 692, - WarpedButton = 693, - StonePressurePlate = 694, - PolishedBlackstonePressurePlate = 695, - LightWeightedPressurePlate = 696, - HeavyWeightedPressurePlate = 697, - OakPressurePlate = 698, - SprucePressurePlate = 699, - BirchPressurePlate = 700, - JunglePressurePlate = 701, - AcaciaPressurePlate = 702, - CherryPressurePlate = 703, - DarkOakPressurePlate = 704, - MangrovePressurePlate = 705, - BambooPressurePlate = 706, - CrimsonPressurePlate = 707, - WarpedPressurePlate = 708, - IronDoor = 709, - OakDoor = 710, - SpruceDoor = 711, - BirchDoor = 712, - JungleDoor = 713, - AcaciaDoor = 714, - CherryDoor = 715, - DarkOakDoor = 716, - MangroveDoor = 717, - BambooDoor = 718, - CrimsonDoor = 719, - WarpedDoor = 720, - CopperDoor = 721, - ExposedCopperDoor = 722, - WeatheredCopperDoor = 723, - OxidizedCopperDoor = 724, - WaxedCopperDoor = 725, - WaxedExposedCopperDoor = 726, - WaxedWeatheredCopperDoor = 727, - WaxedOxidizedCopperDoor = 728, - IronTrapdoor = 729, - OakTrapdoor = 730, - SpruceTrapdoor = 731, - BirchTrapdoor = 732, - JungleTrapdoor = 733, - AcaciaTrapdoor = 734, - CherryTrapdoor = 735, - DarkOakTrapdoor = 736, - MangroveTrapdoor = 737, - BambooTrapdoor = 738, - CrimsonTrapdoor = 739, - WarpedTrapdoor = 740, - CopperTrapdoor = 741, - ExposedCopperTrapdoor = 742, - WeatheredCopperTrapdoor = 743, - OxidizedCopperTrapdoor = 744, - WaxedCopperTrapdoor = 745, - WaxedExposedCopperTrapdoor = 746, - WaxedWeatheredCopperTrapdoor = 747, - WaxedOxidizedCopperTrapdoor = 748, - OakFenceGate = 749, - SpruceFenceGate = 750, - BirchFenceGate = 751, - JungleFenceGate = 752, - AcaciaFenceGate = 753, - CherryFenceGate = 754, - DarkOakFenceGate = 755, - MangroveFenceGate = 756, - BambooFenceGate = 757, - CrimsonFenceGate = 758, - WarpedFenceGate = 759, - PoweredRail = 760, - DetectorRail = 761, - Rail = 762, - ActivatorRail = 763, - Saddle = 764, - Minecart = 765, - ChestMinecart = 766, - FurnaceMinecart = 767, - TntMinecart = 768, - HopperMinecart = 769, - CarrotOnAStick = 770, - WarpedFungusOnAStick = 771, - Elytra = 772, - OakBoat = 773, - OakChestBoat = 774, - SpruceBoat = 775, - SpruceChestBoat = 776, - BirchBoat = 777, - BirchChestBoat = 778, - JungleBoat = 779, - JungleChestBoat = 780, - AcaciaBoat = 781, - AcaciaChestBoat = 782, - CherryBoat = 783, - CherryChestBoat = 784, - DarkOakBoat = 785, - DarkOakChestBoat = 786, - MangroveBoat = 787, - MangroveChestBoat = 788, - BambooRaft = 789, - BambooChestRaft = 790, - StructureBlock = 791, - Jigsaw = 792, - TurtleHelmet = 793, - Scute = 794, - FlintAndSteel = 795, - Apple = 796, - Bow = 797, - Arrow = 798, - Coal = 799, - Charcoal = 800, - Diamond = 801, - Emerald = 802, - LapisLazuli = 803, - Quartz = 804, - AmethystShard = 805, - RawIron = 806, - IronIngot = 807, - RawCopper = 808, - CopperIngot = 809, - RawGold = 810, - GoldIngot = 811, - NetheriteIngot = 812, - NetheriteScrap = 813, - WoodenSword = 814, - WoodenShovel = 815, - WoodenPickaxe = 816, - WoodenAxe = 817, - WoodenHoe = 818, - StoneSword = 819, - StoneShovel = 820, - StonePickaxe = 821, - StoneAxe = 822, - StoneHoe = 823, - GoldenSword = 824, - GoldenShovel = 825, - GoldenPickaxe = 826, - GoldenAxe = 827, - GoldenHoe = 828, - IronSword = 829, - IronShovel = 830, - IronPickaxe = 831, - IronAxe = 832, - IronHoe = 833, - DiamondSword = 834, - DiamondShovel = 835, - DiamondPickaxe = 836, - DiamondAxe = 837, - DiamondHoe = 838, - NetheriteSword = 839, - NetheriteShovel = 840, - NetheritePickaxe = 841, - NetheriteAxe = 842, - NetheriteHoe = 843, - Stick = 844, - Bowl = 845, - MushroomStew = 846, - String = 847, - Feather = 848, - Gunpowder = 849, - WheatSeeds = 850, - Wheat = 851, - Bread = 852, - LeatherHelmet = 853, - LeatherChestplate = 854, - LeatherLeggings = 855, - LeatherBoots = 856, - ChainmailHelmet = 857, - ChainmailChestplate = 858, - ChainmailLeggings = 859, - ChainmailBoots = 860, - IronHelmet = 861, - IronChestplate = 862, - IronLeggings = 863, - IronBoots = 864, - DiamondHelmet = 865, - DiamondChestplate = 866, - DiamondLeggings = 867, - DiamondBoots = 868, - GoldenHelmet = 869, - GoldenChestplate = 870, - GoldenLeggings = 871, - GoldenBoots = 872, - NetheriteHelmet = 873, - NetheriteChestplate = 874, - NetheriteLeggings = 875, - NetheriteBoots = 876, - Flint = 877, - Porkchop = 878, - CookedPorkchop = 879, - Painting = 880, - GoldenApple = 881, - EnchantedGoldenApple = 882, - OakSign = 883, - SpruceSign = 884, - BirchSign = 885, - JungleSign = 886, - AcaciaSign = 887, - CherrySign = 888, - DarkOakSign = 889, - MangroveSign = 890, - BambooSign = 891, - CrimsonSign = 892, - WarpedSign = 893, - OakHangingSign = 894, - SpruceHangingSign = 895, - BirchHangingSign = 896, - JungleHangingSign = 897, - AcaciaHangingSign = 898, - CherryHangingSign = 899, - DarkOakHangingSign = 900, - MangroveHangingSign = 901, - BambooHangingSign = 902, - CrimsonHangingSign = 903, - WarpedHangingSign = 904, - Bucket = 905, - WaterBucket = 906, - LavaBucket = 907, - PowderSnowBucket = 908, - Snowball = 909, - Leather = 910, - MilkBucket = 911, - PufferfishBucket = 912, - SalmonBucket = 913, - CodBucket = 914, - TropicalFishBucket = 915, - AxolotlBucket = 916, - TadpoleBucket = 917, - Brick = 918, - ClayBall = 919, - DriedKelpBlock = 920, - Paper = 921, - Book = 922, - SlimeBall = 923, - Egg = 924, - Compass = 925, - RecoveryCompass = 926, - Bundle = 927, - FishingRod = 928, - Clock = 929, - Spyglass = 930, - GlowstoneDust = 931, - Cod = 932, - Salmon = 933, - TropicalFish = 934, - Pufferfish = 935, - CookedCod = 936, - CookedSalmon = 937, - InkSac = 938, - GlowInkSac = 939, - CocoaBeans = 940, - WhiteDye = 941, - OrangeDye = 942, - MagentaDye = 943, - LightBlueDye = 944, - YellowDye = 945, - LimeDye = 946, - PinkDye = 947, - GrayDye = 948, - LightGrayDye = 949, - CyanDye = 950, - PurpleDye = 951, - BlueDye = 952, - BrownDye = 953, - GreenDye = 954, - RedDye = 955, - BlackDye = 956, - BoneMeal = 957, - Bone = 958, - Sugar = 959, - Cake = 960, - WhiteBed = 961, - OrangeBed = 962, - MagentaBed = 963, - LightBlueBed = 964, - YellowBed = 965, - LimeBed = 966, - PinkBed = 967, - GrayBed = 968, - LightGrayBed = 969, - CyanBed = 970, - PurpleBed = 971, - BlueBed = 972, - BrownBed = 973, - GreenBed = 974, - RedBed = 975, - BlackBed = 976, - Cookie = 977, - Crafter = 978, - FilledMap = 979, - Shears = 980, - MelonSlice = 981, - DriedKelp = 982, - PumpkinSeeds = 983, - MelonSeeds = 984, - Beef = 985, - CookedBeef = 986, - Chicken = 987, - CookedChicken = 988, - RottenFlesh = 989, - EnderPearl = 990, - BlazeRod = 991, - GhastTear = 992, - GoldNugget = 993, - NetherWart = 994, - Potion = 995, - GlassBottle = 996, - SpiderEye = 997, - FermentedSpiderEye = 998, - BlazePowder = 999, - MagmaCream = 1000, - BrewingStand = 1001, - Cauldron = 1002, - EnderEye = 1003, - GlisteringMelonSlice = 1004, - AllaySpawnEgg = 1005, - AxolotlSpawnEgg = 1006, - BatSpawnEgg = 1007, - BeeSpawnEgg = 1008, - BlazeSpawnEgg = 1009, - BreezeSpawnEgg = 1010, - CatSpawnEgg = 1011, - CamelSpawnEgg = 1012, - CaveSpiderSpawnEgg = 1013, - ChickenSpawnEgg = 1014, - CodSpawnEgg = 1015, - CowSpawnEgg = 1016, - CreeperSpawnEgg = 1017, - DolphinSpawnEgg = 1018, - DonkeySpawnEgg = 1019, - DrownedSpawnEgg = 1020, - ElderGuardianSpawnEgg = 1021, - EnderDragonSpawnEgg = 1022, - EndermanSpawnEgg = 1023, - EndermiteSpawnEgg = 1024, - EvokerSpawnEgg = 1025, - FoxSpawnEgg = 1026, - FrogSpawnEgg = 1027, - GhastSpawnEgg = 1028, - GlowSquidSpawnEgg = 1029, - GoatSpawnEgg = 1030, - GuardianSpawnEgg = 1031, - HoglinSpawnEgg = 1032, - HorseSpawnEgg = 1033, - HuskSpawnEgg = 1034, - IronGolemSpawnEgg = 1035, - LlamaSpawnEgg = 1036, - MagmaCubeSpawnEgg = 1037, - MooshroomSpawnEgg = 1038, - MuleSpawnEgg = 1039, - OcelotSpawnEgg = 1040, - PandaSpawnEgg = 1041, - ParrotSpawnEgg = 1042, - PhantomSpawnEgg = 1043, - PigSpawnEgg = 1044, - PiglinSpawnEgg = 1045, - PiglinBruteSpawnEgg = 1046, - PillagerSpawnEgg = 1047, - PolarBearSpawnEgg = 1048, - PufferfishSpawnEgg = 1049, - RabbitSpawnEgg = 1050, - RavagerSpawnEgg = 1051, - SalmonSpawnEgg = 1052, - SheepSpawnEgg = 1053, - ShulkerSpawnEgg = 1054, - SilverfishSpawnEgg = 1055, - SkeletonSpawnEgg = 1056, - SkeletonHorseSpawnEgg = 1057, - SlimeSpawnEgg = 1058, - SnifferSpawnEgg = 1059, - SnowGolemSpawnEgg = 1060, - SpiderSpawnEgg = 1061, - SquidSpawnEgg = 1062, - StraySpawnEgg = 1063, - StriderSpawnEgg = 1064, - TadpoleSpawnEgg = 1065, - TraderLlamaSpawnEgg = 1066, - TropicalFishSpawnEgg = 1067, - TurtleSpawnEgg = 1068, - VexSpawnEgg = 1069, - VillagerSpawnEgg = 1070, - VindicatorSpawnEgg = 1071, - WanderingTraderSpawnEgg = 1072, - WardenSpawnEgg = 1073, - WitchSpawnEgg = 1074, - WitherSpawnEgg = 1075, - WitherSkeletonSpawnEgg = 1076, - WolfSpawnEgg = 1077, - ZoglinSpawnEgg = 1078, - ZombieSpawnEgg = 1079, - ZombieHorseSpawnEgg = 1080, - ZombieVillagerSpawnEgg = 1081, - ZombifiedPiglinSpawnEgg = 1082, - ExperienceBottle = 1083, - FireCharge = 1084, - WritableBook = 1085, - WrittenBook = 1086, - ItemFrame = 1087, - GlowItemFrame = 1088, - FlowerPot = 1089, - Carrot = 1090, - Potato = 1091, - BakedPotato = 1092, - PoisonousPotato = 1093, - Map = 1094, - GoldenCarrot = 1095, - SkeletonSkull = 1096, - WitherSkeletonSkull = 1097, - PlayerHead = 1098, - ZombieHead = 1099, - CreeperHead = 1100, - DragonHead = 1101, - PiglinHead = 1102, - NetherStar = 1103, - PumpkinPie = 1104, - FireworkRocket = 1105, - FireworkStar = 1106, - EnchantedBook = 1107, - NetherBrick = 1108, - PrismarineShard = 1109, - PrismarineCrystals = 1110, - Rabbit = 1111, - CookedRabbit = 1112, - RabbitStew = 1113, - RabbitFoot = 1114, - RabbitHide = 1115, - ArmorStand = 1116, - IronHorseArmor = 1117, - GoldenHorseArmor = 1118, - DiamondHorseArmor = 1119, - LeatherHorseArmor = 1120, - Lead = 1121, - NameTag = 1122, - CommandBlockMinecart = 1123, - Mutton = 1124, - CookedMutton = 1125, - WhiteBanner = 1126, - OrangeBanner = 1127, - MagentaBanner = 1128, - LightBlueBanner = 1129, - YellowBanner = 1130, - LimeBanner = 1131, - PinkBanner = 1132, - GrayBanner = 1133, - LightGrayBanner = 1134, - CyanBanner = 1135, - PurpleBanner = 1136, - BlueBanner = 1137, - BrownBanner = 1138, - GreenBanner = 1139, - RedBanner = 1140, - BlackBanner = 1141, - EndCrystal = 1142, - ChorusFruit = 1143, - PoppedChorusFruit = 1144, - TorchflowerSeeds = 1145, - PitcherPod = 1146, - Beetroot = 1147, - BeetrootSeeds = 1148, - BeetrootSoup = 1149, - DragonBreath = 1150, - SplashPotion = 1151, - SpectralArrow = 1152, - TippedArrow = 1153, - LingeringPotion = 1154, - Shield = 1155, - TotemOfUndying = 1156, - ShulkerShell = 1157, - IronNugget = 1158, - KnowledgeBook = 1159, - DebugStick = 1160, - MusicDisc13 = 1161, - MusicDiscCat = 1162, - MusicDiscBlocks = 1163, - MusicDiscChirp = 1164, - MusicDiscFar = 1165, - MusicDiscMall = 1166, - MusicDiscMellohi = 1167, - MusicDiscStal = 1168, - MusicDiscStrad = 1169, - MusicDiscWard = 1170, - MusicDisc11 = 1171, - MusicDiscWait = 1172, - MusicDiscOtherside = 1173, - MusicDiscRelic = 1174, - MusicDisc5 = 1175, - MusicDiscPigstep = 1176, - DiscFragment5 = 1177, - Trident = 1178, - PhantomMembrane = 1179, - NautilusShell = 1180, - HeartOfTheSea = 1181, - Crossbow = 1182, - SuspiciousStew = 1183, - Loom = 1184, - FlowerBannerPattern = 1185, - CreeperBannerPattern = 1186, - SkullBannerPattern = 1187, - MojangBannerPattern = 1188, - GlobeBannerPattern = 1189, - PiglinBannerPattern = 1190, - GoatHorn = 1191, - Composter = 1192, - Barrel = 1193, - Smoker = 1194, - BlastFurnace = 1195, - CartographyTable = 1196, - FletchingTable = 1197, - Grindstone = 1198, - SmithingTable = 1199, - Stonecutter = 1200, - Bell = 1201, - Lantern = 1202, - SoulLantern = 1203, - SweetBerries = 1204, - GlowBerries = 1205, - Campfire = 1206, - SoulCampfire = 1207, - Shroomlight = 1208, - Honeycomb = 1209, - BeeNest = 1210, - Beehive = 1211, - HoneyBottle = 1212, - HoneycombBlock = 1213, - Lodestone = 1214, - CryingObsidian = 1215, - Blackstone = 1216, - BlackstoneSlab = 1217, - BlackstoneStairs = 1218, - GildedBlackstone = 1219, - PolishedBlackstone = 1220, - PolishedBlackstoneSlab = 1221, - PolishedBlackstoneStairs = 1222, - ChiseledPolishedBlackstone = 1223, - PolishedBlackstoneBricks = 1224, - PolishedBlackstoneBrickSlab = 1225, - PolishedBlackstoneBrickStairs = 1226, - CrackedPolishedBlackstoneBricks = 1227, - RespawnAnchor = 1228, - Candle = 1229, - WhiteCandle = 1230, - OrangeCandle = 1231, - MagentaCandle = 1232, - LightBlueCandle = 1233, - YellowCandle = 1234, - LimeCandle = 1235, - PinkCandle = 1236, - GrayCandle = 1237, - LightGrayCandle = 1238, - CyanCandle = 1239, - PurpleCandle = 1240, - BlueCandle = 1241, - BrownCandle = 1242, - GreenCandle = 1243, - RedCandle = 1244, - BlackCandle = 1245, - SmallAmethystBud = 1246, - MediumAmethystBud = 1247, - LargeAmethystBud = 1248, - AmethystCluster = 1249, - PointedDripstone = 1250, - OchreFroglight = 1251, - VerdantFroglight = 1252, - PearlescentFroglight = 1253, - Frogspawn = 1254, - EchoShard = 1255, - Brush = 1256, - NetheriteUpgradeSmithingTemplate = 1257, - SentryArmorTrimSmithingTemplate = 1258, - DuneArmorTrimSmithingTemplate = 1259, - CoastArmorTrimSmithingTemplate = 1260, - WildArmorTrimSmithingTemplate = 1261, - WardArmorTrimSmithingTemplate = 1262, - EyeArmorTrimSmithingTemplate = 1263, - VexArmorTrimSmithingTemplate = 1264, - TideArmorTrimSmithingTemplate = 1265, - SnoutArmorTrimSmithingTemplate = 1266, - RibArmorTrimSmithingTemplate = 1267, - SpireArmorTrimSmithingTemplate = 1268, - WayfinderArmorTrimSmithingTemplate = 1269, - ShaperArmorTrimSmithingTemplate = 1270, - SilenceArmorTrimSmithingTemplate = 1271, - RaiserArmorTrimSmithingTemplate = 1272, - HostArmorTrimSmithingTemplate = 1273, - AnglerPotterySherd = 1274, - ArcherPotterySherd = 1275, - ArmsUpPotterySherd = 1276, - BladePotterySherd = 1277, - BrewerPotterySherd = 1278, - BurnPotterySherd = 1279, - DangerPotterySherd = 1280, - ExplorerPotterySherd = 1281, - FriendPotterySherd = 1282, - HeartPotterySherd = 1283, - HeartbreakPotterySherd = 1284, - HowlPotterySherd = 1285, - MinerPotterySherd = 1286, - MournerPotterySherd = 1287, - PlentyPotterySherd = 1288, - PrizePotterySherd = 1289, - SheafPotterySherd = 1290, - ShelterPotterySherd = 1291, - SkullPotterySherd = 1292, - SnortPotterySherd = 1293, - CopperGrate = 1294, - ExposedCopperGrate = 1295, - WeatheredCopperGrate = 1296, - OxidizedCopperGrate = 1297, - WaxedCopperGrate = 1298, - WaxedExposedCopperGrate = 1299, - WaxedWeatheredCopperGrate = 1300, - WaxedOxidizedCopperGrate = 1301, - CopperBulb = 1302, - ExposedCopperBulb = 1303, - WeatheredCopperBulb = 1304, - OxidizedCopperBulb = 1305, - WaxedCopperBulb = 1306, - WaxedExposedCopperBulb = 1307, - WaxedWeatheredCopperBulb = 1308, - WaxedOxidizedCopperBulb = 1309, - TrialSpawner = 1310, - TrialKey = 1311, - Grass = 1312, + Stone = 0, + Granite = 1, + PolishedGranite = 2, + Diorite = 3, + PolishedDiorite = 4, + Andesite = 5, + PolishedAndesite = 6, + Deepslate = 7, + CobbledDeepslate = 8, + PolishedDeepslate = 9, + Calcite = 10, + Tuff = 11, + DripstoneBlock = 12, + GrassBlock = 13, + Dirt = 14, + CoarseDirt = 15, + Podzol = 16, + RootedDirt = 17, + CrimsonNylium = 18, + WarpedNylium = 19, + Cobblestone = 20, + OakPlanks = 21, + SprucePlanks = 22, + BirchPlanks = 23, + JunglePlanks = 24, + AcaciaPlanks = 25, + DarkOakPlanks = 26, + CrimsonPlanks = 27, + WarpedPlanks = 28, + OakSapling = 29, + SpruceSapling = 30, + BirchSapling = 31, + JungleSapling = 32, + AcaciaSapling = 33, + DarkOakSapling = 34, + Bedrock = 35, + Sand = 36, + RedSand = 37, + Gravel = 38, + CoalOre = 39, + DeepslateCoalOre = 40, + IronOre = 41, + DeepslateIronOre = 42, + CopperOre = 43, + DeepslateCopperOre = 44, + GoldOre = 45, + DeepslateGoldOre = 46, + RedstoneOre = 47, + DeepslateRedstoneOre = 48, + EmeraldOre = 49, + DeepslateEmeraldOre = 50, + LapisOre = 51, + DeepslateLapisOre = 52, + DiamondOre = 53, + DeepslateDiamondOre = 54, + NetherGoldOre = 55, + NetherQuartzOre = 56, + AncientDebris = 57, + CoalBlock = 58, + RawIronBlock = 59, + RawCopperBlock = 60, + RawGoldBlock = 61, + AmethystBlock = 62, + BuddingAmethyst = 63, + IronBlock = 64, + CopperBlock = 65, + GoldBlock = 66, + DiamondBlock = 67, + NetheriteBlock = 68, + ExposedCopper = 69, + WeatheredCopper = 70, + OxidizedCopper = 71, + CutCopper = 72, + ExposedCutCopper = 73, + WeatheredCutCopper = 74, + OxidizedCutCopper = 75, + CutCopperStairs = 76, + ExposedCutCopperStairs = 77, + WeatheredCutCopperStairs = 78, + OxidizedCutCopperStairs = 79, + CutCopperSlab = 80, + ExposedCutCopperSlab = 81, + WeatheredCutCopperSlab = 82, + OxidizedCutCopperSlab = 83, + WaxedCopperBlock = 84, + WaxedExposedCopper = 85, + WaxedWeatheredCopper = 86, + WaxedOxidizedCopper = 87, + WaxedCutCopper = 88, + WaxedExposedCutCopper = 89, + WaxedWeatheredCutCopper = 90, + WaxedOxidizedCutCopper = 91, + WaxedCutCopperStairs = 92, + WaxedExposedCutCopperStairs = 93, + WaxedWeatheredCutCopperStairs = 94, + WaxedOxidizedCutCopperStairs = 95, + WaxedCutCopperSlab = 96, + WaxedExposedCutCopperSlab = 97, + WaxedWeatheredCutCopperSlab = 98, + WaxedOxidizedCutCopperSlab = 99, + OakLog = 100, + SpruceLog = 101, + BirchLog = 102, + JungleLog = 103, + AcaciaLog = 104, + DarkOakLog = 105, + CrimsonStem = 106, + WarpedStem = 107, + StrippedOakLog = 108, + StrippedSpruceLog = 109, + StrippedBirchLog = 110, + StrippedJungleLog = 111, + StrippedAcaciaLog = 112, + StrippedDarkOakLog = 113, + StrippedCrimsonStem = 114, + StrippedWarpedStem = 115, + StrippedOakWood = 116, + StrippedSpruceWood = 117, + StrippedBirchWood = 118, + StrippedJungleWood = 119, + StrippedAcaciaWood = 120, + StrippedDarkOakWood = 121, + StrippedCrimsonHyphae = 122, + StrippedWarpedHyphae = 123, + OakWood = 124, + SpruceWood = 125, + BirchWood = 126, + JungleWood = 127, + AcaciaWood = 128, + DarkOakWood = 129, + CrimsonHyphae = 130, + WarpedHyphae = 131, + OakLeaves = 132, + SpruceLeaves = 133, + BirchLeaves = 134, + JungleLeaves = 135, + AcaciaLeaves = 136, + DarkOakLeaves = 137, + AzaleaLeaves = 138, + FloweringAzaleaLeaves = 139, + Sponge = 140, + WetSponge = 141, + Glass = 142, + TintedGlass = 143, + LapisBlock = 144, + Sandstone = 145, + ChiseledSandstone = 146, + CutSandstone = 147, + Cobweb = 148, + Grass = 149, + Fern = 150, + Azalea = 151, + FloweringAzalea = 152, + DeadBush = 153, + Seagrass = 154, + SeaPickle = 155, + WhiteWool = 156, + OrangeWool = 157, + MagentaWool = 158, + LightBlueWool = 159, + YellowWool = 160, + LimeWool = 161, + PinkWool = 162, + GrayWool = 163, + LightGrayWool = 164, + CyanWool = 165, + PurpleWool = 166, + BlueWool = 167, + BrownWool = 168, + GreenWool = 169, + RedWool = 170, + BlackWool = 171, + Dandelion = 172, + Poppy = 173, + BlueOrchid = 174, + Allium = 175, + AzureBluet = 176, + RedTulip = 177, + OrangeTulip = 178, + WhiteTulip = 179, + PinkTulip = 180, + OxeyeDaisy = 181, + Cornflower = 182, + LilyOfTheValley = 183, + WitherRose = 184, + SporeBlossom = 185, + BrownMushroom = 186, + RedMushroom = 187, + CrimsonFungus = 188, + WarpedFungus = 189, + CrimsonRoots = 190, + WarpedRoots = 191, + NetherSprouts = 192, + WeepingVines = 193, + TwistingVines = 194, + SugarCane = 195, + Kelp = 196, + MossCarpet = 197, + MossBlock = 198, + HangingRoots = 199, + BigDripleaf = 200, + SmallDripleaf = 201, + Bamboo = 202, + OakSlab = 203, + SpruceSlab = 204, + BirchSlab = 205, + JungleSlab = 206, + AcaciaSlab = 207, + DarkOakSlab = 208, + CrimsonSlab = 209, + WarpedSlab = 210, + StoneSlab = 211, + SmoothStoneSlab = 212, + SandstoneSlab = 213, + CutSandstoneSlab = 214, + PetrifiedOakSlab = 215, + CobblestoneSlab = 216, + BrickSlab = 217, + StoneBrickSlab = 218, + NetherBrickSlab = 219, + QuartzSlab = 220, + RedSandstoneSlab = 221, + CutRedSandstoneSlab = 222, + PurpurSlab = 223, + PrismarineSlab = 224, + PrismarineBrickSlab = 225, + DarkPrismarineSlab = 226, + SmoothQuartz = 227, + SmoothRedSandstone = 228, + SmoothSandstone = 229, + SmoothStone = 230, + Bricks = 231, + Bookshelf = 232, + MossyCobblestone = 233, + Obsidian = 234, + Torch = 235, + EndRod = 236, + ChorusPlant = 237, + ChorusFlower = 238, + PurpurBlock = 239, + PurpurPillar = 240, + PurpurStairs = 241, + Spawner = 242, + OakStairs = 243, + Chest = 244, + CraftingTable = 245, + Farmland = 246, + Furnace = 247, + Ladder = 248, + CobblestoneStairs = 249, + Snow = 250, + Ice = 251, + SnowBlock = 252, + Cactus = 253, + Clay = 254, + Jukebox = 255, + OakFence = 256, + SpruceFence = 257, + BirchFence = 258, + JungleFence = 259, + AcaciaFence = 260, + DarkOakFence = 261, + CrimsonFence = 262, + WarpedFence = 263, + Pumpkin = 264, + CarvedPumpkin = 265, + JackOLantern = 266, + Netherrack = 267, + SoulSand = 268, + SoulSoil = 269, + Basalt = 270, + PolishedBasalt = 271, + SmoothBasalt = 272, + SoulTorch = 273, + Glowstone = 274, + InfestedStone = 275, + InfestedCobblestone = 276, + InfestedStoneBricks = 277, + InfestedMossyStoneBricks = 278, + InfestedCrackedStoneBricks = 279, + InfestedChiseledStoneBricks = 280, + InfestedDeepslate = 281, + StoneBricks = 282, + MossyStoneBricks = 283, + CrackedStoneBricks = 284, + ChiseledStoneBricks = 285, + DeepslateBricks = 286, + CrackedDeepslateBricks = 287, + DeepslateTiles = 288, + CrackedDeepslateTiles = 289, + ChiseledDeepslate = 290, + BrownMushroomBlock = 291, + RedMushroomBlock = 292, + MushroomStem = 293, + IronBars = 294, + Chain = 295, + GlassPane = 296, + Melon = 297, + Vine = 298, + GlowLichen = 299, + BrickStairs = 300, + StoneBrickStairs = 301, + Mycelium = 302, + LilyPad = 303, + NetherBricks = 304, + CrackedNetherBricks = 305, + ChiseledNetherBricks = 306, + NetherBrickFence = 307, + NetherBrickStairs = 308, + EnchantingTable = 309, + EndPortalFrame = 310, + EndStone = 311, + EndStoneBricks = 312, + DragonEgg = 313, + SandstoneStairs = 314, + EnderChest = 315, + EmeraldBlock = 316, + SpruceStairs = 317, + BirchStairs = 318, + JungleStairs = 319, + CrimsonStairs = 320, + WarpedStairs = 321, + CommandBlock = 322, + Beacon = 323, + CobblestoneWall = 324, + MossyCobblestoneWall = 325, + BrickWall = 326, + PrismarineWall = 327, + RedSandstoneWall = 328, + MossyStoneBrickWall = 329, + GraniteWall = 330, + StoneBrickWall = 331, + NetherBrickWall = 332, + AndesiteWall = 333, + RedNetherBrickWall = 334, + SandstoneWall = 335, + EndStoneBrickWall = 336, + DioriteWall = 337, + BlackstoneWall = 338, + PolishedBlackstoneWall = 339, + PolishedBlackstoneBrickWall = 340, + CobbledDeepslateWall = 341, + PolishedDeepslateWall = 342, + DeepslateBrickWall = 343, + DeepslateTileWall = 344, + Anvil = 345, + ChippedAnvil = 346, + DamagedAnvil = 347, + ChiseledQuartzBlock = 348, + QuartzBlock = 349, + QuartzBricks = 350, + QuartzPillar = 351, + QuartzStairs = 352, + WhiteTerracotta = 353, + OrangeTerracotta = 354, + MagentaTerracotta = 355, + LightBlueTerracotta = 356, + YellowTerracotta = 357, + LimeTerracotta = 358, + PinkTerracotta = 359, + GrayTerracotta = 360, + LightGrayTerracotta = 361, + CyanTerracotta = 362, + PurpleTerracotta = 363, + BlueTerracotta = 364, + BrownTerracotta = 365, + GreenTerracotta = 366, + RedTerracotta = 367, + BlackTerracotta = 368, + Barrier = 369, + Light = 370, + HayBlock = 371, + WhiteCarpet = 372, + OrangeCarpet = 373, + MagentaCarpet = 374, + LightBlueCarpet = 375, + YellowCarpet = 376, + LimeCarpet = 377, + PinkCarpet = 378, + GrayCarpet = 379, + LightGrayCarpet = 380, + CyanCarpet = 381, + PurpleCarpet = 382, + BlueCarpet = 383, + BrownCarpet = 384, + GreenCarpet = 385, + RedCarpet = 386, + BlackCarpet = 387, + Terracotta = 388, + PackedIce = 389, + AcaciaStairs = 390, + DarkOakStairs = 391, + DirtPath = 392, + Sunflower = 393, + Lilac = 394, + RoseBush = 395, + Peony = 396, + TallGrass = 397, + LargeFern = 398, + WhiteStainedGlass = 399, + OrangeStainedGlass = 400, + MagentaStainedGlass = 401, + LightBlueStainedGlass = 402, + YellowStainedGlass = 403, + LimeStainedGlass = 404, + PinkStainedGlass = 405, + GrayStainedGlass = 406, + LightGrayStainedGlass = 407, + CyanStainedGlass = 408, + PurpleStainedGlass = 409, + BlueStainedGlass = 410, + BrownStainedGlass = 411, + GreenStainedGlass = 412, + RedStainedGlass = 413, + BlackStainedGlass = 414, + WhiteStainedGlassPane = 415, + OrangeStainedGlassPane = 416, + MagentaStainedGlassPane = 417, + LightBlueStainedGlassPane = 418, + YellowStainedGlassPane = 419, + LimeStainedGlassPane = 420, + PinkStainedGlassPane = 421, + GrayStainedGlassPane = 422, + LightGrayStainedGlassPane = 423, + CyanStainedGlassPane = 424, + PurpleStainedGlassPane = 425, + BlueStainedGlassPane = 426, + BrownStainedGlassPane = 427, + GreenStainedGlassPane = 428, + RedStainedGlassPane = 429, + BlackStainedGlassPane = 430, + Prismarine = 431, + PrismarineBricks = 432, + DarkPrismarine = 433, + PrismarineStairs = 434, + PrismarineBrickStairs = 435, + DarkPrismarineStairs = 436, + SeaLantern = 437, + RedSandstone = 438, + ChiseledRedSandstone = 439, + CutRedSandstone = 440, + RedSandstoneStairs = 441, + RepeatingCommandBlock = 442, + ChainCommandBlock = 443, + MagmaBlock = 444, + NetherWartBlock = 445, + WarpedWartBlock = 446, + RedNetherBricks = 447, + BoneBlock = 448, + StructureVoid = 449, + ShulkerBox = 450, + WhiteShulkerBox = 451, + OrangeShulkerBox = 452, + MagentaShulkerBox = 453, + LightBlueShulkerBox = 454, + YellowShulkerBox = 455, + LimeShulkerBox = 456, + PinkShulkerBox = 457, + GrayShulkerBox = 458, + LightGrayShulkerBox = 459, + CyanShulkerBox = 460, + PurpleShulkerBox = 461, + BlueShulkerBox = 462, + BrownShulkerBox = 463, + GreenShulkerBox = 464, + RedShulkerBox = 465, + BlackShulkerBox = 466, + WhiteGlazedTerracotta = 467, + OrangeGlazedTerracotta = 468, + MagentaGlazedTerracotta = 469, + LightBlueGlazedTerracotta = 470, + YellowGlazedTerracotta = 471, + LimeGlazedTerracotta = 472, + PinkGlazedTerracotta = 473, + GrayGlazedTerracotta = 474, + LightGrayGlazedTerracotta = 475, + CyanGlazedTerracotta = 476, + PurpleGlazedTerracotta = 477, + BlueGlazedTerracotta = 478, + BrownGlazedTerracotta = 479, + GreenGlazedTerracotta = 480, + RedGlazedTerracotta = 481, + BlackGlazedTerracotta = 482, + WhiteConcrete = 483, + OrangeConcrete = 484, + MagentaConcrete = 485, + LightBlueConcrete = 486, + YellowConcrete = 487, + LimeConcrete = 488, + PinkConcrete = 489, + GrayConcrete = 490, + LightGrayConcrete = 491, + CyanConcrete = 492, + PurpleConcrete = 493, + BlueConcrete = 494, + BrownConcrete = 495, + GreenConcrete = 496, + RedConcrete = 497, + BlackConcrete = 498, + WhiteConcretePowder = 499, + OrangeConcretePowder = 500, + MagentaConcretePowder = 501, + LightBlueConcretePowder = 502, + YellowConcretePowder = 503, + LimeConcretePowder = 504, + PinkConcretePowder = 505, + GrayConcretePowder = 506, + LightGrayConcretePowder = 507, + CyanConcretePowder = 508, + PurpleConcretePowder = 509, + BlueConcretePowder = 510, + BrownConcretePowder = 511, + GreenConcretePowder = 512, + RedConcretePowder = 513, + BlackConcretePowder = 514, + TurtleEgg = 515, + DeadTubeCoralBlock = 516, + DeadBrainCoralBlock = 517, + DeadBubbleCoralBlock = 518, + DeadFireCoralBlock = 519, + DeadHornCoralBlock = 520, + TubeCoralBlock = 521, + BrainCoralBlock = 522, + BubbleCoralBlock = 523, + FireCoralBlock = 524, + HornCoralBlock = 525, + TubeCoral = 526, + BrainCoral = 527, + BubbleCoral = 528, + FireCoral = 529, + HornCoral = 530, + DeadBrainCoral = 531, + DeadBubbleCoral = 532, + DeadFireCoral = 533, + DeadHornCoral = 534, + DeadTubeCoral = 535, + TubeCoralFan = 536, + BrainCoralFan = 537, + BubbleCoralFan = 538, + FireCoralFan = 539, + HornCoralFan = 540, + DeadTubeCoralFan = 541, + DeadBrainCoralFan = 542, + DeadBubbleCoralFan = 543, + DeadFireCoralFan = 544, + DeadHornCoralFan = 545, + BlueIce = 546, + Conduit = 547, + PolishedGraniteStairs = 548, + SmoothRedSandstoneStairs = 549, + MossyStoneBrickStairs = 550, + PolishedDioriteStairs = 551, + MossyCobblestoneStairs = 552, + EndStoneBrickStairs = 553, + StoneStairs = 554, + SmoothSandstoneStairs = 555, + SmoothQuartzStairs = 556, + GraniteStairs = 557, + AndesiteStairs = 558, + RedNetherBrickStairs = 559, + PolishedAndesiteStairs = 560, + DioriteStairs = 561, + CobbledDeepslateStairs = 562, + PolishedDeepslateStairs = 563, + DeepslateBrickStairs = 564, + DeepslateTileStairs = 565, + PolishedGraniteSlab = 566, + SmoothRedSandstoneSlab = 567, + MossyStoneBrickSlab = 568, + PolishedDioriteSlab = 569, + MossyCobblestoneSlab = 570, + EndStoneBrickSlab = 571, + SmoothSandstoneSlab = 572, + SmoothQuartzSlab = 573, + GraniteSlab = 574, + AndesiteSlab = 575, + RedNetherBrickSlab = 576, + PolishedAndesiteSlab = 577, + DioriteSlab = 578, + CobbledDeepslateSlab = 579, + PolishedDeepslateSlab = 580, + DeepslateBrickSlab = 581, + DeepslateTileSlab = 582, + Scaffolding = 583, + Redstone = 584, + RedstoneTorch = 585, + RedstoneBlock = 586, + Repeater = 587, + Comparator = 588, + Piston = 589, + StickyPiston = 590, + SlimeBlock = 591, + HoneyBlock = 592, + Observer = 593, + Hopper = 594, + Dispenser = 595, + Dropper = 596, + Lectern = 597, + Target = 598, + Lever = 599, + LightningRod = 600, + DaylightDetector = 601, + SculkSensor = 602, + TripwireHook = 603, + TrappedChest = 604, + Tnt = 605, + RedstoneLamp = 606, + NoteBlock = 607, + StoneButton = 608, + PolishedBlackstoneButton = 609, + OakButton = 610, + SpruceButton = 611, + BirchButton = 612, + JungleButton = 613, + AcaciaButton = 614, + DarkOakButton = 615, + CrimsonButton = 616, + WarpedButton = 617, + StonePressurePlate = 618, + PolishedBlackstonePressurePlate = 619, + LightWeightedPressurePlate = 620, + HeavyWeightedPressurePlate = 621, + OakPressurePlate = 622, + SprucePressurePlate = 623, + BirchPressurePlate = 624, + JunglePressurePlate = 625, + AcaciaPressurePlate = 626, + DarkOakPressurePlate = 627, + CrimsonPressurePlate = 628, + WarpedPressurePlate = 629, + IronDoor = 630, + OakDoor = 631, + SpruceDoor = 632, + BirchDoor = 633, + JungleDoor = 634, + AcaciaDoor = 635, + DarkOakDoor = 636, + CrimsonDoor = 637, + WarpedDoor = 638, + IronTrapdoor = 639, + OakTrapdoor = 640, + SpruceTrapdoor = 641, + BirchTrapdoor = 642, + JungleTrapdoor = 643, + AcaciaTrapdoor = 644, + DarkOakTrapdoor = 645, + CrimsonTrapdoor = 646, + WarpedTrapdoor = 647, + OakFenceGate = 648, + SpruceFenceGate = 649, + BirchFenceGate = 650, + JungleFenceGate = 651, + AcaciaFenceGate = 652, + DarkOakFenceGate = 653, + CrimsonFenceGate = 654, + WarpedFenceGate = 655, + PoweredRail = 656, + DetectorRail = 657, + Rail = 658, + ActivatorRail = 659, + Saddle = 660, + Minecart = 661, + ChestMinecart = 662, + FurnaceMinecart = 663, + TntMinecart = 664, + HopperMinecart = 665, + CarrotOnAStick = 666, + WarpedFungusOnAStick = 667, + Elytra = 668, + OakBoat = 669, + SpruceBoat = 670, + BirchBoat = 671, + JungleBoat = 672, + AcaciaBoat = 673, + DarkOakBoat = 674, + StructureBlock = 675, + Jigsaw = 676, + TurtleHelmet = 677, + Scute = 678, + FlintAndSteel = 679, + Apple = 680, + Bow = 681, + Arrow = 682, + Coal = 683, + Charcoal = 684, + Diamond = 685, + Emerald = 686, + LapisLazuli = 687, + Quartz = 688, + AmethystShard = 689, + RawIron = 690, + IronIngot = 691, + RawCopper = 692, + CopperIngot = 693, + RawGold = 694, + GoldIngot = 695, + NetheriteIngot = 696, + NetheriteScrap = 697, + WoodenSword = 698, + WoodenShovel = 699, + WoodenPickaxe = 700, + WoodenAxe = 701, + WoodenHoe = 702, + StoneSword = 703, + StoneShovel = 704, + StonePickaxe = 705, + StoneAxe = 706, + StoneHoe = 707, + GoldenSword = 708, + GoldenShovel = 709, + GoldenPickaxe = 710, + GoldenAxe = 711, + GoldenHoe = 712, + IronSword = 713, + IronShovel = 714, + IronPickaxe = 715, + IronAxe = 716, + IronHoe = 717, + DiamondSword = 718, + DiamondShovel = 719, + DiamondPickaxe = 720, + DiamondAxe = 721, + DiamondHoe = 722, + NetheriteSword = 723, + NetheriteShovel = 724, + NetheritePickaxe = 725, + NetheriteAxe = 726, + NetheriteHoe = 727, + Stick = 728, + Bowl = 729, + MushroomStew = 730, + String = 731, + Feather = 732, + Gunpowder = 733, + WheatSeeds = 734, + Wheat = 735, + Bread = 736, + LeatherHelmet = 737, + LeatherChestplate = 738, + LeatherLeggings = 739, + LeatherBoots = 740, + ChainmailHelmet = 741, + ChainmailChestplate = 742, + ChainmailLeggings = 743, + ChainmailBoots = 744, + IronHelmet = 745, + IronChestplate = 746, + IronLeggings = 747, + IronBoots = 748, + DiamondHelmet = 749, + DiamondChestplate = 750, + DiamondLeggings = 751, + DiamondBoots = 752, + GoldenHelmet = 753, + GoldenChestplate = 754, + GoldenLeggings = 755, + GoldenBoots = 756, + NetheriteHelmet = 757, + NetheriteChestplate = 758, + NetheriteLeggings = 759, + NetheriteBoots = 760, + Flint = 761, + Porkchop = 762, + CookedPorkchop = 763, + Painting = 764, + GoldenApple = 765, + EnchantedGoldenApple = 766, + OakSign = 767, + SpruceSign = 768, + BirchSign = 769, + JungleSign = 770, + AcaciaSign = 771, + DarkOakSign = 772, + CrimsonSign = 773, + WarpedSign = 774, + Bucket = 775, + WaterBucket = 776, + LavaBucket = 777, + PowderSnowBucket = 778, + Snowball = 779, + Leather = 780, + MilkBucket = 781, + PufferfishBucket = 782, + SalmonBucket = 783, + CodBucket = 784, + TropicalFishBucket = 785, + AxolotlBucket = 786, + Brick = 787, + ClayBall = 788, + DriedKelpBlock = 789, + Paper = 790, + Book = 791, + SlimeBall = 792, + Egg = 793, + Compass = 794, + Bundle = 795, + FishingRod = 796, + Clock = 797, + Spyglass = 798, + GlowstoneDust = 799, + Cod = 800, + Salmon = 801, + TropicalFish = 802, + Pufferfish = 803, + CookedCod = 804, + CookedSalmon = 805, + InkSac = 806, + GlowInkSac = 807, + CocoaBeans = 808, + WhiteDye = 809, + OrangeDye = 810, + MagentaDye = 811, + LightBlueDye = 812, + YellowDye = 813, + LimeDye = 814, + PinkDye = 815, + GrayDye = 816, + LightGrayDye = 817, + CyanDye = 818, + PurpleDye = 819, + BlueDye = 820, + BrownDye = 821, + GreenDye = 822, + RedDye = 823, + BlackDye = 824, + BoneMeal = 825, + Bone = 826, + Sugar = 827, + Cake = 828, + WhiteBed = 829, + OrangeBed = 830, + MagentaBed = 831, + LightBlueBed = 832, + YellowBed = 833, + LimeBed = 834, + PinkBed = 835, + GrayBed = 836, + LightGrayBed = 837, + CyanBed = 838, + PurpleBed = 839, + BlueBed = 840, + BrownBed = 841, + GreenBed = 842, + RedBed = 843, + BlackBed = 844, + Cookie = 845, + FilledMap = 846, + Shears = 847, + MelonSlice = 848, + DriedKelp = 849, + PumpkinSeeds = 850, + MelonSeeds = 851, + Beef = 852, + CookedBeef = 853, + Chicken = 854, + CookedChicken = 855, + RottenFlesh = 856, + EnderPearl = 857, + BlazeRod = 858, + GhastTear = 859, + GoldNugget = 860, + NetherWart = 861, + Potion = 862, + GlassBottle = 863, + SpiderEye = 864, + FermentedSpiderEye = 865, + BlazePowder = 866, + MagmaCream = 867, + BrewingStand = 868, + Cauldron = 869, + EnderEye = 870, + GlisteringMelonSlice = 871, + AxolotlSpawnEgg = 872, + BatSpawnEgg = 873, + BeeSpawnEgg = 874, + BlazeSpawnEgg = 875, + CatSpawnEgg = 876, + CaveSpiderSpawnEgg = 877, + ChickenSpawnEgg = 878, + CodSpawnEgg = 879, + CowSpawnEgg = 880, + CreeperSpawnEgg = 881, + DolphinSpawnEgg = 882, + DonkeySpawnEgg = 883, + DrownedSpawnEgg = 884, + ElderGuardianSpawnEgg = 885, + EndermanSpawnEgg = 886, + EndermiteSpawnEgg = 887, + EvokerSpawnEgg = 888, + FoxSpawnEgg = 889, + GhastSpawnEgg = 890, + GlowSquidSpawnEgg = 891, + GoatSpawnEgg = 892, + GuardianSpawnEgg = 893, + HoglinSpawnEgg = 894, + HorseSpawnEgg = 895, + HuskSpawnEgg = 896, + LlamaSpawnEgg = 897, + MagmaCubeSpawnEgg = 898, + MooshroomSpawnEgg = 899, + MuleSpawnEgg = 900, + OcelotSpawnEgg = 901, + PandaSpawnEgg = 902, + ParrotSpawnEgg = 903, + PhantomSpawnEgg = 904, + PigSpawnEgg = 905, + PiglinSpawnEgg = 906, + PiglinBruteSpawnEgg = 907, + PillagerSpawnEgg = 908, + PolarBearSpawnEgg = 909, + PufferfishSpawnEgg = 910, + RabbitSpawnEgg = 911, + RavagerSpawnEgg = 912, + SalmonSpawnEgg = 913, + SheepSpawnEgg = 914, + ShulkerSpawnEgg = 915, + SilverfishSpawnEgg = 916, + SkeletonSpawnEgg = 917, + SkeletonHorseSpawnEgg = 918, + SlimeSpawnEgg = 919, + SpiderSpawnEgg = 920, + SquidSpawnEgg = 921, + StraySpawnEgg = 922, + StriderSpawnEgg = 923, + TraderLlamaSpawnEgg = 924, + TropicalFishSpawnEgg = 925, + TurtleSpawnEgg = 926, + VexSpawnEgg = 927, + VillagerSpawnEgg = 928, + VindicatorSpawnEgg = 929, + WanderingTraderSpawnEgg = 930, + WitchSpawnEgg = 931, + WitherSkeletonSpawnEgg = 932, + WolfSpawnEgg = 933, + ZoglinSpawnEgg = 934, + ZombieSpawnEgg = 935, + ZombieHorseSpawnEgg = 936, + ZombieVillagerSpawnEgg = 937, + ZombifiedPiglinSpawnEgg = 938, + ExperienceBottle = 939, + FireCharge = 940, + WritableBook = 941, + WrittenBook = 942, + ItemFrame = 943, + GlowItemFrame = 944, + FlowerPot = 945, + Carrot = 946, + Potato = 947, + BakedPotato = 948, + PoisonousPotato = 949, + Map = 950, + GoldenCarrot = 951, + SkeletonSkull = 952, + WitherSkeletonSkull = 953, + PlayerHead = 954, + ZombieHead = 955, + CreeperHead = 956, + DragonHead = 957, + NetherStar = 958, + PumpkinPie = 959, + FireworkRocket = 960, + FireworkStar = 961, + EnchantedBook = 962, + NetherBrick = 963, + PrismarineShard = 964, + PrismarineCrystals = 965, + Rabbit = 966, + CookedRabbit = 967, + RabbitStew = 968, + RabbitFoot = 969, + RabbitHide = 970, + ArmorStand = 971, + IronHorseArmor = 972, + GoldenHorseArmor = 973, + DiamondHorseArmor = 974, + LeatherHorseArmor = 975, + Lead = 976, + NameTag = 977, + CommandBlockMinecart = 978, + Mutton = 979, + CookedMutton = 980, + WhiteBanner = 981, + OrangeBanner = 982, + MagentaBanner = 983, + LightBlueBanner = 984, + YellowBanner = 985, + LimeBanner = 986, + PinkBanner = 987, + GrayBanner = 988, + LightGrayBanner = 989, + CyanBanner = 990, + PurpleBanner = 991, + BlueBanner = 992, + BrownBanner = 993, + GreenBanner = 994, + RedBanner = 995, + BlackBanner = 996, + EndCrystal = 997, + ChorusFruit = 998, + PoppedChorusFruit = 999, + Beetroot = 1000, + BeetrootSeeds = 1001, + BeetrootSoup = 1002, + DragonBreath = 1003, + SplashPotion = 1004, + SpectralArrow = 1005, + TippedArrow = 1006, + LingeringPotion = 1007, + Shield = 1008, + TotemOfUndying = 1009, + ShulkerShell = 1010, + IronNugget = 1011, + KnowledgeBook = 1012, + DebugStick = 1013, + MusicDisc13 = 1014, + MusicDiscCat = 1015, + MusicDiscBlocks = 1016, + MusicDiscChirp = 1017, + MusicDiscFar = 1018, + MusicDiscMall = 1019, + MusicDiscMellohi = 1020, + MusicDiscStal = 1021, + MusicDiscStrad = 1022, + MusicDiscWard = 1023, + MusicDisc11 = 1024, + MusicDiscWait = 1025, + MusicDiscOtherside = 1026, + MusicDiscPigstep = 1027, + Trident = 1028, + PhantomMembrane = 1029, + NautilusShell = 1030, + HeartOfTheSea = 1031, + Crossbow = 1032, + SuspiciousStew = 1033, + Loom = 1034, + FlowerBannerPattern = 1035, + CreeperBannerPattern = 1036, + SkullBannerPattern = 1037, + MojangBannerPattern = 1038, + GlobeBannerPattern = 1039, + PiglinBannerPattern = 1040, + Composter = 1041, + Barrel = 1042, + Smoker = 1043, + BlastFurnace = 1044, + CartographyTable = 1045, + FletchingTable = 1046, + Grindstone = 1047, + SmithingTable = 1048, + Stonecutter = 1049, + Bell = 1050, + Lantern = 1051, + SoulLantern = 1052, + SweetBerries = 1053, + GlowBerries = 1054, + Campfire = 1055, + SoulCampfire = 1056, + Shroomlight = 1057, + Honeycomb = 1058, + BeeNest = 1059, + Beehive = 1060, + HoneyBottle = 1061, + HoneycombBlock = 1062, + Lodestone = 1063, + CryingObsidian = 1064, + Blackstone = 1065, + BlackstoneSlab = 1066, + BlackstoneStairs = 1067, + GildedBlackstone = 1068, + PolishedBlackstone = 1069, + PolishedBlackstoneSlab = 1070, + PolishedBlackstoneStairs = 1071, + ChiseledPolishedBlackstone = 1072, + PolishedBlackstoneBricks = 1073, + PolishedBlackstoneBrickSlab = 1074, + PolishedBlackstoneBrickStairs = 1075, + CrackedPolishedBlackstoneBricks = 1076, + RespawnAnchor = 1077, + Candle = 1078, + WhiteCandle = 1079, + OrangeCandle = 1080, + MagentaCandle = 1081, + LightBlueCandle = 1082, + YellowCandle = 1083, + LimeCandle = 1084, + PinkCandle = 1085, + GrayCandle = 1086, + LightGrayCandle = 1087, + CyanCandle = 1088, + PurpleCandle = 1089, + BlueCandle = 1090, + BrownCandle = 1091, + GreenCandle = 1092, + RedCandle = 1093, + BlackCandle = 1094, + SmallAmethystBud = 1095, + MediumAmethystBud = 1096, + LargeAmethystBud = 1097, + AmethystCluster = 1098, + PointedDripstone = 1099, + Air = 1100, + Mud = 1101, + MangrovePlanks = 1102, + MangrovePropagule = 1103, + MangroveLog = 1104, + MangroveRoots = 1105, + MuddyMangroveRoots = 1106, + StrippedMangroveLog = 1107, + StrippedMangroveWood = 1108, + MangroveWood = 1109, + MangroveLeaves = 1110, + MangroveSlab = 1111, + MudBrickSlab = 1112, + MangroveFence = 1113, + PackedMud = 1114, + MudBricks = 1115, + ReinforcedDeepslate = 1116, + MudBrickStairs = 1117, + Sculk = 1118, + SculkVein = 1119, + SculkCatalyst = 1120, + SculkShrieker = 1121, + MangroveStairs = 1122, + MudBrickWall = 1123, + MangroveButton = 1124, + MangrovePressurePlate = 1125, + MangroveDoor = 1126, + MangroveTrapdoor = 1127, + MangroveFenceGate = 1128, + OakChestBoat = 1129, + SpruceChestBoat = 1130, + BirchChestBoat = 1131, + JungleChestBoat = 1132, + AcaciaChestBoat = 1133, + DarkOakChestBoat = 1134, + MangroveBoat = 1135, + MangroveChestBoat = 1136, + MangroveSign = 1137, + TadpoleBucket = 1138, + RecoveryCompass = 1139, + AllaySpawnEgg = 1140, + FrogSpawnEgg = 1141, + TadpoleSpawnEgg = 1142, + WardenSpawnEgg = 1143, + MusicDisc5 = 1144, + DiscFragment5 = 1145, + GoatHorn = 1146, + OchreFroglight = 1147, + VerdantFroglight = 1148, + PearlescentFroglight = 1149, + Frogspawn = 1150, + EchoShard = 1151, + BambooPlanks = 1152, + BambooMosaic = 1153, + BambooBlock = 1154, + StrippedBambooBlock = 1155, + BambooSlab = 1156, + BambooMosaicSlab = 1157, + ChiseledBookshelf = 1158, + BambooFence = 1159, + BambooStairs = 1160, + BambooMosaicStairs = 1161, + BambooButton = 1162, + BambooPressurePlate = 1163, + BambooDoor = 1164, + BambooTrapdoor = 1165, + BambooFenceGate = 1166, + BambooRaft = 1167, + BambooChestRaft = 1168, + BambooSign = 1169, + OakHangingSign = 1170, + SpruceHangingSign = 1171, + BirchHangingSign = 1172, + JungleHangingSign = 1173, + AcaciaHangingSign = 1174, + DarkOakHangingSign = 1175, + MangroveHangingSign = 1176, + BambooHangingSign = 1177, + CrimsonHangingSign = 1178, + WarpedHangingSign = 1179, + CamelSpawnEgg = 1180, + EnderDragonSpawnEgg = 1181, + IronGolemSpawnEgg = 1182, + SnowGolemSpawnEgg = 1183, + WitherSpawnEgg = 1184, + PiglinHead = 1185, + CherryPlanks = 1186, + CherrySapling = 1187, + SuspiciousSand = 1188, + CherryLog = 1189, + StrippedCherryLog = 1190, + StrippedCherryWood = 1191, + CherryWood = 1192, + CherryLeaves = 1193, + Torchflower = 1194, + PinkPetals = 1195, + CherrySlab = 1196, + DecoratedPot = 1197, + CherryFence = 1198, + CherryStairs = 1199, + CherryButton = 1200, + CherryPressurePlate = 1201, + CherryDoor = 1202, + CherryTrapdoor = 1203, + CherryFenceGate = 1204, + CherryBoat = 1205, + CherryChestBoat = 1206, + CherrySign = 1207, + CherryHangingSign = 1208, + SnifferSpawnEgg = 1209, + TorchflowerSeeds = 1210, + Brush = 1211, + NetheriteUpgradeSmithingTemplate = 1212, + SentryArmorTrimSmithingTemplate = 1213, + DuneArmorTrimSmithingTemplate = 1214, + CoastArmorTrimSmithingTemplate = 1215, + WildArmorTrimSmithingTemplate = 1216, + WardArmorTrimSmithingTemplate = 1217, + EyeArmorTrimSmithingTemplate = 1218, + VexArmorTrimSmithingTemplate = 1219, + TideArmorTrimSmithingTemplate = 1220, + SnoutArmorTrimSmithingTemplate = 1221, + RibArmorTrimSmithingTemplate = 1222, + SpireArmorTrimSmithingTemplate = 1223, + ArcherPotterySherd = 1224, + PrizePotterySherd = 1225, + ArmsUpPotterySherd = 1226, + SkullPotterySherd = 1227, + SuspiciousGravel = 1228, + PitcherPlant = 1229, + SnifferEgg = 1230, + CalibratedSculkSensor = 1231, + PitcherPod = 1232, + MusicDiscRelic = 1233, + WayfinderArmorTrimSmithingTemplate = 1234, + ShaperArmorTrimSmithingTemplate = 1235, + SilenceArmorTrimSmithingTemplate = 1236, + RaiserArmorTrimSmithingTemplate = 1237, + HostArmorTrimSmithingTemplate = 1238, + AnglerPotterySherd = 1239, + BladePotterySherd = 1240, + BrewerPotterySherd = 1241, + BurnPotterySherd = 1242, + DangerPotterySherd = 1243, + ExplorerPotterySherd = 1244, + FriendPotterySherd = 1245, + HeartPotterySherd = 1246, + HeartbreakPotterySherd = 1247, + HowlPotterySherd = 1248, + MinerPotterySherd = 1249, + MournerPotterySherd = 1250, + PlentyPotterySherd = 1251, + SheafPotterySherd = 1252, + ShelterPotterySherd = 1253, + SnortPotterySherd = 1254, + TuffSlab = 1255, + TuffStairs = 1256, + TuffWall = 1257, + ChiseledTuff = 1258, + PolishedTuff = 1259, + PolishedTuffSlab = 1260, + PolishedTuffStairs = 1261, + PolishedTuffWall = 1262, + TuffBricks = 1263, + TuffBrickSlab = 1264, + TuffBrickStairs = 1265, + TuffBrickWall = 1266, + ChiseledTuffBricks = 1267, + ChiseledCopper = 1268, + ExposedChiseledCopper = 1269, + WeatheredChiseledCopper = 1270, + OxidizedChiseledCopper = 1271, + WaxedChiseledCopper = 1272, + WaxedExposedChiseledCopper = 1273, + WaxedWeatheredChiseledCopper = 1274, + WaxedOxidizedChiseledCopper = 1275, + ShortGrass = 1276, + CopperDoor = 1277, + ExposedCopperDoor = 1278, + WeatheredCopperDoor = 1279, + OxidizedCopperDoor = 1280, + WaxedCopperDoor = 1281, + WaxedExposedCopperDoor = 1282, + WaxedWeatheredCopperDoor = 1283, + WaxedOxidizedCopperDoor = 1284, + CopperTrapdoor = 1285, + ExposedCopperTrapdoor = 1286, + WeatheredCopperTrapdoor = 1287, + OxidizedCopperTrapdoor = 1288, + WaxedCopperTrapdoor = 1289, + WaxedExposedCopperTrapdoor = 1290, + WaxedWeatheredCopperTrapdoor = 1291, + WaxedOxidizedCopperTrapdoor = 1292, + Crafter = 1293, + BreezeSpawnEgg = 1294, + CopperGrate = 1295, + ExposedCopperGrate = 1296, + WeatheredCopperGrate = 1297, + OxidizedCopperGrate = 1298, + WaxedCopperGrate = 1299, + WaxedExposedCopperGrate = 1300, + WaxedWeatheredCopperGrate = 1301, + WaxedOxidizedCopperGrate = 1302, + CopperBulb = 1303, + ExposedCopperBulb = 1304, + WeatheredCopperBulb = 1305, + OxidizedCopperBulb = 1306, + WaxedCopperBulb = 1307, + WaxedExposedCopperBulb = 1308, + WaxedWeatheredCopperBulb = 1309, + WaxedOxidizedCopperBulb = 1310, + TrialSpawner = 1311, + TrialKey = 1312, } #pragma warning restore CS1591