diff --git a/MinecraftClient.Tests/BlockStatePropertiesTests.cs b/MinecraftClient.Tests/BlockStatePropertiesTests.cs new file mode 100644 index 00000000..a507bd16 --- /dev/null +++ b/MinecraftClient.Tests/BlockStatePropertiesTests.cs @@ -0,0 +1,43 @@ +using MinecraftClient.Mapping.BlockPalettes; + +namespace MinecraftClient.Tests; + +public sealed class BlockStatePropertiesTests +{ + private readonly Palette262 _palette = new(); + + [Theory] + [InlineData(32162, "north", "true", "inactive")] + [InlineData(32168, "north", "false", "unlocking")] + [InlineData(32193, "east", "false", "ejecting")] + public void VaultStatesExposeAllProperties( + int stateId, + string facing, + string ominous, + string vaultState) + { + IReadOnlyDictionary properties = _palette.GetStateProperties(stateId); + + Assert.Equal(facing, properties["facing"]); + Assert.Equal(ominous, properties["ominous"]); + Assert.Equal(vaultState, properties["vault_state"]); + } + + [Fact] + public void PropertiesUseServerReportedStateStride() + { + IReadOnlyDictionary properties = _palette.GetStateProperties(3989); + + Assert.Equal("left", properties["type"]); + Assert.Equal("north", properties["facing"]); + Assert.Equal("true", properties["waterlogged"]); + } + + [Fact] + public void StateWithoutPropertiesReturnsEmptyMap() + { + IReadOnlyDictionary properties = _palette.GetStateProperties(1); + + Assert.Empty(properties); + } +} diff --git a/MinecraftClient/Mapping/Block.cs b/MinecraftClient/Mapping/Block.cs index ffbe499c..8f4974dc 100644 --- a/MinecraftClient/Mapping/Block.cs +++ b/MinecraftClient/Mapping/Block.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Runtime.CompilerServices; using MinecraftClient.Mapping.BlockPalettes; using MinecraftClient.Protocol.Message; @@ -78,6 +79,19 @@ namespace MinecraftClient.Mapping } } + /// + /// Exact raw block state ID. For Minecraft 1.12 and older this contains the packed block ID and metadata. + /// + public int StateId => blockIdAndMeta; + + /// + /// Get the properties associated with this block's exact state ID. + /// + public IReadOnlyDictionary GetStateProperties() + { + return Palette.GetStateProperties(StateId); + } + /// /// Material of the block /// diff --git a/MinecraftClient/Mapping/BlockPalettes/BlockPalette.cs b/MinecraftClient/Mapping/BlockPalettes/BlockPalette.cs index a3cd7986..41d24caa 100644 --- a/MinecraftClient/Mapping/BlockPalettes/BlockPalette.cs +++ b/MinecraftClient/Mapping/BlockPalettes/BlockPalette.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; namespace MinecraftClient.Mapping.BlockPalettes { @@ -23,6 +24,46 @@ namespace MinecraftClient.Mapping.BlockPalettes return Material.Air; } + /// + /// Get block-state properties for a modern block state ID. + /// + /// Raw block state ID. + /// Block-state property names and values, or an empty map when unavailable. + public IReadOnlyDictionary GetStateProperties(int stateId) + { + BlockStateDefinition[] definitions = GetStateDefinitions(); + int low = 0; + int high = definitions.Length - 1; + + while (low <= high) + { + int middle = low + ((high - low) / 2); + BlockStateDefinition definition = definitions[middle]; + if (stateId < definition.FirstStateId) + { + high = middle - 1; + } + else if (stateId > definition.LastStateId) + { + low = middle + 1; + } + else + { + return definition.GetProperties(stateId); + } + } + + return BlockStateDefinition.EmptyProperties; + } + + /// + /// Get compact block-state definitions sorted by their first state ID. + /// + protected virtual BlockStateDefinition[] GetStateDefinitions() + { + return Array.Empty(); + } + /// /// Returns TRUE if block ID uses old metadata encoding with ID and Meta inside one ushort /// Only Palette112 should override this. diff --git a/MinecraftClient/Mapping/BlockPalettes/BlockStateDefinition.cs b/MinecraftClient/Mapping/BlockPalettes/BlockStateDefinition.cs new file mode 100644 index 00000000..2578f9ae --- /dev/null +++ b/MinecraftClient/Mapping/BlockPalettes/BlockStateDefinition.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; + +namespace MinecraftClient.Mapping.BlockPalettes +{ + /// + /// Compact description of the property combinations in a contiguous block-state range. + /// + public sealed class BlockStateDefinition + { + private static readonly IReadOnlyDictionary s_emptyProperties = + new ReadOnlyDictionary(new Dictionary()); + + private readonly BlockStatePropertyDefinition[] _properties; + public int FirstStateId { get; } + public int LastStateId { get; } + public static IReadOnlyDictionary EmptyProperties => s_emptyProperties; + + public BlockStateDefinition(int firstStateId, int stateCount, BlockStatePropertyDefinition[] properties) + { + ArgumentOutOfRangeException.ThrowIfNegative(firstStateId); + ArgumentOutOfRangeException.ThrowIfNegativeOrZero(stateCount); + ArgumentNullException.ThrowIfNull(properties); + + FirstStateId = firstStateId; + LastStateId = checked(firstStateId + stateCount - 1); + _properties = properties; + } + + public IReadOnlyDictionary GetProperties(int stateId) + { + if (stateId < FirstStateId || stateId > LastStateId) + return EmptyProperties; + + int offset = stateId - FirstStateId; + Dictionary result = new(_properties.Length, StringComparer.Ordinal); + for (int i = 0; i < _properties.Length; i++) + { + BlockStatePropertyDefinition property = _properties[i]; + int valueIndex = (offset / property.Stride) % property.Values.Length; + result[property.Name] = property.Values[valueIndex]; + } + + return result; + } + } + + /// + /// Property name and its values in Minecraft's block-state iteration order. + /// + public sealed class BlockStatePropertyDefinition + { + public string Name { get; } + public string[] Values { get; } + public int Stride { get; } + + public BlockStatePropertyDefinition(string name, string[] values, int stride) + { + ArgumentException.ThrowIfNullOrEmpty(name); + ArgumentNullException.ThrowIfNull(values); + if (values.Length == 0) + throw new ArgumentException("A block-state property must define at least one value.", nameof(values)); + ArgumentOutOfRangeException.ThrowIfNegativeOrZero(stride); + + Name = name; + Values = values; + Stride = stride; + } + } +} diff --git a/MinecraftClient/Mapping/BlockPalettes/Palette262.cs b/MinecraftClient/Mapping/BlockPalettes/Palette262.cs index d39e9949..3e6ed5d2 100644 --- a/MinecraftClient/Mapping/BlockPalettes/Palette262.cs +++ b/MinecraftClient/Mapping/BlockPalettes/Palette262.cs @@ -2402,9 +2402,4469 @@ namespace MinecraftClient.Mapping.BlockPalettes materials[i] = Material.FireflyBush; } + private static readonly BlockStateDefinition[] stateDefinitions = + [ + new(8, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(12, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(22, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(29, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(31, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(33, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(35, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(37, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(39, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(41, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(43, 2, + [ + new("stage", ["0", "1"], 1) + ]), + new(45, 40, + [ + new("age", ["0", "1", "2", "3", "4"], 8), + new("hanging", ["true", "false"], 4), + new("stage", ["0", "1"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(86, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(102, 16, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(119, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(125, 4, + [ + new("dusted", ["0", "1", "2", "3"], 1) + ]), + new(136, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(139, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(142, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(145, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(148, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(151, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(154, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(157, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(160, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(165, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(168, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(171, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(174, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(177, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(180, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(183, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(186, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(189, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(192, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(195, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(198, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(201, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(204, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(207, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(210, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(213, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(216, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(219, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(222, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(225, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(228, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(231, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(234, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(237, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(240, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(243, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(246, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(249, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(252, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(280, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(308, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(336, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(364, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(392, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(420, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(448, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(476, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(504, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(532, 28, + [ + new("distance", ["1", "2", "3", "4", "5", "6", "7"], 4), + new("persistent", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(566, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(581, 1350, + [ + new("instrument", ["harp", "basedrum", "snare", "hat", "bass", "flute", "bell", "guitar", "chime", "xylophone", "iron_xylophone", "cow_bell", "didgeridoo", "bit", "banjo", "pling", "trumpet", "trumpet_exposed", "trumpet_oxidized", "trumpet_weathered", "zombie", "skeleton", "creeper", "dragon", "wither_skeleton", "piglin", "custom_head"], 50), + new("note", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"], 2), + new("powered", ["true", "false"], 1) + ]), + new(1931, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1947, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1963, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1979, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(1995, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2011, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2027, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2043, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2059, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2075, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2091, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2107, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2123, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2139, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2155, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2171, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("occupied", ["true", "false"], 2), + new("part", ["head", "foot"], 1) + ]), + new(2187, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2211, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2235, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2255, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(2257, 12, + [ + new("extended", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(2269, 24, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("short", ["true", "false"], 2) + ]), + new(2309, 12, + [ + new("type", ["normal", "sticky"], 1), + new("facing", ["north", "east", "south", "west", "up", "down"], 2) + ]), + new(2341, 2, + [ + new("unstable", ["true", "false"], 1) + ]), + new(2344, 256, + [ + new("facing", ["north", "south", "west", "east"], 64), + new("slot_0_occupied", ["true", "false"], 32), + new("slot_1_occupied", ["true", "false"], 16), + new("slot_2_occupied", ["true", "false"], 8), + new("slot_3_occupied", ["true", "false"], 4), + new("slot_4_occupied", ["true", "false"], 2), + new("slot_5_occupied", ["true", "false"], 1) + ]), + new(2600, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2664, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2728, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2792, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2856, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2920, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(2984, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3048, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3112, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3176, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3240, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3304, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("powered", ["true", "false"], 8), + new("side_chain", ["unconnected", "right", "center", "left"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3371, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(3375, 512, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(3889, 18, + [ + new("axis", ["x", "y", "z"], 6), + new("creaking_heart_state", ["uprooted", "dormant", "awake"], 2), + new("natural", ["true", "false"], 1) + ]), + new(3907, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(3987, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(4011, 1296, + [ + new("east", ["up", "side", "none"], 432), + new("north", ["up", "side", "none"], 144), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 9), + new("south", ["up", "side", "none"], 3), + new("west", ["up", "side", "none"], 1) + ]), + new(5311, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5319, 8, + [ + new("moisture", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(5327, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(5335, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5367, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5399, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5431, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5463, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5495, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5527, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5559, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5591, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5623, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5655, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(5719, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5727, 20, + [ + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south", "south_east", "south_west", "north_west", "north_east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5747, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5827, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5835, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5843, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5851, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5859, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5867, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5875, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5883, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5891, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5899, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5907, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(5971, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6035, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6099, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6163, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6227, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6291, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6355, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6419, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6483, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6547, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6611, 64, + [ + new("attached", ["true", "false"], 32), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6675, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6683, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6691, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6699, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6707, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6715, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6723, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6731, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6739, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6747, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6755, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6763, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(6771, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6795, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6797, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6861, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6863, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6865, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6867, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6869, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6871, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6873, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6875, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6877, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6879, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(6881, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6883, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6885, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(6887, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(6895, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(6919, 8, + [ + new("layers", ["1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(6929, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6947, 16, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(6963, 2, + [ + new("has_record", ["true", "false"], 1) + ]), + new(6965, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7000, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(7003, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(7007, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7012, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7017, 2, + [ + new("axis", ["x", "z"], 1) + ]), + new(7019, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7023, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(7027, 7, + [ + new("bites", ["0", "1", "2", "3", "4", "5", "6"], 1) + ]), + new(7034, 64, + [ + new("delay", ["1", "2", "3", "4"], 16), + new("facing", ["north", "south", "west", "east"], 4), + new("locked", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(7114, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7178, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7242, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7306, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7370, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7434, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7498, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7562, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7626, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7690, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(7766, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7830, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7894, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7958, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(7990, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8022, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8054, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8086, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8118, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8150, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8182, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8214, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8246, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8252, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8258, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8264, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8270, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8276, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8282, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8288, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8294, 6, + [ + new("axis", ["x", "y", "z"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8300, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8334, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8338, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(8342, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8350, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(8358, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8390, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8518, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(8646, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(8678, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8758, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8838, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(8918, 2, + [ + new("snowy", ["true", "false"], 1) + ]), + new(8923, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9003, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9009, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(9335, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9367, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9447, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(9452, 8, + [ + new("has_bottle_0", ["true", "false"], 4), + new("has_bottle_1", ["true", "false"], 2), + new("has_bottle_2", ["true", "false"], 1) + ]), + new(9461, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(9465, 3, + [ + new("level", ["1", "2", "3"], 1) + ]), + new(9469, 8, + [ + new("eye", ["true", "false"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9479, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(9481, 12, + [ + new("age", ["0", "1", "2"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(9493, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9575, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9583, 16, + [ + new("attached", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(9599, 128, + [ + new("attached", ["true", "false"], 64), + new("disarmed", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("powered", ["true", "false"], 4), + new("south", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(9728, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9808, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9888, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(9968, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(9981, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(10305, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(10659, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(10667, 8, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7"], 1) + ]), + new(10675, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10699, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10723, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10747, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10771, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10795, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10819, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10843, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10867, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10891, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10915, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10947, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10955, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(10987, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(10995, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11027, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11035, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11067, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11075, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11107, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11115, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11147, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11155, 32, + [ + new("powered", ["true", "false"], 16), + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11187, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11195, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11199, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11203, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(11207, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(11231, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11247, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11263, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("mode", ["compare", "subtract"], 2), + new("powered", ["true", "false"], 1) + ]), + new(11279, 32, + [ + new("inverted", ["true", "false"], 16), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(11313, 10, + [ + new("enabled", ["true", "false"], 5), + new("facing", ["down", "north", "south", "west", "east"], 1) + ]), + new(11325, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(11328, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11408, 24, + [ + new("powered", ["true", "false"], 12), + new("shape", ["north_south", "east_west", "ascending_east", "ascending_west", "ascending_north", "ascending_south"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(11432, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(11460, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11492, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11524, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11556, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11588, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11620, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11652, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11684, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11716, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11748, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11780, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11812, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11844, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11876, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11908, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11940, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(11972, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12052, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12132, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12212, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12292, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12372, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12452, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12533, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(12535, 32, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12567, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12634, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12714, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12794, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12874, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12880, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12886, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(12893, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(12915, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12917, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12919, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12921, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12923, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12925, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(12927, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12943, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12959, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12975, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(12991, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13007, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13023, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13039, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13055, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13071, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13087, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13103, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13119, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13135, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13151, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13167, 16, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(13183, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13187, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13191, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13195, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13199, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13203, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13207, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13211, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13215, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13219, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13223, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13227, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13231, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13235, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13239, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13243, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(13250, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13330, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13336, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13342, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13348, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13354, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13360, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13366, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13372, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13378, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13384, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13390, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13396, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13402, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13408, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13414, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13420, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13426, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13432, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13438, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13444, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13450, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13456, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13462, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13468, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13474, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(13484, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13516, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13548, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13580, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13612, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13644, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13676, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13708, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13740, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(13772, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13804, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13836, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13868, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13900, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13932, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13964, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(13996, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(14028, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(14060, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14124, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14188, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14252, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14316, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14380, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14444, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14508, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14572, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14636, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14642, 64, + [ + new("down", ["true", "false"], 32), + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("up", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(14706, 6, + [ + new("age", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(14713, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14716, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(14797, 2, + [ + new("age", ["0", "1"], 1) + ]), + new(14799, 10, + [ + new("age", ["0", "1", "2", "3", "4"], 2), + new("half", ["upper", "lower"], 1) + ]), + new(14809, 2, + [ + new("half", ["upper", "lower"], 1) + ]), + new(14811, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(14817, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14829, 12, + [ + new("conditional", ["true", "false"], 6), + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14841, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(14848, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(14852, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("powered", ["true", "false"], 1) + ]), + new(14864, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14870, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14876, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14882, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14888, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14894, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14900, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14906, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14912, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14918, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14924, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14930, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14936, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14942, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14948, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14954, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14960, 6, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 1) + ]), + new(14966, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14970, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14974, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14978, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14982, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14986, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14990, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14994, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(14998, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15002, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15006, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15010, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15014, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15018, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15022, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15026, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(15062, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(15090, 12, + [ + new("eggs", ["1", "2", "3", "4"], 3), + new("hatch", ["0", "1", "2"], 1) + ]), + new(15102, 3, + [ + new("hatch", ["0", "1", "2"], 1) + ]), + new(15105, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("hydration", ["0", "1", "2", "3"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15147, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15149, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15151, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15153, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15155, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15157, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15159, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15161, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15163, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15165, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15167, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15169, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15171, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15173, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15175, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15177, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15179, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15181, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15183, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15185, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15187, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15195, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15203, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15211, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15219, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15227, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15235, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15243, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15251, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15259, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15267, 8, + [ + new("pickles", ["1", "2", "3", "4"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15276, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(15279, 12, + [ + new("age", ["0", "1"], 6), + new("leaves", ["none", "small", "large"], 2), + new("stage", ["0", "1"], 1) + ]), + new(15294, 2, + [ + new("drag", ["true", "false"], 1) + ]), + new(15296, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15376, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15456, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15536, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15616, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15696, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15776, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15856, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(15936, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16016, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16096, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16176, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16256, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16336, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16416, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16422, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16428, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16434, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16440, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16446, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16452, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16458, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16464, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16470, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16476, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16482, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16488, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(16494, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(16818, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17142, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17466, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(17790, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18114, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18438, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(18762, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19086, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19410, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(19734, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20058, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20382, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(20706, 32, + [ + new("bottom", ["true", "false"], 16), + new("distance", ["0", "1", "2", "3", "4", "5", "6", "7"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20738, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20742, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("open", ["true", "false"], 1) + ]), + new(20754, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(20762, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("lit", ["true", "false"], 1) + ]), + new(20772, 12, + [ + new("face", ["floor", "wall", "ceiling"], 4), + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20784, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("has_book", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20801, 4, + [ + new("facing", ["north", "south", "west", "east"], 1) + ]), + new(20805, 32, + [ + new("attachment", ["floor", "ceiling", "single_wall", "double_wall"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(20837, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20841, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20845, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20849, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20853, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20857, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20861, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20865, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20869, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20873, 4, + [ + new("hanging", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20877, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20909, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("lit", ["true", "false"], 4), + new("signal_fire", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(20941, 4, + [ + new("age", ["0", "1", "2", "3"], 1) + ]), + new(20945, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20948, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20951, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20954, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20962, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20965, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20968, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20971, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(20977, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(21004, 26, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 1) + ]), + new(21034, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21040, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21046, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(21048, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(21050, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(21082, 32, + [ + new("east", ["true", "false"], 16), + new("north", ["true", "false"], 8), + new("south", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(21114, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21178, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21242, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21274, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("in_wall", ["true", "false"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21306, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21386, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21466, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21490, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21514, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21578, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(21642, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21674, 32, + [ + new("rotation", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21706, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21714, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21722, 4, + [ + new("mode", ["save", "load", "corner", "data"], 1) + ]), + new(21726, 12, + [ + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 1) + ]), + new(21738, 4, + [ + new("mode", ["start", "log", "fail", "accept"], 1) + ]), + new(21743, 9, + [ + new("level", ["0", "1", "2", "3", "4", "5", "6", "7", "8"], 1) + ]), + new(21752, 16, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 1) + ]), + new(21768, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(21792, 24, + [ + new("facing", ["north", "south", "west", "east"], 6), + new("honey_level", ["0", "1", "2", "3", "4", "5"], 1) + ]), + new(21821, 5, + [ + new("charges", ["0", "1", "2", "3", "4"], 1) + ]), + new(21832, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(21912, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22236, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22246, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22252, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22332, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(22657, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22737, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(22743, 2, + [ + new("powered", ["true", "false"], 1) + ]), + new(22745, 24, + [ + new("face", ["floor", "wall", "ceiling"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("powered", ["true", "false"], 1) + ]), + new(22769, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23096, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23112, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23128, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23144, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23160, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23176, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23192, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23208, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23224, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23240, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23256, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23272, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23288, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23304, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23320, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23336, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23352, 16, + [ + new("candles", ["1", "2", "3", "4"], 4), + new("lit", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23368, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23370, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23372, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23374, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23376, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23378, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23380, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23382, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23384, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23386, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23388, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23390, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23392, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23394, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23396, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23398, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23400, 2, + [ + new("lit", ["true", "false"], 1) + ]), + new(23404, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23416, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23428, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23440, 12, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23453, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23459, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23539, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(23864, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23870, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(23950, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(24276, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24282, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24362, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(24688, 5, + [ + new("potent_sulfur_state", ["dry", "wet", "dormant", "erupting", "continuous"], 1) + ]), + new(24693, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24699, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(24779, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25104, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25110, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25190, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25515, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25521, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25601, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(25927, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(25933, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26013, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26338, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26344, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26424, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(26749, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26755, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(26835, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(27163, 96, + [ + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27259, 384, + [ + new("facing", ["north", "south", "west", "east"], 96), + new("power", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15"], 6), + new("sculk_sensor_phase", ["inactive", "active", "cooldown"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27644, 128, + [ + new("down", ["true", "false"], 64), + new("east", ["true", "false"], 32), + new("north", ["true", "false"], 16), + new("south", ["true", "false"], 8), + new("up", ["true", "false"], 4), + new("waterlogged", ["true", "false"], 2), + new("west", ["true", "false"], 1) + ]), + new(27772, 2, + [ + new("bloom", ["true", "false"], 1) + ]), + new(27774, 8, + [ + new("can_summon", ["true", "false"], 4), + new("shrieking", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27808, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27888, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(27968, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28048, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28128, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28208, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28288, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28368, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28448, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28454, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28460, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28466, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28472, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28478, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28484, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28490, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(28496, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28560, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28624, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28688, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28752, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28816, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28880, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(28944, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["upper", "lower"], 8), + new("hinge", ["left", "right"], 4), + new("open", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29008, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29072, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29136, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29200, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29264, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29328, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29392, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29456, 64, + [ + new("facing", ["north", "south", "west", "east"], 16), + new("half", ["top", "bottom"], 8), + new("open", ["true", "false"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29520, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29522, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29524, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29526, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29528, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29530, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29532, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29534, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(29536, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29540, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29544, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29548, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29552, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29556, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29560, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29564, 4, + [ + new("lit", ["true", "false"], 2), + new("powered", ["true", "false"], 1) + ]), + new(29568, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29592, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29616, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29640, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29664, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29688, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29712, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29736, 24, + [ + new("type", ["single", "left", "right"], 2), + new("facing", ["north", "south", "west", "east"], 6), + new("waterlogged", ["true", "false"], 1) + ]), + new(29760, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29792, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29824, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29856, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29888, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29920, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29952, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(29984, 32, + [ + new("copper_golem_pose", ["standing", "sitting", "running", "star"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30016, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30040, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30064, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30088, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30112, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30136, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30160, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30184, 24, + [ + new("facing", ["north", "east", "south", "west", "up", "down"], 4), + new("powered", ["true", "false"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30209, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30229, 20, + [ + new("thickness", ["tip_merge", "tip", "frustum", "middle", "base"], 4), + new("vertical_direction", ["up", "down"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30249, 52, + [ + new("age", ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25"], 2), + new("berries", ["true", "false"], 1) + ]), + new(30301, 2, + [ + new("berries", ["true", "false"], 1) + ]), + new(30307, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(30323, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("flower_amount", ["1", "2", "3", "4"], 1) + ]), + new(30339, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("segment_amount", ["1", "2", "3", "4"], 1) + ]), + new(30356, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("tilt", ["none", "unstable", "partial", "full"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30388, 8, + [ + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30396, 16, + [ + new("facing", ["north", "south", "west", "east"], 4), + new("half", ["upper", "lower"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30412, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(30416, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(30420, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30500, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30506, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(30831, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30911, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(30917, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(31242, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(31322, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(31328, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(31653, 80, + [ + new("facing", ["north", "south", "west", "east"], 20), + new("half", ["top", "bottom"], 10), + new("shape", ["straight", "inner_left", "inner_right", "outer_left", "outer_right"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(31733, 6, + [ + new("type", ["top", "bottom", "double"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(31739, 324, + [ + new("east", ["none", "low", "tall"], 108), + new("north", ["none", "low", "tall"], 36), + new("south", ["none", "low", "tall"], 12), + new("up", ["true", "false"], 6), + new("waterlogged", ["true", "false"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(32066, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(32075, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(32078, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(32081, 3, + [ + new("axis", ["x", "y", "z"], 1) + ]), + new(32086, 16, + [ + new("cracked", ["true", "false"], 8), + new("facing", ["north", "south", "west", "east"], 2), + new("waterlogged", ["true", "false"], 1) + ]), + new(32102, 48, + [ + new("crafting", ["true", "false"], 24), + new("orientation", ["down_east", "down_north", "down_south", "down_west", "up_east", "up_north", "up_south", "up_west", "west_up", "east_up", "north_up", "south_up"], 2), + new("triggered", ["true", "false"], 1) + ]), + new(32150, 12, + [ + new("ominous", ["true", "false"], 6), + new("trial_spawner_state", ["inactive", "waiting_for_players", "active", "waiting_for_reward_ejection", "ejecting_reward", "cooldown"], 1) + ]), + new(32162, 32, + [ + new("facing", ["north", "south", "west", "east"], 8), + new("ominous", ["true", "false"], 4), + new("vault_state", ["inactive", "active", "unlocking", "ejecting"], 1) + ]), + new(32194, 2, + [ + new("waterlogged", ["true", "false"], 1) + ]), + new(32197, 162, + [ + new("bottom", ["true", "false"], 81), + new("east", ["none", "low", "tall"], 27), + new("north", ["none", "low", "tall"], 9), + new("south", ["none", "low", "tall"], 3), + new("west", ["none", "low", "tall"], 1) + ]), + new(32359, 2, + [ + new("tip", ["true", "false"], 1) + ]), + ]; + protected override Dictionary GetDict() { return materials; } + + protected override BlockStateDefinition[] GetStateDefinitions() + { + return stateDefinitions; + } } } diff --git a/MinecraftClient/Mcp/MccMcpCapabilities.cs b/MinecraftClient/Mcp/MccMcpCapabilities.cs index 43b6a837..a0fd4310 100644 --- a/MinecraftClient/Mcp/MccMcpCapabilities.cs +++ b/MinecraftClient/Mcp/MccMcpCapabilities.cs @@ -1090,6 +1090,8 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities typeLabel, blockId = block.BlockId, blockMeta = block.BlockMeta, + stateId = block.StateId, + properties = block.GetStateProperties(), distance = Math.Sqrt(dx * dx + dy * dy + dz * dz) }); } @@ -1139,7 +1141,7 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities int cy = (int)Math.Floor(playerLocation.Y) - 1; int cz = (int)Math.Floor(playerLocation.Z); - List<(int x, int y, int z, string material, string typeLabel, int blockId, byte blockMeta, double distance)> found = new(); + List<(int x, int y, int z, string material, string typeLabel, int blockId, byte blockMeta, int stateId, IReadOnlyDictionary properties, double distance)> found = new(); World world = client.GetWorld(); for (int y = cy - radius; y <= cy + radius && found.Count < limit; y++) @@ -1167,6 +1169,8 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities block.GetTypeString(), block.BlockId, block.BlockMeta, + block.StateId, + block.GetStateProperties(), Math.Sqrt(dx * dx + dy * dy + dz * dz))); } } @@ -1190,6 +1194,8 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities entry.typeLabel, entry.blockId, entry.blockMeta, + entry.stateId, + entry.properties, entry.distance }) .ToArray() @@ -1853,7 +1859,9 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities z, material = block.Type.ToString(), blockId = block.BlockId, - blockMeta = block.BlockMeta + blockMeta = block.BlockMeta, + stateId = block.StateId, + properties = block.GetStateProperties() }); }); } @@ -3121,7 +3129,9 @@ public sealed class MccMcpCapabilities : IMccMcpCapabilities material = block.Type.ToString(), typeLabel = block.GetTypeString(), blockId = block.BlockId, - blockMeta = block.BlockMeta + blockMeta = block.BlockMeta, + stateId = block.StateId, + properties = block.GetStateProperties() }; } diff --git a/MinecraftClient/Scripting/MccGameCommon.cs b/MinecraftClient/Scripting/MccGameCommon.cs index ffca5beb..042d9453 100644 --- a/MinecraftClient/Scripting/MccGameCommon.cs +++ b/MinecraftClient/Scripting/MccGameCommon.cs @@ -26,6 +26,8 @@ public sealed class MccBlockStateSnapshot public required string TypeLabel { get; init; } public required int BlockId { get; init; } public required int BlockMeta { get; init; } + public required int StateId { get; init; } + public required IReadOnlyDictionary Properties { get; init; } } /// @@ -143,7 +145,9 @@ public static class MccGameCommon Material = block.Type.ToString(), TypeLabel = block.GetTypeString(), BlockId = block.BlockId, - BlockMeta = block.BlockMeta + BlockMeta = block.BlockMeta, + StateId = block.StateId, + Properties = block.GetStateProperties() }; } diff --git a/tools/gen_block_palette.py b/tools/gen_block_palette.py index 03c48eca..50e6be5e 100644 --- a/tools/gen_block_palette.py +++ b/tools/gen_block_palette.py @@ -14,6 +14,7 @@ Example: """ import json +import math import re import sys from pathlib import Path @@ -40,6 +41,54 @@ def load_known_materials() -> set[str]: return known +def get_state_property_definitions( + block_key: str, + states: list[dict], + properties: dict[str, list[str]], +) -> list[tuple[str, list[str], int]]: + """Build and verify the compact stride schema against every reported state.""" + if not properties: + return [] + + ordered_states = sorted(states, key=lambda state: state["id"]) + first_state_id = ordered_states[0]["id"] + expected_ids = list(range(first_state_id, first_state_id + len(ordered_states))) + actual_ids = [state["id"] for state in ordered_states] + if actual_ids != expected_ids: + raise ValueError(f"{block_key} has non-contiguous state IDs") + + expected_count = math.prod(len(values) for values in properties.values()) + if expected_count != len(ordered_states): + raise ValueError( + f"{block_key} has {len(ordered_states)} states but its properties describe {expected_count} combinations" + ) + + definitions = [] + for name, values in properties.items(): + stride = next( + ( + candidate + for candidate in range(1, len(ordered_states) + 1) + if all( + state.get("properties", {}).get(name) + == values[(offset // candidate) % len(values)] + for offset, state in enumerate(ordered_states) + ) + ), + None, + ) + if stride is None: + raise ValueError(f"{block_key} property {name} has no regular state stride") + definitions.append((name, values, stride)) + + return definitions + + +def csharp_string(value: str) -> str: + """Encode a Python string as a compatible C# string literal.""" + return json.dumps(value, ensure_ascii=False) + + def main(): if len(sys.argv) != 3: print(__doc__) @@ -55,14 +104,15 @@ def main(): with open(blocks_json) as f: data = json.load(f) - # Build (min_state, max_state, cs_name) for each block, sorted by min_state + # Build block ranges and compact state-property definitions, sorted by min state. block_ranges = [] for block_key, block_info in data.items(): cs_name = mc_name_to_csharp(block_key) states = block_info.get("states", []) state_ids = [s["id"] for s in states] if state_ids: - block_ranges.append((min(state_ids), max(state_ids), cs_name)) + properties = get_state_property_definitions(block_key, states, block_info.get("properties", {})) + block_ranges.append((min(state_ids), max(state_ids), cs_name, properties)) block_ranges.sort(key=lambda x: x[0]) print(f"Loaded {len(block_ranges)} blocks from {blocks_json}") @@ -71,7 +121,7 @@ def main(): print(f"State ID range: 0 - {max_state}") known_materials = load_known_materials() - missing = [cs for _, _, cs in block_ranges if known_materials and cs not in known_materials] + missing = [cs for _, _, cs, _ in block_ranges if known_materials and cs not in known_materials] if missing: print(f"\nWARNING: {len(missing)} blocks not found in Material.cs enum:") for cs_name in missing: @@ -95,24 +145,54 @@ def main(): " {", ] - for min_s, max_s, cs_name in block_ranges: + for min_s, max_s, cs_name, _ in block_ranges: lines.append(f" for (int i = {min_s}; i <= {max_s}; i++)") lines.append(f" materials[i] = Material.{cs_name};") lines += [ " }", "", + " private static readonly BlockStateDefinition[] stateDefinitions =", + " [", + ] + + property_definition_count = 0 + for min_s, max_s, _, properties in block_ranges: + if not properties: + continue + + property_definition_count += 1 + lines.append(f" new({min_s}, {max_s - min_s + 1},") + lines.append(" [") + property_items = properties + for index, (name, values, stride) in enumerate(property_items): + encoded_values = ", ".join(csharp_string(value) for value in values) + suffix = "," if index < len(property_items) - 1 else "" + lines.append(f" new({csharp_string(name)}, [{encoded_values}], {stride}){suffix}") + lines.append(" ]),") + + lines += [ + " ];", + "", " protected override Dictionary GetDict()", " {", " return materials;", " }", + "", + " protected override BlockStateDefinition[] GetStateDefinitions()", + " {", + " return stateDefinitions;", + " }", " }", "}", "", ] output_path.write_text("\n".join(lines)) - print(f"Generated {output_path} with {len(block_ranges)} blocks ({max_state + 1} total states)") + print( + f"Generated {output_path} with {len(block_ranges)} blocks, " + f"{max_state + 1} total states, and {property_definition_count} property definitions" + ) if __name__ == "__main__":