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