浏览代码

Improve blocks state. (#44)

* Improve block id.

* Improve blocks state.

* Improve blocks state.

* Improve blocks state.

* clean code style

* Fix name.

* Fix bit field flag.

* Fix name error.
Junyan Liu 8 年之前
父节点
当前提交
360b8ff422
共有 2 个文件被更改,包括 3467 次插入18 次删除
  1. 1233 7
      src/MineCase.Server.Interfaces/World/Block.cs
  2. 2234 11
      src/MineCase.Server.Interfaces/World/Blocks.cs

+ 1233 - 7
src/MineCase.Server.Interfaces/World/Block.cs

@@ -8,18 +8,1244 @@ namespace MineCase.Server.World
     {
         Air = 0,
         Stone = 1,
-        Grass = 2,
+        GrassBlock = 2,
         Dirt = 3,
         Cobblestone = 4,
-        Planks = 5,
+        WoodPlanks = 5,
         Sapling = 6,
         Bedrock = 7,
-        FlowingWater = 8,
-        Water = 9,
-        FlowingLava = 10,
-        Lava = 11,
+        Water = 8,
+        StationaryWater = 9,
+        Lava = 10,
+        StationaryLava = 11,
         Sand = 12,
-        Gravel = 13
+        Gravel = 13,
+        GoldOre = 14,
+        IronOre = 15,
+        CoalOre = 16,
+        Wood = 17,
+        Leaves = 18,
+        Sponge = 19,
+        Glass = 20,
+        LapisLazuliOre = 21,
+        LapisLazuliBlock = 22,
+        Dispenser = 23,
+        Sandstone = 24,
+        NoteBlock = 25,
+        Bed = 26,
+        PoweredRail = 27,
+        DetectorRail = 28,
+        StickyPiston = 29,
+        Cobweb = 30,
+        Grass = 31,
+        DeadBush = 32,
+        Piston = 33,
+        PistonHead = 34,
+        Wool = 35,
+        BlockMovedByPiston = 36,
+        Dandelion = 37,
+        Poppy = 38,
+        BrownMushroom = 39,
+        RedMushroom = 40,
+        BlockOfGold = 41,
+        BlockOfIron = 42,
+        DoubleStoneSlab = 43,
+        StoneSlab = 44,
+        Bricks = 45,
+        TNT = 46,
+        Bookshelf = 47,
+        MossStone = 48,
+        Obsidian = 49,
+        Torch = 50,
+        Fire = 51,
+        MonsterSpawner = 52,
+        OakWoodStairs = 53,
+        Chest = 54,
+        RedstoneWire = 55,
+        DiamondOre = 56,
+        BlockOfDiamond = 57,
+        CraftingTable = 58,
+        Wheat = 59,
+        Farmland = 60,
+        Furnace = 61,
+        BurningFurnace = 62,
+        StandingSign = 63,
+        OakDoor = 64,
+        Ladder = 65,
+        Rail = 66,
+        CobblestoneStairs = 67,
+        WallSign = 68,
+        Lever = 69,
+        StonePressurePlate = 70,
+        IronDoor = 71,
+        WoodenPressurePlate = 72,
+        RedstoneOre = 73,
+        GlowingRedstoneOre = 74,
+        RedstoneTorchInactive = 75,
+        RedstoneTorchActive = 76,
+        StoneButton = 77,
+        SnowLayer = 78,
+        Ice = 79,
+        Snow = 80,
+        Cactus = 81,
+        Clay = 82,
+        SugarCane = 83,
+        Jukebox = 84,
+        OakFence = 85,
+        Pumpkin = 86,
+        Netherrack = 87,
+        SoulSand = 88,
+        Glowstone = 89,
+        NetherPortal = 90,
+        JackLantern = 91,
+        Cake = 92,
+        RedstoneRepeaterInactive = 93,
+        RedstoneRepeaterActive = 94,
+        StainedGlass = 95,
+        Trapdoor = 96,
+        MonsterEgg = 97,
+        StoneBricks = 98,
+        BrownMushroomBlock = 99,
+        RedMushroomBlock = 100,
+        IronBars = 101,
+        GlassPane = 102,
+        Melon = 103,
+        PumpkinStem = 104,
+        MelonStem = 105,
+        Vines = 106,
+        FenceGate = 107,
+        BrickStairs = 108,
+        StoneBrickStairs = 109,
+        Mycelium = 110,
+        LilyPad = 111,
+        NetherBrick = 112,
+        NetherBrickFence = 113,
+        NetherBrickStairs = 114,
+        NetherWart = 115,
+        EnchantmentTable = 116,
+        BrewingStand = 117,
+        Cauldron = 118,
+        EndPortal = 119,
+        EndPortalFrame = 120,
+        EndStone = 121,
+        DragonEgg = 122,
+        RedstoneLampInactive = 123,
+        RedstoneLampActive = 124,
+        DoubleWoodenSlab = 125,
+        WoodenSlab = 126,
+        Cocoa = 127,
+        SandstoneStairs = 128,
+        EmeraldOre = 129,
+        EnderChest = 130,
+        TripwireHook = 131,
+        Tripwire = 132,
+        BlockOfEmerald = 133,
+        SpruceWoodStairs = 134,
+        BirchWoodStairs = 135,
+        JungleWoodStairs = 136,
+        CommandBlock = 137,
+        Beacon = 138,
+        CobblestoneWall = 139,
+        FlowerPot = 140,
+        Carrot = 141,
+        Potato = 142,
+        WoodenButton = 143,
+        Mobhead = 144,
+        Anvil = 145,
+        TrappedChest = 146,
+        WeightedPressurePlateLight = 147,
+        WeightedPressurePlateHeavy = 148,
+        RedstoneComparator = 149,
+        RedstoneComparatorDeprecated = 150,
+        DaylightSensor = 151,
+        BlockOfRedstone = 152,
+        NetherQuartzOre = 153,
+        Hopper = 154,
+        BlockOfQuartz = 155,
+        QuartzStairs = 156,
+        ActivatorRail = 157,
+        Dropper = 158,
+        StainedClay = 159,
+        StainedGlassPane = 160,
+        Leaves2 = 161,
+        Wood2 = 162,
+        AcaciaWoodStairs = 163,
+        DarkOakWoodStairs = 164,
+        SlimeBlock = 165,
+        Barrier = 166,
+        IronTrapdoor = 167,
+        Prismarine = 168,
+        SeaLantern = 169,
+        HayBale = 170,
+        Carpet = 171,
+        HardenedClay = 172,
+        BlockOfCoal = 173,
+        PackedIce = 174,
+        LargeFlowers = 175,
+        StandingBanner = 176,
+        WallBanner = 177,
+        InvertedDaylightSensor = 178,
+        RedSandstone = 179,
+        RedSandstoneStairs = 180,
+        DoubleRedSandstoneSlab = 181,
+        RedSandstoneSlab = 182,
+        SpruceFenceGate = 183,
+        BirchFenceGate = 184,
+        JungleFenceGate = 185,
+        DarkOakFenceGate = 186,
+        AcaciaFenceGate = 187,
+        SpruceFence = 188,
+        BirchFence = 189,
+        JungleFence = 190,
+        DarkOakFence = 191,
+        AcaciaFence = 192,
+        SpruceDoor = 193,
+        BirchDoor = 194,
+        JungleDoor = 195,
+        AcaciaDoor = 196,
+        DarkOakDoor = 197,
+        EndRod = 198,
+        ChorusPlant = 199,
+        ChorusFlower = 200,
+        PurpurBlock = 201,
+        PurpurPillar = 202,
+        PurpurStairs = 203,
+        PurpurDoubleSlab = 204,
+        PurpurSlab = 205,
+        EndStoneBricks = 206,
+        BeetrootSeeds = 207,
+        GrassPath = 208,
+        EndGateway = 209,
+        RepeatingCommandBlock = 210,
+        ChainCommandBlock = 211,
+        FrostedIce = 212,
+        MagmaBlock = 213,
+        NetherWartBlock = 214,
+        RedNetherBrick = 215,
+        BoneBlock = 216,
+        StructureVoid = 217,
+        Observer = 218,
+        WhiteShulkerBox = 219,
+        OrangeShulkerBox = 220,
+        MagentaShulkerBox = 221,
+        LightBlueShulkerBox = 222,
+        YellowShulkerBox = 223,
+        LimeShulkerBox = 224,
+        PinkShulkerBox = 225,
+        GrayShulkerBox = 226,
+        LightGrayShulkerBox = 227,
+        CyanShulkerBox = 228,
+        PurpleShulkerBox = 229,
+        BlueShulkerBox = 230,
+        BrownShulkerBox = 231,
+        GreenShulkerBox = 232,
+        RedShulkerBox = 233,
+        BlackShulkerBox = 234,
+        WhiteGlazedTerracotta = 235,
+        OrangeGlazedTerracotta = 236,
+        MagentaGlazedTerracotta = 237,
+        LightBlueGlazedTerracotta = 238,
+        YellowGlazedTerracotta = 239,
+        LimeGlazedTerracotta = 240,
+        PinkGlazedTerracotta = 241,
+        GrayGlazedTerracotta = 242,
+        LightGrayGlazedTerracotta = 243,
+        CyanGlazedTerracotta = 244,
+        PurpleGlazedTerracotta = 245,
+        BlueGlazedTerracotta = 246,
+        BrownGlazedTerracotta = 247,
+        GreenGlazedTerracotta = 248,
+        RedGlazedTerracotta = 249,
+        BlackGlazedTerracotta = 250,
+        Concrete = 251,
+        ConcretePowder = 252,
+        StructureBlock = 255
+    }
+
+    public enum WoodPlankType : uint
+    {
+        OakWoodPlanks = 0,
+        SpruceWoodPlanks = 1,
+        BirchWoodPlanks = 2,
+        JungleWoodPlanks = 3,
+        AcaciaWoodPlanks = 4,
+        DarkOakWoodPlanks = 5
+    }
+
+    public enum StoneType : uint
+    {
+        Stone = 0,
+        Granite = 1,
+        PolishedGranite = 2,
+        Diorite = 3,
+        PolishedDiorite = 4,
+        Andesite = 5,
+        PolishedAndesite = 6
+    }
+
+    public enum DirtType : uint
+    {
+        Dirt = 0,
+        CoarseDirt = 1,
+        Podzol = 2
+    }
+
+    [Flags]
+    public enum SaplingsType : uint
+    {
+        OakSapling = 0,
+        SpruceSapling = 1,
+        BirchSapling = 2,
+        JungleSapling = 3,
+        AcaciaSapling = 4,
+        DarkOakSapling = 5,
+
+        // 0x8 bit field : Set if sapling is ready to grow into a tree
+        ReadyForTreeFlag = 0x8
+    }
+
+    /// <summary>
+    /// Attributes of water and lava.
+    ///
+    /// If FallingFlag is set, the lower bits are essentially ignored,
+    /// since this block is then at its highest fluid level.
+    /// Level1 is the highest fluid level(not necessarily filling the block -
+    /// this depends on the neighboring fluid blocks above each upper corner of the block)
+    /// </summary>
+    [Flags]
+    public enum FluidType : uint
+    {
+        Level1 = 0,
+        Level2 = 1,
+        Level3 = 2,
+        Level4 = 3,
+        Level5 = 4,
+        Level6 = 5,
+        Level7 = 6,
+        Level8 = 7,
+
+        // 0x8 bit field : If set, this liquid is "falling" and only spreads downward
+        FallingFlag = 0x8
+    }
+
+    public enum SandType : uint
+    {
+        Sand = 0,
+        RedSand = 1
+    }
+
+    [Flags]
+    public enum WoodType : uint
+    {
+        OakWoodOrAcaciaWood = 0,
+        SpruceWoodOrDarkOakWood = 1,
+        BirchWood = 2,
+        JungleWood = 3,
+
+        // 0x4 ~ 0x8 bits field specifying the orientation of the wood
+        FacingUpFlag = 0x0,
+        FacingEastFlag = 0x4,
+        FacingNorthFlag = 0x8,
+        OnlybarkFlag = 0xC
+    }
+
+    public enum LeaveType : uint
+    {
+        OakLeaves = 0,
+        SpruceLeaves = 1,
+        BirchLeaves = 2,
+        JungleLeaves = 3,
+        OakLeavesNoDecay = 4,
+        SpruceLeavesNoDecay = 5,
+        BirchLeavesNoDecay = 6,
+        JungleLeavesNoDecay = 7,
+        OakLeavesCheckDecay = 8,
+        SpruceLeavesCheckDecay = 9,
+        BirchLeavesCheckDecay = 10,
+        JungleLeavesCheckDecay = 11,
+        OakLeavesNoDecayAndCheckDecay = 12,
+        SpruceLeavesNoDecayAndCheckDecay = 13,
+        BirchLeavesNoDecayAndCheckDecay = 14,
+        JungleLeavesNoDecayAndCheckDecay = 15
+    }
+
+    /// <summary>
+    /// Specifies the color of the wool, stained terracotta, stained glass and carpet.
+    /// </summary>
+    public enum ColorType : uint
+    {
+        White = 0,
+        Orange = 1,
+        Magenta = 2,
+        LightBlue = 3,
+        Yellow = 4,
+        Lime = 5,
+        Pink = 6,
+        Gray = 7,
+        LightGray = 8,
+        Cyan = 9,
+        Purple = 10,
+        Blue = 11,
+        Brown = 12,
+        Green = 13,
+        Red = 14,
+        Black = 15
+    }
+
+    public enum TorchesType : uint
+    {
+        FacingEast = 1,
+        FacingWest = 2,
+        FacingSouth = 3,
+        FacingNorth = 4,
+        FacingUp = 5
+    }
+
+    public enum DoubleStoneSlabType : uint
+    {
+        DoubleStoneSlab = 0,
+        DoubleSandstoneSlab = 1,
+        DoubleWoodenSlab = 2,
+        DoubleCobblestoneSlab = 3,
+        DoubleBricksSlab = 4,
+        DoubleStoneBrickSlab = 5,
+        DoubleNetherBrickSlab = 6,
+        DoubleQuartzSlab = 7,
+        SmoothDoubleStoneSlab = 8,
+        SmoothDoubleSandstoneSlab = 9,
+        TileDoubleQuartzSlab = 10
+    }
+
+    public enum StoneSlabType : uint
+    {
+        StoneSlab = 0,
+        SandstoneSlab = 1,
+        WoodenSlab = 2,
+        CobblestoneSlab = 3,
+        BricksSlab = 4,
+        StoneBrickSlab = 5,
+        NetherBrickSlab = 6,
+        QuartzSlab = 7,
+        UpperStoneSlab = 8,
+        UpperSandstoneSlab = 9,
+        UpperWoodenSlab = 10,
+        UpperCobblestoneSlab = 11,
+        UpperBricksSlab = 12,
+        UpperStoneBrickSlab = 13,
+        UpperNetherBrickSlab = 14,
+        UpperQuartzSlab = 15
+    }
+
+    public enum DoubleWoodenSlabType : uint
+    {
+        DoubleOak = 0,
+        DoubleSpruce = 1,
+        DoubleBirch = 2,
+        DoubleJungle = 3,
+        DoubleAcacia = 4,
+        DoubleDarkOak = 5
+    }
+
+    public enum WoodenSlabType : uint
+    {
+        Oak = 0,
+        Spruce = 1,
+        Birch = 2,
+        Jungle = 3,
+        Acacia = 4,
+        DarkOak = 5,
+        UpperOak = 8,
+        UpperSpruce = 9,
+        UpperBirch = 10,
+        UpperJungle = 11,
+        UpperAcacia = 12,
+        UpperDarkOak = 13
+    }
+
+    public enum FireType : uint
+    {
+        Placed = 0x0,
+        Eternal = 0xF
+    }
+
+    public enum SandstoneType : uint
+    {
+        Sandstone = 0,
+        ChiseledSandstone = 1,
+        SmoothSandstone = 2
+    }
+
+    public enum RedSandstoneType : uint
+    {
+        RedSandstone = 0,
+        ChiseledRedSandstone = 1,
+        SmoothRedSandstone = 2
+    }
+
+    [Flags]
+    public enum BedType : uint
+    {
+        HeadFacingSouth = 0,
+        HeadFacingWest = 1,
+        HeadFacingNorth = 2,
+        HeadFacingEast = 3,
+
+        // 0x4 bit field : When 0, the bed is empty, otherwise, the bed is occupied
+        OccupiedFlag = 0x4,
+
+        // 0x8 bit field : When 0, the foot of the bed, otherwise, the head of the bed
+        HeadFlag = 0x8
+    }
+
+    public enum GrassType : uint
+    {
+        Shrub = 0,
+        TallGrass = 1,
+        Fern = 2
+    }
+
+    public enum FlowerType : uint
+    {
+        Poppy = 0,
+        BlueOrchid = 1,
+        Allium = 2,
+        AzureBluet = 3,
+        RedTulip = 4,
+        OrangeTulip = 5,
+        WhiteTulip = 6,
+        PinkTulip = 7,
+        OxeyeDaisy = 8
+    }
+
+    [Flags]
+    public enum LargeFlowerType : uint
+    {
+        Sunflower = 0,
+        Lilac = 1,
+        DoubleTallgrass = 2,
+        LargeFern = 3,
+        RoseBush = 4,
+        Peony = 5,
+
+        // 0x8 bit field : Top Half of any Large Plant; low three bits 0x7 are derived from the block below
+        TopHalfFlag = 0x8
+    }
+
+    [Flags]
+    public enum PistionType : uint
+    {
+        Down = 0,
+        Up = 1,
+        North = 2,
+        South = 3,
+        West = 4,
+        East = 5,
+
+        // 0x8 bit field : Determines whether the piston is pushed out or not. 1 for pushed out, 0 for retracted
+        PushedOutFlag = 0x8
+    }
+
+    [Flags]
+    public enum PistionExType : uint
+    {
+        Down = 0,
+        Up = 1,
+        North = 2,
+        South = 3,
+        West = 4,
+        East = 5,
+
+        // 0x8 bit field : Determines whether the head is sticky or not(note that the Piston Body actually
+        // has completely different block types for Sticky and Regular). 1 is sticky, 0 is regular
+        StickyFlag = 0x8
+    }
+
+    [Flags]
+    public enum StairsType : uint
+    {
+        East = 0,
+        West = 1,
+        South = 2,
+        North = 3,
+
+        // 0x4 bit field : Set if stairs are upside-down
+        UpsideDownFlag = 0x4
+    }
+
+    /// <summary>
+    /// Specifies the redstone dust's current redstone power level.
+    /// </summary>
+    public enum RedstoneWireType : uint
+    {
+        Level1 = 0,
+        Level2 = 1,
+        Level3 = 2,
+        Level4 = 3,
+        Level5 = 4,
+        Level6 = 5,
+        Level7 = 6,
+        Level8 = 7,
+        Level9 = 8,
+        Level10 = 9,
+        Level11 = 10,
+        Level12 = 11,
+        Level13 = 12,
+        Level14 = 13,
+        Level15 = 14,
+        Level16 = 15,
+    }
+
+    /// <summary>
+    /// Represents the daylight sensor's current redstone power level.
+    /// </summary>
+    public enum DaylightSensorType : uint
+    {
+        Level1 = 0,
+        Level2 = 1,
+        Level3 = 2,
+        Level4 = 3,
+        Level5 = 4,
+        Level6 = 5,
+        Level7 = 6,
+        Level8 = 7,
+        Level9 = 8,
+        Level10 = 9,
+        Level11 = 10,
+        Level12 = 11,
+        Level13 = 12,
+        Level14 = 13,
+        Level15 = 14,
+        Level16 = 15,
+    }
+
+    /// <summary>
+    /// Crops grow from 0x0 to 0x7. Carrots, beetroot and potatoes appear to have 4 stages,
+    /// but actually grow identically to wheat, merely using the same texture for multiple stages.
+    /// </summary>
+    public enum CropsType : uint
+    {
+        GrowStage1 = 0,
+        GrowStage2 = 1,
+        GrowStage3 = 2,
+        GrowStage4 = 3,
+        GrowStage5 = 4,
+        GrowStage6 = 5,
+        GrowStage7 = 6,
+        GrowStage8 = 7,
+    }
+
+    public enum FarmlandType : uint
+    {
+        DryLand = 0,
+        WetnessLevel1 = 1,
+        WetnessLevel2 = 2,
+        WetnessLevel3 = 3,
+        WetnessLevel4 = 4,
+        WetnessLevel5 = 5,
+        WetnessLevel6 = 6,
+        WetnessLevel7 = 7,
+    }
+
+    public enum StandingBannerType : uint
+    {
+        South = 0,
+        SouthToSouthwest = 1,
+        Southwest = 2,
+        WestToSouthwest = 3,
+        West = 4,
+        WestToNorthwest = 5,
+        Northwest = 6,
+        NorthToNorthwest = 7,
+        North = 8,
+        NorthToNortheast = 9,
+        Northeast = 10,
+        EastToNortheast = 11,
+        East = 12,
+        EastToSoutheast = 13,
+        Southeast = 14,
+        SouthToSoutheast = 15
+    }
+
+    public enum WallBannerType : uint
+    {
+        North = 2,
+        South = 3,
+        West = 4,
+        East = 5
+    }
+
+    [Flags]
+    public enum DoorType : uint
+    {
+        NorthwestCorner = 0,
+        NortheastCorner = 1,
+        SoutheastCorner = 2,
+        SouthwestCorner = 3,
+
+        // 0x4 bit field : If set, the door has swung counterclockwise around its hinge
+        HasSwungCounterclockwiseFlag = 0x4,
+
+        // 0x8 bit field : If set, this is the top half of a door (else the bottom half of the door)
+        TopHalfOfTheDoorFlag = 0x8
+    }
+
+    public enum RailType : uint
+    {
+        StraightRailConnectNS = 0,
+        StraightRailConnectEW = 1,
+        SlopedRailAscendEast = 2,
+        SlopedRailAscendWest = 3,
+        SlopedRailAscendNorth = 4,
+        SlopedRailAscendSouth = 5,
+        CurvedRailConnectSE = 6,
+        CurvedRailConnectSW = 7,
+        CurvedRailConnectNW = 8,
+        CurvedRailConnectNE = 9
+    }
+
+    /// <summary>
+    /// For Activator Rails, Detector Rails, and Powered Rails
+    /// </summary>
+    public enum RailExType : uint
+    {
+        FlatTrackGoingNS = 0,
+        FlatTrackGoingWE = 1,
+        SlopedTrackAscendEast = 2,
+        SlopedTrackAscendWest = 3,
+        SlopedTrackAscendNorth = 4,
+        SlopedTrackAscendSouth = 5,
+    }
+
+    /// <summary>
+    /// For Ladders, Furnaces, Chests, Trapped Chests
+    /// </summary>
+    public enum FacingDirectionType : uint
+    {
+        FacingNorth = 2,
+        FacingSouth = 3,
+        FacingWest = 4,
+        FacingEast = 5,
+    }
+
+    public enum StandingSignType : uint
+    {
+        South = 0,
+        SouthToSouthwest = 1,
+        Southwest = 2,
+        WestToSouthwest = 3,
+        West = 4,
+        WestToNorthwest = 5,
+        Northwest = 6,
+        NorthToNorthwest = 7,
+        North = 8,
+        NorthToNortheast = 9,
+        Northeast = 10,
+        EastToNortheast = 11,
+        East = 12,
+        EastToSoutheast = 13,
+        Southeast = 14,
+        SouthToSoutheast = 15
+    }
+
+    public enum WallSignType : uint
+    {
+        North = 2,
+        South = 3,
+        West = 4,
+        East = 5
+    }
+
+    /// <summary>
+    /// 0x1 ~ 0x4 bits specifying which direction the dispenser is facing
+    /// </summary>
+    [Flags]
+    public enum DispenserType : uint
+    {
+        FacingDown = 0,
+        FacingUp = 1,
+        FacingNorth = 2,
+        FacingSouth = 3,
+        FacingWest = 4,
+        FacingEast = 5,
+
+        // 0x8 bit field : If set, the dispenser is activated
+        ActivatedFlag = 0x8
+    }
+
+    /// <summary>
+    /// 0x1 ~ 0x4 bits specifying which direction the dropper is facing
+    /// </summary>
+    [Flags]
+    public enum DropperType : uint
+    {
+        FacingDown = 0,
+        FacingUp = 1,
+        FacingNorth = 2,
+        FacingSouth = 3,
+        FacingWest = 4,
+        FacingEast = 5,
+
+        // 0x8 bit field : If set, the dropper is activated
+        ActivatedFlag = 0x8
+    }
+
+    [Flags]
+    public enum HopperType : uint
+    {
+        FacingDown = 0,
+        FacingNorth = 2,
+        FacingSouth = 3,
+        FacingWest = 4,
+        FacingEast = 5,
+
+        // 0x8 bit field : Set if activated/disabled
+        ActivatedFlag = 0x8
+    }
+
+    [Flags]
+    public enum LeverType : uint
+    {
+        BottomPointsEastWhenOff = 0,
+        SideFacingEast = 1,
+        SideFacingWest = 2,
+        SideFacingSouth = 3,
+        SideFacingNorth = 4,
+        TopPointsSouthWhenOff = 5,
+        TopPointsEastWhenOff = 6,
+        BottomPointsSouthWhenOff = 7,
+
+        // 0x8 bit field : If set, the lever is active
+        ActivatedFlag = 0x8
+    }
+
+    public enum PressurePlatesType : uint
+    {
+        None = 0,
+        Active = 1
+    }
+
+    /// <summary>
+    /// Represents the weighted pressure plate's current redstone power level.
+    /// </summary>
+    public enum WeightedPressurePlateType : uint
+    {
+        Level1 = 0,
+        Level2 = 1,
+        Level3 = 2,
+        Level4 = 3,
+        Level5 = 4,
+        Level6 = 5,
+        Level7 = 6,
+        Level8 = 7,
+        Level9 = 8,
+        Level10 = 9,
+        Level11 = 10,
+        Level12 = 11,
+        Level13 = 12,
+        Level14 = 13,
+        Level15 = 14,
+        Level16 = 15,
+    }
+
+    [Flags]
+    public enum ButtonType : uint
+    {
+        BottomFacingDown = 0,
+        SideFacingEast = 1,
+        SideFacingWest = 2,
+        SideFacingSouth = 3,
+        SideFacingNorth = 4,
+        TopFacingUp = 5,
+
+        // 0x8 bit field : If set, the button is currently active
+        ActivatedFlag = 0x8
+    }
+
+    public enum SnowType : uint
+    {
+        OneLayer = 0,
+        TwoLayers = 1,
+        ThreeLayers = 2,
+        FourLayers = 3,
+        FiveLayers = 4,
+        SixLayers = 5,
+        SevenLayers = 6,
+        EightLayers = 7
+    }
+
+    public enum CactusType : uint
+    {
+        FreshlyPlantedCactus = 0,
+        Interval1 = 1,
+        Interval2 = 2,
+        Interval3 = 3,
+        Interval4 = 4,
+        Interval5 = 5,
+        Interval6 = 6,
+        Interval7 = 7,
+        Interval8 = 8,
+        Interval9 = 9,
+        Interval10 = 10,
+        Interval11 = 11,
+        Interval12 = 12,
+        Interval13 = 13,
+        Interval14 = 14,
+        Interval15 = 15
+    }
+
+    public enum SugarCaneType : uint
+    {
+        FreshlyPlantedSugarCane = 0,
+        Interval1 = 1,
+        Interval2 = 2,
+        Interval3 = 3,
+        Interval4 = 4,
+        Interval5 = 5,
+        Interval6 = 6,
+        Interval7 = 7,
+        Interval8 = 8,
+        Interval9 = 9,
+        Interval10 = 10,
+        Interval11 = 11,
+        Interval12 = 12,
+        Interval13 = 13,
+        Interval14 = 14,
+        Interval15 = 15
+    }
+
+    public enum JuckboxType : uint
+    {
+        NoDiscInserted = 0,
+        ContainsADisc = 1
+    }
+
+    public enum PumpkinType : uint
+    {
+        FacingSouth = 0,
+        FacingWest = 1,
+        FacingNorth = 2,
+        FacingEast = 3,
+        WithoutFace = 4
+    }
+
+    public enum JackLanternType : uint
+    {
+        FacingSouth = 0,
+        FacingWest = 1,
+        FacingNorth = 2,
+        FacingEast = 3,
+        WithoutFace = 4
+    }
+
+    public enum CakeType : uint
+    {
+        Eat0Pieces = 0,
+        Eat1Piece = 1,
+        Eat2Pieces = 2,
+        Eat3Pieces = 3,
+        Eat4Pieces = 4,
+        Eat5Pieces = 5,
+        Eat6Pieces = 6,
+    }
+
+    [Flags]
+    public enum RedstoneRepeaterType : uint
+    {
+        FacingNorth = 0,
+        FacingEast = 1,
+        FacingSouth = 2,
+        FacingWest = 3,
+
+        // 0x4 ~ 0x8 bit field specifying the redstone repeater's delay
+        RedstoneTick1Flag = 0x0,
+        RedstoneTick2Flag = 0x4,
+        RedstoneTick3Flag = 0x8,
+        RedstoneTick4Flag = 0xC
+    }
+
+    [Flags]
+    public enum RedstoneComparatorType : uint
+    {
+        FacingNorth = 0,
+        FacingEast = 1,
+        FacingSouth = 2,
+        FacingWest = 3,
+
+        // 0x4 bit field Set if in subtraction mode (front torch up and powered)
+        SubtractionModeFlag = 0x4,
+
+        // 0x8 bit field Set if powered (at any power level)
+        PoweredFlag = 0x8
+    }
+
+    [Flags]
+    public enum TrapdoorType : uint
+    {
+        SouthSide = 0,
+        NorthSide = 1,
+        EastSide = 2,
+        WestSide = 3,
+
+        // 0x4 bit field : If set, the trapdoor is open
+        OpenFlag = 0x4,
+
+        // 0x8 bit field : If set, the trapdoor is on the top half of a block. Otherwise, it is on the bottom half
+        TopHalfFlag = 0x8
+    }
+
+    public enum MonsterEggType : uint
+    {
+        Stone = 0,
+        Cobblestone = 1,
+        StoneBrick = 2,
+        MossyStoneBrick = 3,
+        CrackedStoneBrick = 4,
+        ChiseledStoneBrick = 5
+    }
+
+    public enum StoneBrickType : uint
+    {
+        StoneBrick = 0,
+        MossyStoneBrick = 1,
+        CrackedStoneBrick = 2,
+        ChiseledStoneBrick = 3
+    }
+
+    public enum PrismarineType : uint
+    {
+        Prismarine = 0,
+        PrismarineBricks = 1,
+        DarkPrismarine = 2
+    }
+
+    public enum SpongeType : uint
+    {
+        Sponge = 0,
+        WetSponge = 1
+    }
+
+    public enum MushroomBlockType : uint
+    {
+        PoresOnAllSides = 0,
+        CapTextureOnTopWestNorth = 1,
+        CapTextureOnTopNorth = 2,
+        CapTextureOnTopNorthEast = 3,
+        CapTextureOnTopWest = 4,
+        CapTextureOnTop = 5,
+        CapTextureOnTopEast = 6,
+        CapTextureOnTopSouthWest = 7,
+        CapTextureOnTopSouth = 8,
+        CapTextureOnTopEastSouth = 9,
+        StemTextureOnAllFourSidesPoresOnTopBottom = 10,
+        CapTextureOnAllSixSides = 11,
+        StemTextureOnAllSixSides = 12
+    }
+
+    public enum PumpkinMelonStemType : uint
+    {
+        FreshlyPlantedStem = 0,
+        FirstStageOfGrowth = 1,
+        SecondStageOfGrowth = 2,
+        ThirdStageOfGrowth = 3,
+        FourthStageOfGrowth = 4,
+        FifthStageOfGrowth = 5,
+        SixthStageOfGrowth = 6,
+        SeventhStageOfGrowth = 7
+    }
+
+    /// <summary>
+    /// Determines the face against which the vine is anchored.
+    /// </summary>
+    public enum VineType : uint
+    {
+        South = 1,
+        West = 2,
+        North = 4,
+        East = 8
+    }
+
+    [Flags]
+    public enum FenceGateType : uint
+    {
+        FacingSouth = 0,
+        FacingWest = 1,
+        FacingNorth = 2,
+        FacingEast = 3,
+
+        // 0x4 bit field : 0 if the gate is closed, 1 if open
+        OpenFlag = 0x4
+    }
+
+    public enum NetherWartType : uint
+    {
+        GrowthStage1 = 0,
+        GrowthStage2 = 1,
+        GrowthStage3 = 2,
+        GrowthStage4 = 3,
+    }
+
+    public enum BrewingStandType : uint
+    {
+        TheSlotPointingSast = 0x1,
+        TheSlotPointingSouthwest = 0x2,
+        TheSlotPointingNorthwest = 0x4
+    }
+
+    public enum CauldronType : uint
+    {
+        Empty = 0,
+        LittleFilled = 1,
+        ManyFilled = 2,
+        FullFilled = 3
+    }
+
+    [Flags]
+    public enum EndPortalFrameType : uint
+    {
+        South = 0,
+        West = 1,
+        North = 2,
+        East = 3,
+
+        // 0x4 bit field : 0 is an "empty" frame block, 1 is a block with an Eye of Ender inserted
+        EyeOfEnderFlag = 0x4
+    }
+
+    [Flags]
+    public enum CocoaType : uint
+    {
+        North = 0,
+        East = 1,
+        South = 2,
+        West = 3,
+
+        // 0x4 ~ 0x8 bit field specifying the stage of growth of the plant
+        FirstStageFlag = 0x0,
+        SecondStageFlag = 0x4,
+        FinalStageFlag = 0x8
+    }
+
+    [Flags]
+    public enum TripwireHookType : uint
+    {
+        FacingSouth = 0,
+        FacingWest = 1,
+        FacingNorth = 2,
+        FacingEast = 3,
+
+        // 0x4 bit field : If set, the tripwire hook is connected and ready to trip ("middle" position)
+        ConnectedFlag = 0x4,
+
+        // 0x8 bit field : If set, the tripwire hook is currently activated ("down" position)
+        ActivatedFlag = 0x8
+    }
+
+    [Flags]
+    public enum TripwireType : uint
+    {
+        None = 0,
+
+        // 0x1 bit field : Set if tripwire is activated (an entity is intersecting its collision mask)
+        ActivatedFlag = 0x1,
+
+        // 0x4 bit field : Set if tripwire is attached to a valid tripwire circuit
+        AttachedFlag = 0x4,
+
+        // 0x8 bit field : Set if tripwire is disarmed
+        DisarmedFlag = 0x8
+    }
+
+    public enum CobblestoneWallType : uint
+    {
+        CobblestoneWall = 0,
+        MossyCobblestoneWall = 1
+    }
+
+    public enum FlowerPotType : uint
+    {
+        Empty = 0,
+        Poppy = 1,
+        Dandelion = 2,
+        OakSapling = 3,
+        SpruceSapling = 4,
+        BirchSapling = 5,
+        JungleSapling = 6,
+        RedMushroom = 7,
+        BrownMushroom = 8,
+        Cactus = 9,
+        DeadBush = 10,
+        Fern = 11,
+        AcaciaSapling = 12,
+        DarkOakSapling = 13
+    }
+
+    public enum HeadForBlockType : uint
+    {
+        OnTheFloor = 1,
+        OnAWallFacingNorth = 2,
+        OnAWallFacingSouth = 3,
+        OnAWallFacingEast = 4,
+        OnAWallFacingWest = 5
+    }
+
+    public enum HeadForItemType : uint
+    {
+        SkeletonSkull = 0,
+        WitherSkeletonSkull = 1,
+        ZombieHead = 2,
+        Head = 3,
+        CreeperHead = 4,
+        DragonHead = 5
+    }
+
+    public enum BlockOfQuartzType : uint
+    {
+        BlockOfQuartz = 0,
+        ChiseledQuartzBlock = 1,
+        PillarQuartzBlockVertical = 2,
+        PillarQuartzBlockNorthSouth = 3,
+        PillarQuartzBlockEastWest = 4
+    }
+
+    public enum CoalType : uint
+    {
+        Coal = 0,
+        Charcoal = 1
+    }
+
+    public enum DyeType : uint
+    {
+        InkSac = 0,
+        RoseRed = 1,
+        CactusGreen = 2,
+        CocoaBeans = 3,
+        LapisLazuli = 4,
+        PurpleDye = 5,
+        CyanDye = 6,
+        LightGrayDye = 7,
+        GrayDye = 8,
+        PinkDye = 9,
+        LimeDye = 10,
+        DandelionYellow = 11,
+        LightBlueDye = 12,
+        MagentaDye = 13,
+        OrangeDye = 14,
+        BoneMeal = 15
+    }
+
+    public enum FishType : uint
+    {
+        RawFishOrCookedFish = 0,
+        RawSalmonOrCookedSalmon = 1,
+        Clownfish = 2,
+        Pufferfish = 3
+    }
+
+    public enum AnvilForItemType : uint
+    {
+        Anvil = 0,
+        SlightlyDamagedAnvil = 1,
+        VeryDamagedAnvil = 2
     }
 
     public struct BlockState : IEquatable<BlockState>

+ 2234 - 11
src/MineCase.Server.Interfaces/World/Blocks.cs

@@ -15,31 +15,58 @@ namespace MineCase.Server.World
             };
         }
 
-        public static BlockState Stone()
+        public static BlockState Stone(StoneType type = StoneType.Stone)
         {
             return new BlockState
             {
-                 Id = (uint)BlockId.Stone,
-                 MetaValue = 0
-                 };
+                Id = (uint)BlockId.Stone,
+                MetaValue = (uint)type
+            };
         }
 
-        public static BlockState Grass()
+        public static BlockState GrassBlock()
         {
             return new BlockState
             {
-                 Id = (uint)BlockId.Grass,
+                 Id = (uint)BlockId.GrassBlock,
                  MetaValue = 0
             };
         }
 
-        public static BlockState Dirt()
+        public static BlockState Dirt(DirtType type = DirtType.Dirt)
         {
             return new BlockState
             {
-                 Id = (uint)BlockId.Dirt,
-                 MetaValue = 0
-             };
+                Id = (uint)BlockId.Dirt,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Cobblestone()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Cobblestone,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState WoodPlanks(WoodPlankType type = WoodPlankType.OakWoodPlanks)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.WoodPlanks,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Sapling(SaplingsType type = SaplingsType.OakSapling)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Sapling,
+                MetaValue = (uint)type
+            };
         }
 
         public static BlockState Bedrock()
@@ -51,15 +78,51 @@ namespace MineCase.Server.World
             };
         }
 
-        public static BlockState Water()
+        public static BlockState Water(FluidType type = FluidType.FallingFlag)
         {
             return new BlockState
             {
                 Id = (uint)BlockId.Water,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StationaryWater(FluidType type = FluidType.FallingFlag)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StationaryWater,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Lava(FluidType type = FluidType.FallingFlag)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Lava,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StationaryLava(FluidType type = FluidType.FallingFlag)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StationaryLava,
                 MetaValue = 0
             };
         }
 
+        public static BlockState Sand(SandType type = SandType.Sand)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Sand,
+                MetaValue = (uint)type
+            };
+        }
+
         public static BlockState Gravel()
         {
             return new BlockState
@@ -68,5 +131,2165 @@ namespace MineCase.Server.World
                 MetaValue = 0
             };
         }
+
+        public static BlockState GoldOre()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.GoldOre,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState IronOre()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.IronOre,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState CoalOre()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.CoalOre,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Wood(WoodType type = WoodType.OakWoodOrAcaciaWood)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Wood,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Leaves(LeaveType type = LeaveType.OakLeaves)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Leaves,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Sponge(SpongeType type = SpongeType.Sponge)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Sponge,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Glass()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Glass,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState LapisLazuliOre()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.LapisLazuliOre,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState LapisLazuliBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.LapisLazuliBlock,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Dispenser(DispenserType type = DispenserType.FacingDown)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Dispenser,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Sandstone(SandstoneType type = SandstoneType.Sandstone)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Sandstone,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState NoteBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.NoteBlock,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Bed(BedType type = BedType.HeadFacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Bed,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState PoweredRail(RailType type = RailType.StraightRailConnectNS)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PoweredRail,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState DetectorRail(RailType type = RailType.StraightRailConnectNS)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DetectorRail,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StickyPiston(PistionType type = PistionType.Down)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StickyPiston,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Cobweb()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Cobweb,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Grass(GrassType type = GrassType.Shrub)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Grass,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState DeadBush()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DeadBush,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Piston(PistionType type = PistionType.Down)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Piston,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState PistonHead(PistionType type = PistionType.Down)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PistonHead,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Wool(WoodType type = WoodType.OakWoodOrAcaciaWood)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Wool,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState BlockMovedByPiston()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlockMovedByPiston,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Dandelion()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Dandelion,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Poppy(FlowerType type = FlowerType.Poppy)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Poppy,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState BrownMushroom()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BrownMushroom,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState RedMushroom()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedMushroom,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BlockOfGold()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlockOfGold,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BlockOfIron()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlockOfIron,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState DoubleStoneSlab(DoubleStoneSlabType type = DoubleStoneSlabType.DoubleStoneSlab)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DoubleStoneSlab,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StoneSlab(StoneSlabType type = StoneSlabType.StoneSlab)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StoneSlab,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Bricks()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Bricks,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState TNT()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.TNT,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Bookshelf()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Bookshelf,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState MossStone()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.MossStone,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Obsidian()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Obsidian,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Torch(TorchesType type = TorchesType.FacingUp)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Torch,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Fire(FireType type = FireType.Placed)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Fire,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState MonsterSpawner()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.MonsterSpawner,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState OakWoodStairs(StairsType type = StairsType.East)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.OakWoodStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Chest(FacingDirectionType type = FacingDirectionType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Chest,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState RedstoneWire(RedstoneWireType type = RedstoneWireType.Level1)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedstoneWire,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState DiamondOre()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DiamondOre,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BlockOfDiamond()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlockOfDiamond,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState CraftingTable()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.CraftingTable,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Wheat(CropsType type = CropsType.GrowStage1)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Wheat,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Farmland(FarmlandType type = FarmlandType.DryLand)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Farmland,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Furnace(FacingDirectionType type = FacingDirectionType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Furnace,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState BurningFurnace(FacingDirectionType type = FacingDirectionType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BurningFurnace,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StandingSign(StandingSignType type = StandingSignType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StandingSign,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState OakDoor(DoorType type = DoorType.NorthwestCorner)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.OakDoor,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Ladder(FacingDirectionType type = FacingDirectionType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Ladder,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Rail(RailType type = RailType.StraightRailConnectNS)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Rail,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState CobblestoneStairs(StairsType type = StairsType.East)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.CobblestoneStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState WallSign(FacingDirectionType type = FacingDirectionType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.WallSign,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Lever(LeverType type = LeverType.BottomPointsEastWhenOff)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Lever,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StonePressurePlate(PressurePlatesType type = PressurePlatesType.None)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StonePressurePlate,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState IronDoor(DoorType type = DoorType.NorthwestCorner)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.IronDoor,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState WoodenPressurePlate(PressurePlatesType type = PressurePlatesType.None)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.WoodenPressurePlate,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState RedstoneOre()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedstoneOre,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState GlowingRedstoneOre()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.GlowingRedstoneOre,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState RedstoneTorchInactive(TorchesType type = TorchesType.FacingUp)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedstoneTorchInactive,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState RedstoneTorchActive(TorchesType type = TorchesType.FacingUp)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedstoneTorchActive,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StoneButton(ButtonType type = ButtonType.BottomFacingDown)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StoneButton,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState SnowLayer(SnowType type = SnowType.OneLayer)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.SnowLayer,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Ice()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Ice,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Snow()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Snow,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Cactus(CactusType type = CactusType.FreshlyPlantedCactus)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Cactus,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Clay()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Clay,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState SugarCane(SugarCaneType type = SugarCaneType.FreshlyPlantedSugarCane)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.SugarCane,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Jukebox(JuckboxType type = JuckboxType.NoDiscInserted)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Jukebox,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState OakFence()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.OakFence,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Pumpkin(PumpkinType type = PumpkinType.FacingSouth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Pumpkin,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Netherrack()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Netherrack,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState SoulSand()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.SoulSand,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Glowstone()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Glowstone,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState NetherPortal()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.NetherPortal,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState JackLantern(JackLanternType type = JackLanternType.FacingSouth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.JackLantern,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Cake(CakeType type = CakeType.Eat0Pieces)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Cake,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState RedstoneRepeaterInactive(RedstoneRepeaterType type = RedstoneRepeaterType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedstoneRepeaterInactive,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState RedstoneRepeaterActive(RedstoneRepeaterType type = RedstoneRepeaterType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedstoneRepeaterActive,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StainedGlass(ColorType type = ColorType.White)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StainedGlass,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Trapdoor(TrapdoorType type = TrapdoorType.SouthSide)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Trapdoor,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState MonsterEgg(MonsterEggType type = MonsterEggType.Stone)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.MonsterEgg,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StoneBricks(StoneBrickType type = StoneBrickType.StoneBrick)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StoneBricks,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState BrownMushroomBlock(MushroomBlockType type = MushroomBlockType.PoresOnAllSides)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BrownMushroomBlock,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState RedMushroomBlock(MushroomBlockType type = MushroomBlockType.PoresOnAllSides)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedMushroomBlock,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState IronBars()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.IronBars,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState GlassPane()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.GlassPane,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Melon()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Melon,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PumpkinStem(PumpkinMelonStemType type = PumpkinMelonStemType.FreshlyPlantedStem)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PumpkinStem,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState MelonStem(PumpkinMelonStemType type = PumpkinMelonStemType.FreshlyPlantedStem)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.MelonStem,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Vines(VineType type = VineType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Vines,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState FenceGate(FenceGateType type = FenceGateType.FacingSouth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.FenceGate,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState BrickStairs(StairsType type = StairsType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BrickStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StoneBrickStairs(StairsType type = StairsType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StoneBrickStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Mycelium()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Mycelium,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState LilyPad()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.LilyPad,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState NetherBrick()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.NetherBrick,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState NetherBrickFence()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.NetherBrickFence,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState NetherBrickStairs(StairsType type = StairsType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.NetherBrickStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState NetherWart(NetherWartType type = NetherWartType.GrowthStage1)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.NetherWart,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState EnchantmentTable()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.EnchantmentTable,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BrewingStand(BrewingStandType type = BrewingStandType.TheSlotPointingSast)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BrewingStand,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Cauldron(CauldronType type = CauldronType.Empty)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Cauldron,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState EndPortal()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.EndPortal,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState EndPortalFrame(EndPortalFrameType type = EndPortalFrameType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.EndPortalFrame,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState EndStone()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.EndStone,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState DragonEgg()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DragonEgg,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState RedstoneLampInactive()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedstoneLampInactive,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState RedstoneLampActive()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedstoneLampActive,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState DoubleWoodenSlab(DoubleWoodenSlabType type = DoubleWoodenSlabType.DoubleOak)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DoubleWoodenSlab,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState WoodenSlab(WoodenSlabType type = WoodenSlabType.Oak)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.WoodenSlab,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Cocoa(CocoaType type = CocoaType.North)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Cocoa,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState SandstoneStairs(StairsType type = StairsType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.SandstoneStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState EmeraldOre()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.EmeraldOre,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState EnderChest(FacingDirectionType type = FacingDirectionType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.EnderChest,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState TripwireHook(TripwireHookType type = TripwireHookType.FacingSouth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.TripwireHook,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Tripwire(TripwireType type = TripwireType.None)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Tripwire,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState BlockOfEmerald()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlockOfEmerald,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState SpruceWoodStairs(StairsType type = StairsType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.SpruceWoodStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState BirchWoodStairs(StairsType type = StairsType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BirchWoodStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState JungleWoodStairs(StairsType type = StairsType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.JungleWoodStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState CommandBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.CommandBlock,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Beacon()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Beacon,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState CobblestoneWall(CobblestoneWallType type = CobblestoneWallType.CobblestoneWall)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.CobblestoneWall,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState FlowerPot(FlowerPotType type = FlowerPotType.Empty)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.FlowerPot,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Carrot(CropsType type = CropsType.GrowStage1)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Carrot,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Potato(CropsType type = CropsType.GrowStage1)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Potato,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState WoodenButton(ButtonType type = ButtonType.BottomFacingDown)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.WoodenButton,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Mobhead(HeadForItemType type = HeadForItemType.SkeletonSkull)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Mobhead,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Anvil(AnvilForItemType type = AnvilForItemType.Anvil)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Anvil,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState TrappedChest(FacingDirectionType type = FacingDirectionType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.TrappedChest,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState WeightedPressurePlateLight(WeightedPressurePlateType type = WeightedPressurePlateType.Level1)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.WeightedPressurePlateLight,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState WeightedPressurePlateHeavy(WeightedPressurePlateType type = WeightedPressurePlateType.Level1)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.WeightedPressurePlateHeavy,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState RedstoneComparator(RedstoneComparatorType type = RedstoneComparatorType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedstoneComparator,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState RedstoneComparatorDeprecated(RedstoneComparatorType type = RedstoneComparatorType.FacingNorth)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedstoneComparatorDeprecated,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState DaylightSensor()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DaylightSensor,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BlockOfRedstone()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlockOfRedstone,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState NetherQuartzOre()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.NetherQuartzOre,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Hopper(HopperType type = HopperType.FacingDown)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Hopper,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState BlockOfQuartz(BlockOfQuartzType type = BlockOfQuartzType.BlockOfQuartz)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlockOfQuartz,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState QuartzStairs(StairsType type = StairsType.East)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.QuartzStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState ActivatorRail(RailType type = RailType.StraightRailConnectNS)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.ActivatorRail,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Dropper(DropperType type = DropperType.FacingDown)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Dropper,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StainedClay(ColorType type = ColorType.Gray)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StainedClay,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StainedGlassPane(ColorType type = ColorType.White)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StainedGlassPane,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Leaves2(LeaveType type = LeaveType.OakLeaves)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Leaves2,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Wood2(WoodType type = WoodType.FacingUpFlag)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Wood2,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState AcaciaWoodStairs(StairsType type = StairsType.East)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.AcaciaWoodStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState DarkOakWoodStairs(StairsType type = StairsType.East)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DarkOakWoodStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState SlimeBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.SlimeBlock,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Barrier()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Barrier,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState IronTrapdoor(TrapdoorType type = TrapdoorType.SouthSide)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.IronTrapdoor,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState Prismarine(PrismarineType type = PrismarineType.Prismarine)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Prismarine,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState SeaLantern()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.SeaLantern,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState HayBale()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.HayBale,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Carpet(ColorType type = ColorType.White)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Carpet,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState HardenedClay()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.HardenedClay,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BlockOfCoal()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlockOfCoal,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PackedIce()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PackedIce,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState LargeFlowers(LargeFlowerType type = LargeFlowerType.Sunflower)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.LargeFlowers,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState StandingBanner(StandingBannerType type = StandingBannerType.South)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StandingBanner,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState WallBanner(WallBannerType type = WallBannerType.North)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.WallBanner,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState InvertedDaylightSensor()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.InvertedDaylightSensor,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState RedSandstone(RedSandstoneType type = RedSandstoneType.RedSandstone)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedSandstone,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState RedSandstoneStairs(StairsType type = StairsType.East)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedSandstoneStairs,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState DoubleRedSandstoneSlab(DoubleStoneSlabType type = DoubleStoneSlabType.DoubleStoneSlab)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DoubleRedSandstoneSlab,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState RedSandstoneSlab(StoneSlabType type = StoneSlabType.StoneSlab)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedSandstoneSlab,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState SpruceFenceGate()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.SpruceFenceGate,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BirchFenceGate()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BirchFenceGate,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState JungleFenceGate()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.JungleFenceGate,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState DarkOakFenceGate()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DarkOakFenceGate,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState AcaciaFenceGate()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.AcaciaFenceGate,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState SpruceFence()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.SpruceFence,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BirchFence()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BirchFence,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState JungleFence()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.JungleFence,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState DarkOakFence()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DarkOakFence,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState AcaciaFence()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.AcaciaFence,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState SpruceDoor(DoorType type = DoorType.NorthwestCorner)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.SpruceDoor,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState BirchDoor(DoorType type = DoorType.NorthwestCorner)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BirchDoor,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState JungleDoor(DoorType type = DoorType.NorthwestCorner)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.JungleDoor,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState AcaciaDoor(DoorType type = DoorType.NorthwestCorner)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.AcaciaDoor,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState DarkOakDoor(DoorType type = DoorType.NorthwestCorner)
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.DarkOakDoor,
+                MetaValue = (uint)type
+            };
+        }
+
+        public static BlockState EndRod()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.EndRod,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState ChorusPlant()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.ChorusPlant,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState ChorusFlower()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.ChorusFlower,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PurpurBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PurpurBlock,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PurpurPillar()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PurpurPillar,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PurpurStairs()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PurpurStairs,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PurpurDoubleSlab()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PurpurDoubleSlab,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PurpurSlab()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PurpurSlab,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState EndStoneBricks()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.EndStoneBricks,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BeetrootSeeds()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BeetrootSeeds,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState GrassPath()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.GrassPath,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState EndGateway()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.EndGateway,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState RepeatingCommandBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RepeatingCommandBlock,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState ChainCommandBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.ChainCommandBlock,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState FrostedIce()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.FrostedIce,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState MagmaBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.MagmaBlock,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState NetherWartBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.NetherWartBlock,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState RedNetherBrick()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedNetherBrick,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BoneBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BoneBlock,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState StructureVoid()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StructureVoid,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Observer()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Observer,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState WhiteShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.WhiteShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState OrangeShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.OrangeShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState MagentaShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.MagentaShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState LightBlueShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.LightBlueShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState YellowShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.YellowShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState LimeShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.LimeShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PinkShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PinkShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState GrayShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.GrayShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState LightGrayShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.LightGrayShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState CyanShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.CyanShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PurpleShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PurpleShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BlueShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlueShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BrownShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BrownShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState GreenShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.GreenShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState RedShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BlackShulkerBox()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlackShulkerBox,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState WhiteGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.WhiteGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState OrangeGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.OrangeGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState MagentaGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.MagentaGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState LightBlueGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.LightBlueGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState YellowGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.YellowGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState LimeGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.LimeGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PinkGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PinkGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState GrayGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.GrayGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState LightGrayGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.LightGrayGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState CyanGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.CyanGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState PurpleGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.PurpleGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BlueGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlueGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BrownGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BrownGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState GreenGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.GreenGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState RedGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.RedGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState BlackGlazedTerracotta()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.BlackGlazedTerracotta,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState Concrete()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.Concrete,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState ConcretePowder()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.ConcretePowder,
+                MetaValue = 0
+            };
+        }
+
+        public static BlockState StructureBlock()
+        {
+            return new BlockState
+            {
+                Id = (uint)BlockId.StructureBlock,
+                MetaValue = 0
+            };
+        }
     }
 }